Previous Topic

Next Topic

Book Contents

Book Index

Assembler

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

Examples