PRINT Example

The following is an example of a command list used for printing a data set.

/**********************************************************************/
/* PRINT COMMAND LIST                                                 */
/* ------------------                                                 */
/*                                                                    */
/* FUNCTION: THIS COMMAND LIST PRINTS MEMBERS OF A DATA SET TO A      */
/*           SYSTEM PRINT FILE.                                       */
/*                                                                    */
/* INPUT PARMS: DATASETNAME = FULLY QUALIFIED DATA SET NAME           */
/*              (INCLUDING MEMBER NAME) TO DISPLAY AT THE TERMINAL.   */
/*                                                                    */
/* OUTPUT: A SYSTEM PRINT FILE.                                       */
/**********************************************************************/
SIGNAL ON ERROR                              /* SIGNAL IF ERROR OCCURS*/
ARG DATASETNAME                              /* PARSE CLIST INPUT     */
IF DATASETNAME='' | PARMCNT() > 1 THEN       /* NO CLIST INPUT ?      */
  DO                                         /* NAME NOT SPECIFIED    */
    SAY 'INCORRECT SYNTAX USED.'             /* ISSUE ERROR MSG       */
    SAY 'CORRECT SYNTAX IS :  '              /* ISSUE HELP MSG        */
    SAY '      PRINT DATASET.NAME(MEMBER) '  /* ISSUE HELP MSG        */
    RC=24                                    /* SET RETURN CODE       */
  END                                        /* NAME NOT SPECIFIED    */
ELSE                                         /* CORRECT NAME/SYNTAX   */
  DO                                         /* NAME WAS SPECIFIED    */
    'TRAP DISPLAY ONLY MESSAGES *'           /* TRAP/SUPPRESS MSGS    */
    'ALLOCATE SYSOUT(A) FREE RECFM(FB) ',    /* ALLOC/CONNECT SYSTEM  */
      'LRECL(80) BLKSIZE(4000)'              /* ... PRINTER FOR USAGE */
    'WAIT FOR MESSAGES'                      /* WAIT FOR RESULTS      */
    'MSGREAD'                                /* READ A MESSAGE IN     */
    IF (MSGID()¬='CNM272I') THEN            /* IS MSG CNM272I ?      */
      DO                                     /* ¬ CNM272I MSG         */
        SAY MSGID() MSGSTR()                 /* DISPLAY MESSAGE       */
      END                                    /* ¬ CNM272I MSG         */
    ELSE                                     /* MSG IS CNM272I        */
      DO                                     /* PROCESS 1ST CNM272I   */
        DDNAMEO = MSGVAR(1)                  /* SAVE OUTPUT DDNAME    */
        'TRAP AND DISPLAY  ONLY MESSAGES *'  /* TRAP/SUPPRESS MSGS    */
        'ALLOCATE DA('DATASETNAME') SHR FREE'/* ALLOC/CONNECT FILE    */
        'WAIT FOR MESSAGES'                  /* WAIT FOR MESSAGES     */
        'MSGREAD'                            /* READ A MESSAGE IN     */
        'TRAP NO MESSAGES'                   /* DISABLE TRAP MSGS     */
        IF (MSGID()¬='CNM272I') THEN         /* IS MSG CNM272I ?      */
          DO                                 /* ¬ CNM272I MSG*/
            SAY MSGID() MSGSTR()             /* DISPLAY MESSAGE       */
          END                                /* ¬ CNM272I MSG*/
        ELSE                                 /* MSG IS  CNM272I       */
          DO                                 /* PROCESS 2ND CNM272I   */
            DDNAMEI = MSGVAR(1)              /* SAVE INPUT DDNAME     */
            ADDRESS MVS 'EXECIO 1 DISKR 'DDNAMEI /* READ 1ST LINE     */
            DO WHILE RC=0                    /* WHILE RC = 0          */
              ADDRESS MVS 'EXECIO 1 DISKW 'DDNAMEO /* WRITE LINE OUT  */
              ADDRESS MVS 'EXECIO 1 DISKR 'DDNAMEI /* READ NEXT LINE  */
            END                              /* WHILE RC = 0          */
                                             /* PUT OUT COMPLETE MSG  */
            'MESSAGE 309I PRINT CLIST IS NOW FINISHED'
          END                                /* PROCESS 2ND CNM272I   */
      END                                    /* PROCESS 1ST CNM272I   */
  END                                        /* NAME WAS SPECIFIED    */
 
RETURN                                       /* RETURN TO CALLER/EXIT */
ERROR: SAY 'ERROR OCCURRED.  RETURN CODE IS  ' RC
EXIT -1;                                 /* END COMMAND LIST FOR ERROR*/