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*/