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.