For anyone who would care to have source code for my little TESTPARM JCL aid, 
it is reproduced below.

For the code critics: I know it could be better with UNSTRING, and it would be 
trivial in PL/I or C.  But as it is, it works.  Improvements are for the young. 
 Us old-timers have only so many more clock cycles left.

John

       IDENTIFICATION DIVISION.
       PROGRAM-ID. TESTPARM.
      *****************************************************************
      *  PROGRAM NAME: TESTPARM.                                      *
      *                                                               *
      *  DESC:  Utility to examine positional parameters within the   *
      *         EXEC PARM string and set the RETURN-CODE accordingly. *
      *         Typical usage is to make the first positional value   *
      *         a symbol.  E.G. PARM='&SYM,X,Y,Z'. The program is     *
      *         useful as a JCL AID to allow steps to be made         *
      *         conditional depending on the value of a symbol.       *
      *                                                               *
      *  EXAMPLES:                                                    *
      *      (1) //S000 EXEC PGM=TESTPARM,PARM='A,B,C,D,A' will set   *
      *          RETURN-CODE to 4.                                    *
      *      (2) //S000 EXEC PGM=TESTPARM,PARM='CAT,DOG,MOOSE,CAT'    *
      *          sets RETURN-CODE to 3.                               *
      *      (3) //S000 EXEC PGM=TESTPARM,PARM='CAT,DOG,MOOSE,FISH'   *
      *          sets RETURN-CODE to 99.                              *
      *****************************************************************
       ENVIRONMENT DIVISION.
      *===============================================================*
       DATA DIVISION.
       WORKING-STORAGE SECTION.

       01  WS-VARS.
           05  I                        PIC S9(4) COMP-5.
           05  J                        PIC S9(4) COMP-5.
           05  L                        PIC S9(4) COMP-5.
       01  WS-SUBPARM-TABLE.
           05  WS-SUBPARM-CNT           PIC S9(4) COMP-5 VALUE ZERO.
           05  WS-SUBPARM               OCCURS 50 TIMES PIC X(8).

       LINKAGE SECTION.
       01  LS-PARM.
           05  LS-PARM-LEN              PIC S9(4) COMP-5.
           05  LS-PARM-STR              PIC X(100).

       PROCEDURE DIVISION USING LS-PARM.
       0000-MAIN.
           PERFORM 1000-LOAD-TABLE.
           PERFORM 2000-TABLE-LOOKUP.
           GOBACK.

       1000-LOAD-TABLE.
           IF LS-PARM-LEN > +2 THEN
              MOVE +1 TO J
              PERFORM VARYING I FROM +1 BY +1 UNTIL I > +101
                IF I > LS-PARM-LEN THEN
                   ADD +1 TO WS-SUBPARM-CNT
                   COMPUTE L = I - J
                   IF L > 0 THEN
                      MOVE LS-PARM-STR(J:L)
                        TO WS-SUBPARM(WS-SUBPARM-CNT)
                   ELSE
                      MOVE SPACES TO WS-SUBPARM(WS-SUBPARM-CNT)
                   END-IF
                   MOVE +9999 TO I
                ELSE
                   IF LS-PARM-STR(I:1) = ',' THEN
                      ADD +1 TO WS-SUBPARM-CNT
                      COMPUTE L = I - J
                      IF L > 0 THEN
                         MOVE LS-PARM-STR(J:L)
                           TO WS-SUBPARM(WS-SUBPARM-CNT)
                      ELSE
                         MOVE SPACES TO WS-SUBPARM(WS-SUBPARM-CNT)
                      END-IF
                      COMPUTE J = I + 1
                   END-IF
                END-IF
              END-PERFORM
           END-IF.

       2000-TABLE-LOOKUP.
           MOVE 99 TO RETURN-CODE.
           IF WS-SUBPARM-CNT > 1 THEN
              PERFORM VARYING I FROM +2 BY +1 UNTIL I > WS-SUBPARM-CNT
                IF WS-SUBPARM(1) = WS-SUBPARM(I) THEN
                   COMPUTE RETURN-CODE = I - 1
                   MOVE +9999 TO I
                END-IF
              END-PERFORM
           END-IF.

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: INFO IBM-MAIN

Reply via email to