PARSE

##
PARSE

            [SIC\]PARSE [/OptionName1  [Nargmin  [Nargmax]]]  ...  [/OptionNameN
        ...]

        Parse the array PRO%ARG in order to mimic the options mechanism provided
        by a standard command.

        When a procedure is executed, the array PRO%ARG is filled with the argu-
        ments passed to the procedure. If you invoke the command PARSE with some
        option names and required number of arguments, it will parse  the  argu-
        ments  to gather them by options and option arguments into the structure
        PRO%PARSE%. The command PARSE will check that the  caller  has  provided
        known  options  and  correct  number of arguments, else an error will be
        raised.

        For example, if you invoke your procedure like this:

            SIC> @ myprocedure 123 /MYOPTION "ABC"

        the PRO%ARG array will contain
            SIC_3> EXA PRO%ARG
            PRO%ARG    is a character*256 Array of dimensions 3
            123
            /MYOPTION
            ABC

        Invoking the command PARSE in your procedure e.g.
            SIC_3> PARSE /MYOPTION /OTHEROPTION

        will gather the command and the 2 option arguments like this:
            SIC_3> EXA PRO%PARSE%
            PRO%PARSE%                                    ! Structure GLOBAL
            PRO%PARSE%COMMAND                             ! Structure GLOBAL
            PRO%PARSE%COMMAND%NARG =            1         ! Integer GLOBAL RO
            PRO%PARSE%COMMAND%ARG is a character*256 Array of dimensions 1
            PRO%PARSE%MYOPTION                            ! Structure GLOBAL
            PRO%PARSE%MYOPTION%NARG =            1        ! Integer GLOBAL RO
            PRO%PARSE%MYOPTION%ARG is a character*256 Array of dimensions 1
            PRO%PARSE%OTHEROPTION                         ! Structure GLOBAL
            PRO%PARSE%OTHEROPTION%NARG =           -1     ! Integer GLOBAL RO

        Namely: the command was passed 1 argument (available in  the  associated
        ARG  array),  the  option MYOPTION was passed 1 argument, and the option
        OTHEROPTION was absent (NARG=-1). An option is present if NARG>=0.

        You can control the number of required of arguments to the  command  and
        the  options. Syntax is "/OptionName [Nargmin [Nargmax]]". If Nargmax is
        absent, it defaults to Nargmin. If Nargmin is absent, it means  no  spe-
        cific constraint. For example:

            SIC_3> PARSE 1 /MYOPTION 2 3 /OTHEROPTION

        means  that exactly 1 argument must be passed to the command (before the
        options), that at least 2 and at most 3 arguments are required for  /MY-
        OPTION, and that there is no check for /OTHEROPTION.