Example 2 (PL/I: non-DLL)

The following is an example of a PL/I program calling HFZSNAP four times, showing several of the different invocation styles.
*PROCESS COMPILE,ATTRIBUTES,AGGREGATE,MAP,LIST,ESD,NEST;
 @960HFZ:PROC OPTIONS(MAIN) REORDER;
    DCL  WKPTR              PTR ;
    DCL  WORK               CHAR(4) INIT('0001') ;
    DCL  WORK140            CHAR(140) INIT(' ');
    DCL  WORK1402           CHAR(140) INIT(' ');
    DCL  NUMWK              FIXED DEC(9) INIT(0)  ;
    DCL  NUMWK2             FIXED DEC(9) INIT(0)  ;
    DCL  PICWK              PIC'999' INIT(0);
    DCL  HFZSNAP EXTERNAL ENTRY;
 /* ON ERROR CALL PLIDUMP('  F   B  ') */
 /* ON ERROR CALL HFZSNAP(WORK,WORK140) */
    FETCH HFZSNAP;
    CALL SUBA;
 SUBA: PROCEDURE ;
    CALL SUBB;
 END SUBA;
 SUBB: PROCEDURE ;
    /* THIS WILL CALL HFZSNAP 4 TIMES THEN ABEND FOR CALL 5 */
    CALL HFZSNAP;
    DISPLAY ('ZZZ RETURNED FROM HFZSNAP TO SUBB');
    CALL HFZSNAP('0000');
    DISPLAY ('ZZZ RETURNED FROM HFZSNAP(0000) TO SUBB');
    WORK140 = 'USER TITLE DATA.';
    CALL HFZSNAP(WORK,WORK140);
    WORK = '0002';
    WORK140 = 'USER TITLE DATA.';
    WORK1402 = 'DATASETS(HFZHIST(NULLFILE))';
    CALL HFZSNAP(WORK,WORK140,WORK1402);
    PICWK = NUMWK2       ;
    PICWK = NUMWK2       ;
    PICWK = NUMWK2/NUMWK ;
 END SUBB;
 END @960HFZ;