|
The example in Figure 1 shows a portion of an assembler
language program that uses the Parameter List Interface. Figure 2 shows the JCL you might use to run the program in Figure 1.
Figure 1. ICETOOL
Parameter List Interface ExampleDEPTVIEW CSECT
...
* SET UP PARAMETER LIST AND CALL ICETOOL
LA R1,PARLST LOAD ADDRESS OF PARAMETER LIST
LINK EP=ICETOOL CALL ICETOOL
LTR R15,R15 IF ANY OPERATIONS WERE NOT SUCCESSFUL,
BNZ CKSTAT1 DETERMINE WHICH ONE FAILED
* ALL OPERATIONS WERE SUCCESSFUL
* CHECK EMPLOYEES PER DEPARTMENT AGAINST ACCEPTABLE LEVEL
CP RT2AVG1,EMAVGCK IF AVERAGE IS ACCEPTABLE,
BNH CKQUAL NO MESSAGE IS NEEDED
* ISSUE A MESSAGE SHOWING AVERAGE, MINIMUM, MAXIMUM, AND
* TOTAL NUMBER OF EMPLOYEES PER DEPARTMENT.
...
* CHECK EXPENSES PER DEPARTMENT AGAINST ACCEPTABLE LEVEL
CKQUAL CP RT2AVG2,TLAVGCK IF AVERAGE IS ACCEPTABLE,
BNH PCTCALC NO MESSAGE IS NEEDED
* ISSUE A MESSAGE SHOWING AVERAGE, MINIMUM, MAXIMUM, AND
* TOTAL EXPENSES PER DEPARTMENT.
...
* CALCULATE THE PERCENTAGE OF DEPARTMENTS OVER/UNDER EMPLOYEE LIMIT
PCTCALC MVC WORK+2(4),RT3RCDS+4 COPY NUMBER OF DEPARTMENTS
SP WORK+2(4),RT3RNG+4(4) SUBTRACT 'NUMBER WITHIN LIMITS' TO
* GET 'NUMBER OVER/UNDER LIMIT'
CP WORK+2(4),P0 IF NONE OVER/UNDER LIMIT,
BE PCTPRT PERCENTAGE IS ZERO
MP WORK+2(4),P100 MULTIPLY NUMBER OVER/UNDER BY 100
DP WORK(6),RT3RCDS+4(4) DIVIDE BY NUMBER OF DEPARTMENTS
* ISSUE A MESSAGE SHOWING THE PERCENTAGE OF DEPARTMENTS THAT ARE
* OVER/UNDER EMPLOYEE LIMIT
PCTPRT UNPK PCTVAL,WORK(2) CONVERT AVERAGE TO PRINTABLE EBCDIC
OI PCTVAL+2,X'F0' ENSURE LAST DIGIT IS PRINTABLE
...
* ONE OR MORE OPERATIONS FAILED
CKSTAT1 CLI RT1STAT,0 IF OPERATION 1 WORKED,
BNE CKSTAT2 CHECK OPERATION 2
* ISSUE MESSAGE: OPERATION 1 FAILED - CHECK TOOLMSG
...
* PARAMETER LIST
PARLST DC A(0) USE PARAMETER LIST INTERFACE
DC A(ST1A) STATEMENT AREA 1 ADDRESS
DC A(RT1A) RETURN AREA 1 ADDRESS
DC A(ST2A) STATEMENT AREA 2 ADDRESS
DC A(RT2A) RETURN AREA 2 ADDRESS
DC A(ST3A) STATEMENT AREA 3 ADDRESS
DC A(RT3A) RETURN AREA 3 ADDRESS
DC F'.*-1' END OF PARAMETER LIST* OPERATOR STATEMENT AREAS
* COPY OPERATION
ST1A DC AL2(ST1E-ST1) LENGTH OF STATEMENT AREA 1
ST1 DC CL80'* CREATE TWO COPIES OF THE DENVER SITE'
DC CL80'* DEPARTMENT RECORDS'
DC CL80'COPY FROM(IN) TO(OUT1,OUT2) USING(CTL1)'
ST1E EQU *
* STATS OPERATION
ST2A DC AL2(ST2E-ST2) LENGTH OF STATEMENT AREA 2
ST2 DC CL80'* GET STATISTICS FOR NUMBER OF EMPLOYEES'
DC CL80'* AND TRAVEL EXPENSES PER DEPARTMENT'
DC CL80'STATS FROM(OUT1) ON(15,2,PD) ON(28,8,ZD)'
ST2E EQU *
* RANGE OPERATION
ST3A DC AL2(ST3E-ST3) LENGTH OF STATEMENT AREA 3
ST3 DC CL80'* DETERMINE THE NUMBER OF DEPARTMENTS THAT ARE'
DC CL80'* WITHIN THE LIMIT FOR NUMBER OF EMPLOYEES'
DC CL80'RANGE FROM(OUT1) ON(15,2,PD) -'
DC CL80' HIGHER(10) LOWER(21)'
ST3E EQU *
* RETURN AREAS
COPY OPERATION
RT1A DC AL2(RT1E-RT1STAT) LENGTH OF RETURN AREA 1
RT1STAT DS C OPERATION STATUS
RT1E EQU *
* STATS OPERATION
RT2A DC AL2(RT2E-RT2STAT) LENGTH OF RETURN AREA 2
RT2STAT DS C OPERATION STATUS
RT2RCDS DS PL8 COUNT OF RECORDS PROCESSED
RT2MIN1 DS PL16 FIELD 1 - MINIMUM VALUE
RT2MAX1 DS PL16 FIELD 1 - MAXIMUM VALUE
RT2AVG1 DS PL16 FIELD 1 - AVERAGE VALUE
RT2TOT1 DS PL16 FIELD 1 - TOTAL VALUE
RT2MIN2 DS PL16 FIELD 2 - MINIMUM VALUE
RT2MAX2 DS PL16 FIELD 2 - MAXIMUM VALUE
RT2AVG2 DS PL16 FIELD 2 - AVERAGE VALUE
RT2TOT2 DS PL16 FIELD 2 - TOTAL VALUE
RT2E EQU *
* RANGE OPERATION
RT3A DC AL2(RT3E-RT3STAT) LENGTH OF RETURN AREA 3
RT3STAT DS C OPERATION STATUS
RT3RCDS DS PL8 COUNT OF RECORDS PROCESSED
RT3RNG DS PL8 COUNT OF VALUES IN RANGE
RT3E EQU *
* VARIABLES/CONSTANTS
WORK DS PL6 WORKING VARIABLE
P100 DC P'100' CONSTANT 100
P0 DC P'0' CONSTANT 0
EMAVGCK DC P'17' ACCEPTABLE AVERAGE EMPLOYEE COUNT
TLAVGCK DC P'5000' ACCEPTABLE AVERAGE TRAVEL EXPENSES
PCTVAL DS PL3 PERCENTAGE OF DEPARTMENTS THAT ARE
* OVER/UNDER EMPLOYEE LIMIT
...
Figure 2. JCL for Parameter
List Interface Program Example//EXAMP JOB A402,PROGRAMMER
//INVOKE EXEC PGM=DEPTVIEW,REGION=1024K
//STEPLIB DD DSN=... Link library containing DEPTVIEW
//TOOLMSG DD SYSOUT=A
//DFSMSG DD SYSOUT=A
//IN DD DSN=ALL.DEPTS,DISP=SHR
//OUT1 DD DSN=ALL.DEPTS.BACKUP1,DISP=OLD
//OUT2 DD DSN=ALL.DEPTS.BACKUP2,DISP=OLD
//CTL1CNTL DD *
* SELECT ONLY THE DENVER SITE DEPARTMENT RECORDS
INCLUDE COND=(1,12,CH,EQ,C'DENVER')
/*
|