The CTBSSM program, a sample assembler program, illustrates how to call a Control-M/Analyzer rule from a user program using the Single Startup API. This program is a member in the IOA SAMPLE library.
The program reads an input file using DD-USERIN, passes each record to Control-M/Analyzer that in turn executes the TSTCHECK rule to validate the record. As a result, the TSTCHECK rule returns TOLER (return code) that is being printed in the main cycle of the program illustrated in Figure 415.
Figure 415 Example - Assembler
USERMAIN CSECT
ENTRY USERMAIN
CNOP 0,4 PROLOG ROUTINE
USING *,13
B 80(0,15)
DC 17F'0'
DC AL1(6)
DC C'DB2CTB'
ST 13,4(0,15)
ST 15,8(0,13)
STM 14,12,12(13)
LR 13,15
*
OPEN (USEROUT,OUTPUT)
OPEN (USERIN,INPUT)
* INITIALIZATION
CALL CTBSSCL,(OPTINIT,RULE,MISSION,GRP,RULENAME)
****************************************************************
CYCLE EQU * MAIN CYCLE
GET USERIN,LINE
PUT USEROUT,LINE
* CHECK THE LINE VIA USERRULE - "TSTCHECK"
CALL CTBSSCL,(OPTCHECK,LINEL,LINEID,TOLER)
*
L R2,LINEID just to show how that it can be changed
LA R2,1(R2)
ST R2,LINEID
*
L 15,TOLER PRINT VALUE OF TOLER RETURNED FROM CTB
CVD 15,DWORD
UNPK WORD16(16),DWORD(8)
OI WORD16+15,X'F0'
MVC RCWORD,WORD16+8
PUT USEROUT,PTOLER
*
B CYCLE CONTINUE CYCLE
**************************** END OF FILE SITUATION *******************
EOFUSIN EQU *
CLOSE (USERIN)
CLOSE (USEROUT)
*
CALL CTBSSCL,(OPTKILL)
B RETOK
**********************************************************************
RETOK EQU *
SR 15,15 NORMAL EXIT.
L 13,4(0,13)
L 14,12(13,0)
LM 0,12,20(13)
MVI 12(13),X'FF'
BR 14
**********************************************************************
RETNOTOK EQU *
LA 15,8 BAD EXIT.
L 13,4(0,13)
L 14,12(13,0)
LM 0,12,20(13)
MVI 12(13),X'FF'
BR 14
*----------------------------------------------
USERIN DCB DSORG=PS,MACRF=(GM),DDNAME=USERIN,EODAD=EOFUSIN
USEROUT DCB DSORG=PS,MACRF=(PM),DDNAME=USEROUT
*******************************************************************
* FIELDS LINEL and LINE SHOULD BE DEFINED ONE AFTER ANOTHER AS BELOW !
LINEL DC H'80' length of the read line=80 for this case
LINE DS CL100 !!! THIS FIELD SHOULD BE NOT LESS THAN 100 !
*******************************************************************
LINEID DC F'1'
TOLER DS F
*
OPTINIT DC CL8'INIT'
OPTCHECK DC CL8'CHECK'
OPTKILL DC CL8'KILL'
RULE DC CL8'CTBSSSM'
MISSION DC CL8' '
GRP DC CL8'TSTGROUP'
RULENAME DC CL8'TSTCHECK'
*
PTOLER DC C'TOLER = '
RCWORD DS CL8
DC CL132' '
WORD16 DS CL16
DWORD DS D
LTORG
END
The TSTCHECK rule is listed in Figure 416.
Figure 416 The TSTCHECK rule
+--------------------------------------------------------------------------+
OWNER OWNER1 GROUP MYGROUP
UPDATED 08/08/99 - 16:17:30 BY U-52
DESC
OPTIONS
===========================================================================
EXECUTE CHECK UPON C
ON DATA
ALWAYS
DO PRINT = RARG01=REPLACE(RARG01,'CARD','BARD') F C
DO PRINT = TSTCHECK: LINE=(%%RARG01) F C
DO PRINT = TSTCHECK: LINEID=(%%RARG02) F C
DO PRINT = TSTCHECK: TOLER=(%%RARG03) F C
DO SET = RARG03=RARG03+1 C
DO PRINT = TSTCHECK:+1 TOLER=(%%RARG03) F C
===========================================================================
EXECUTE UPON C
ON
======= >>>>>>>>>>>> END OF RULE DEFINITION PARAMETERS <<<<<<<<<<<<<<< =====
PLEASE FILL IN RULE DEFINITION. 13.54.17
The TSTCHECK rule receives the parameters RARG01 – RARG03 from Control-M/Analyzer.
The RARG01 parameter contains the record to be checked. The RARG02 parameter points to the LINEID (record logical sequence number). The RARG03 parameter refers to TOLER (return code). The values RARG01 and RARG03 can be changed by TSTCHECK and their updated values are passed to the USER PROGRAM. Changes in the RARG02 parameter are not returned to the USER PROGRAM.
Input for the USERMAIN Assembler program (sample user program CTBSSM) is illustrated in Figure 417.
Note: This is sample code for documentation only. Please refer to the IOA SAMPLE(CTBSSSM) for the complete source code to be used.
Figure 417 Input for the USERMAIN Assembler program
CARD 01
CARD 02
CARD 03
CARD 04
CARD 05
The output from the USERMAIN program is illustrated in Figure 418.
Figure 418 Output from the USERMAIN program
CARD 01
BARD 01
TOLER = 00000001
CARD 02
BARD 02
TOLER = 00000002
CARD 03
BARD 03
TOLER = 00000003
CARD 04
BARD 04
TOLER = 00000004
CARD 05
BARD 05
The output from the TSTCHECK rule is illustrated in Figure 419.
Figure 419 Output from USERCHECK Rule
TSTCHECK: LINE=(BARD 01
TSTCHECK: LINEID=(00000001)
TSTCHECK: TOLER=(1)
TSTCHECK:+1 TOLER=(2.000)
TSTCHECK: LINE=(BARD 02
TSTCHECK: LINEID=(00000002)
TSTCHECK: TOLER=(2.000)
TSTCHECK:+1 TOLER=(3.000)
TSTCHECK: LINE=(BARD 03
TSTCHECK: LINEID=(00000003)
TSTCHECK: TOLER=(3.000)
TSTCHECK:+1 TOLER=(4.000)
TSTCHECK: LINE=(BARD 04
TSTCHECK: LINEID=(00000004)
TSTCHECK: TOLER=(4.000)
TSTCHECK:+1 TOLER=(5.000)
TSTCHECK: LINE=(BARD 05
TSTCHECK: LINEID=(00000005)
TSTCHECK: TOLER=(5.000)
Parent Topic |