IDENT TARL ENTRY RERUN ENTRY RGET ENTRY RPUT ENTRY RSECURE ENTRY SECURE ENTRY SRERUN ENTRY TINVOKE SYSCOM B1 TITLE TARL - AUTOMATIC RECOVERY LIBRARY. *COMMENT TARL - TAF AUTOMATIC RECOVERY LIBRARY. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TARL SPACE 4,10 ***** TARL - TAF AUTOMATIC RECOVERY LIBRARY. * * A. E. SCHIPPERS. 80/06/20. * * TARL IS A LIBRARY OF INTERFACE ROUTINES FOR COBOL5, * FORTRAN4 AND FORTRAN5 USER AND SYSTEM TASKS, MAKING * RECOVERY REQUESTS TO THE TRANSACTION FACILITY. DECK * *TARL* IS PLACED ON THREE DIFFERENT LIBRARIES CALLED * *TRANC5*, *TRANF4*, AND *TRANF5*. THE COBOL *ENTER* * VERB AND THE FORTRAN *CALL* STATEMENT INTERFACE USER AND * SYSTEM TASKS TO THE TRANSACTION FACILITY. * *IF DEF,TRANC5 * NOTE THIS IS THE COBOL5 VERSION OF TARL. *ENDIF *IF DEF,TRANF4 * NOTE THIS IS THE FORTRAN4 VERSION OF TARL. *ENDIF *IF DEF,TRANF5 * NOTE THIS IS THE FORTRAN5 VERSION OF TARL. *ENDIF * * *** THE REQUESTS FOR *TAF* AUTOMATIC RECOVERY ARE AS FOLLOWS - * * TO RERUN A TRANSACTION COMMIT UNIT FOR A TERMINAL - * ENTER RERUN USING STATUS [,USERNAM]. * CALL RERUN (STATUS[,USERNAM]). * * TO RETRIEVE USER DATA FROM THE *TAF* RECOVERY FILE - * ENTER RGET USING MESSAGE, INDEX, STATUS, MESSAGE-LENGTH * [, MESSAGE-UNITS]. * CALL RGET (MESSAGE,INDEX,STATUS,MESSAGE-LENGTH * [,MESSAGE-UNITS]). * * TO PUT USER DATA ON THE TAF RECOVER FILE - * ENTER RPUT USING MESSAGE, INDEX, STATUS [,MESSAGE-LENGTH, * MESSAGE-UNITS]. * CALL RPUT (MESSAGE,INDEX,STATUS,MESSAGE-LENGTH * [,MESSAGE-UNITS]). * * TO RETREVE THE SECURE MESSAGE FROM PERMANENT STORAGE - * ENTER RSECURE USING MESSAGE, STATUS, MESSAGE-LENGTH, * MESSAGE-UNITS, FORMAT-EFFECTOR, TRANSPARENT-MODE. * CALL RSECURE (MESSAGE, STATUS, MESSAGE-LENGTH, * MESSAGE-UNITS, FORMAT-EFFECTOR, TRANSPARENT-MODE). * * TO SAVE A SECURE MESSAGE - * ENTER SECURE USING MESSAGE, STATUS [, MESSAGE-LENGTH, * MESSAGE-UNITS, FORMAT-EFFECTOR, TRANSPARENT-MODE]. * CALL SECURE (MESSAGE, STATUS, MESSAGE-LENGTH * [, MESSAGE-UNITS, FORMAT-EFFECTOR, TRANSPARENT-MODE]). * * TO ASSIGN A NEW TRANSACTION SEQUENCE NUMBER - * ENTER TINVOKE USING STATUS, NEW-SYS-ID [,OLD-SYS-ID]. * CALL TINVOKE (STATUS, NEW-SYS-ID [, OLD-SYS-ID]). * *** THE PARAMETERS FOR *TAF* AUTOMATIC RECOVERY * REQUESTS ARE DEFINED BELOW. * * FORMAT-EFFECTOR PARAMETER TO INDICATE IF * FORMAT-EFFECTORS ARE USED. * COBOL - 01 LEVEL COMPUTATIONAL-1 DATA * NAME. * FORTRAN - INTERGER. * * INDEX INDEX FOR RECOVERY RECORD. * COBOL - 01 LEVEL COMPUTATIONAL-1 DATA * NAME. * FORTRAN - INTEGER. * VALUES ARE THE SAME AS FOR *NAM*. * * MESSAGE DATA ITEM CONTAINING THE RECOVERY MESSAGE. * COBOL - 01 LEVEL ITEM. * FORTRAN - HOLLERITH. * * MESSAGE-LENGTH LENGTH OF MESSAGE IN MESSAGE-UNITS. * COBOL - 01 LEVEL COMPUTATIONAL-1 DATA * NAME. * FORTRAN - INTEGER. * * MESSAGE-UNITS APPLICATION CHARACTER TYPE. THE TYPE IS * THE SAME AS FOR *NAM*. * COBOL - 01 LEVEL COMPUTATIONAL-1 DATA * NAME. * FORTRAN - INTEGER. * * NEW-SYS-ID NEW SYSTEM IDENTIFIER. * COBOL - 01 LEVEL COMPUTATIONAL-1 DATA * NAME. * FORTRAN - INTEGER. * * OLD-SYS-ID OLD SYSTEM IDENTIFIER. * COBOL - 01 LEVEL COMPUTATIONAL-1 DATA * NAME. * FORTRAN - INTEGER. * * STATUS STATUS OF REQUEST. * COBOL - 01 LEVEL COMPUTATIONAL-1 DATA * NAME. * FORTRAN - INTEGER. * * TRANSPARENT-MODE INDICATES IF TRANSPARENT MODE WAS USED. * COBOL - 01 LEVEL COMPUTATIONAL-1 DATA * NAME. * FORTRAN - INTEGER. * THE VALUE IS THE SAME AS FOR *NAM*. * * USERNAM 1-7 CHARACTER USER NAME. * COBOL - 01 LEVEL DATA ITEM. * FORTRAN - HOLLERITH. * * COMMON DECKS CALLED. *CALL COMKFLD *CALL COMKMAC LIST X * THE FOLLOWING COMMON DECKS USE *BSS* TO ASSIGN LOCATIONS * TO SYMBOLS. THE LIBRARY INTERFACE ROUTINES DO NOT WANT * TO ALLOCATE STORAGE FOR THESE SYMBOLS SO THE CURRENT ORIGIN * COUNTER IS SAVED BY *BEGN* AND IS RESTORED AFTER THE COMMON * DECKS ARE ASSEMBLED. BEGN BSS 0 SAVE CURRENT ORIGIN ADDRESS *CALL COMKRRD ORG BEGN RESTORE ORIGIN COUNTER * STORAGE FOR RECOVERY REQUEST PARAMETERS. PARML MAX TSEPL,TRGPL,TREPL,TTIPL MAXIMUM LENGTH PARM BSS PARML BSSZ 1 TERMINATE REQUEST WITH ZERO WORD * THE FOLOWING CODE IS CONDITIONALLY PUT ON THE * COMPILE FILE AT MODIFICATION TIME. THIS CODE * ALSO SETS VALUES FOR CONDITIONAL ASSEMBLY OF SOME * CODE LATER IN THIS DECK. .1 SET 0 *IF DEF,TRANC5 .1 SET .1+1 .2 SET 0 COBOL5 VERSION *ENDIF *IF DEF,TRANF4 .1 SET .1+1 .2 SET 1 FORTRAN4 VERSION *ENDIF *IF DEF,TRANF5 .1 SET .1+1 .2 SET 2 FORTRAN5 VERSION *ENDIF .A IFNE .1,1 * ONE AND ONLY ONE OF THE TLIBXX LIBRARIES MUST BE * DEFINED AT MODIFICATION TIME. ERR MODIFICATION ERRORS .A ENDIF RERUN SPACE 4,15 ** RERUN - RERUN TRANSACTION. * * ENTRY ENTER RERUN USING STATUS. * * CALL RERUN(STATUS). * * (A1) = FWA OF PARAMETER LIST. * * EXIT REQUEST IS PROCESSED. * (A0) = (A0) ON ENTRY. * * USES X - 1. * * CALLS IRR. VFD 42/0LRERUN,18/RERUN RERUN SUBR ENTRY/EXIT SX1 RFRE RERUN REQUEST RJ IRR ISSUE RECOVERY REQUEST EQ RERUNX RETURN RGET SPACE 4,15 ** RGET - GET DATA FROM RECOVERY FILE. * * ENTRY ENTER RGET USING MESSAGE, INDEX, STATUS, * MESSAGE-LENGTH [, MESSAGE-UNITS]. * * CALL RGET(MESSAGE,INDEX,STATUS,MESSAGE-LENGTH * [,MESSAGE-UNITS]). * * (A1) = FWA OF PARAMETER LIST. * * EXIT REQUEST IS PROCESSED. * (A0) = (A0) ON ENTRY. * * USES X - 1. * * CALLS IRR. RGET SUBR ENTRY/EXIT SX1 RFRG RGET REQUEST RJ IRR ISSUE RECOVERY REQUEST EQ RGETX RETURN RPUT SPACE 4,20 ** RPUT - PUT DATA ON RECOVERY FILE. * * ENTRY ENTER RPUT USING MESSAGE, INDEX, STATUS * [,MESSAGE-LENGTH, MESSAGE-UNITS]. * * CALL RPUT(MESSAGE,INDEX,STATUS,MESSAGE-LENGTH * [,MESSAGE-UNITS]). * * (A1) = FWA OF PARAMETER LIST. * * EXIT REQUEST IS PROCESSED. * (A0) = (A0) ON ENTRY. * TO *PAE* IF NOT ENOUGH PARAMETERS. * * CALLS IRR. * * USES A - 1, 2, 6. * X - 1, 2, 3, 4, 6. * B - 1, 2, 3, 4. * * CALLS IRR. .1 SET 0 RPUT SUBR ENTRY/EXIT SB1 1 SA2 A1 GET ADDRESS OF MESSAGE ZR X2,RPT3 IF END OF PARAMETER LIST .B IFEQ .2,0 IF COBOL5 VERSION * PROCESS PARAMETER LIST FOR COBOL5. .1 SET .1+1 MX3 -18 GET LENGTH OF MESSAGE BX4 X2 LX4 17-53 BX6 -X3*X4 SA6 RPTA SAVE LENGTH OF MESSAGE .B ENDIF .C IFEQ .2,1 IF FORTRAN4 VERSION * PROCESS PARAMETER LIST FOR FORTRAN4. .1 SET .1+1 * NO SPECIAL PROCESSING NEEDED. .C ENDIF .D IFEQ .2,2 IF FORTRAN5 VERSION * PROCESS PARAMETER LIST FOR FORTRAN5. .1 SET .1+1 * NO SPECIAL PROCESSING NEEDED. .D ENDIF SX6 X2 SAVE FWA OF MESSAGE SA6 PARM+RGMA * FORMAT STANDARD *TAF* REQUEST CALLING SEQUENCE. SB3 TRGPL+PARM LWA+1 OF PARAMETER TABLE RPT1 SB4 A6+B1 CURRENT FREE LOCATION IN TABLE SA2 A2+B1 GET NEXT PARAMETER GT B4,B3,RPT3 IF PARAMETER LIST TOO LARGE SX6 X2 SAVE PARAMETER IN PARAMETER TABLE SA6 B4 ZR X2,RPT2 IF END OF PARAMETER LIST EQ RPT1 PROCESS NEXT PARAMETER RPT2 SB4 B4-PARM NUMBER OF PARAMETERS FOUND .E IFEQ .2,0 IF COBOL5 VERSION SB2 TRGRL-1 REQUIRED NUMBER OF COBOL5 PARAMETERS SA2 A1+RGML NZ X2,RPT2.1 IF NOT USER SUPPLIED LENGTH SX6 RPTA SAVE COBOL SUPPLIED LENGTH SA6 PARM+RGML SX6 B0+ ZERO WORD TERMINATOR SA6 A6+1 .E ENDIF .F IFEQ .2,1 IF FORTRAN4 VERSION SB2 TRGRL REQUIRED NUMBER OF FORTRAN4 PARAMETERS .F ENDIF .G IFEQ .2,2 IF FORTRAN5 VERSION SB2 TRGRL REQUIRED NUMBER OF FORTRAN5 PARAMETERS .G ENDIF RPT2.1 LT B4,B2,RPT3 IF NOT ENOUGH PARAMETERS SA1 PARM INDICATE START OF PARAMETER LIST SX1 RFRP *RPUT* REQUEST RJ IRR ISSUE RECOVERY REQUEST EQ RPUTX RETURN RPT3 SA1 RPUT READ RETURN ADDRESS EQ PAE PROCESS ARGUMENT ERROR RPTA BSS 1 RSECURE SPACE 4,15 ** RSECURE - RETRIEVE LAST *SECURE* MESSAGE. * * ENTRY ENTER RSECURE USING MESSAGE, STATUS, MESSAGE-LENGTH, * MESSAGE-UNITS, FORMAT-EFFECTOR, TRANSPARENT MODE. * * CALL RSECURE(MESSAGE,STATUS,MESSAGE-LENGTH, * MESSAGE-UNITS,FORMAT-EFFECTOR,TRANSPARENT-MODE). * * (A1) = FWA OF PARAMETER LIST. * * EXIT REQUEST IS PROCESSED. * (A0) = (A0) ON ENTRY. * * USES X - 1. * * CALLS IRR. RSECURE SUBR ENTRY/EXIT SX1 RFRS *RSECURE* REQUEST RJ IRR ISSUE RECOVERY REQUEST EQ RSECUREX RETURN SRERUN SPACE 4,20 ** SRERUN - RERUN A TRANSACTION WITH ALTERNATE USERNAME. * * THIS REQUEST CAN ONLY BE USED BY SYSTEM TASKS. * * ENTRY ENTER SRERUN USING STATUS[, USERNAM]. * * CALL SRERUN (STATUS[,USERNAM]). * * (A1) = FWA OF PARAMETER LIST. * * EXIT REQUEST PROCESSED. * (A0) = SAME AS ENTRY. * * USES X = 1. * * CALLS IRR. VFD 42/0LSRERUN,18/SRERUN SRERUN SUBR ENTRY/EXIT SX1 RFSR SRERUN REQUEST RJ IRR ISSUE RECOVERY REQUEST EQ SRERUNX RETURN SECURE SPACE 4,20 ** SECURE - TRANSACTION IS SECURE. * * ENTRY ENTER SECURE USING MESSAGE, STATUS[, MESSAGE-LENGTH, * MESSAGE-UNITS, FORMAT-EFFECTOR, TRANSPARENT-MODE]. * * CALL SECURE(MESSAGE,STATUS,MESSAGE-LENGTH * [,MESSAGE-UNITS,FORMAT-EFFECTOR,TRANSPARENT-MODE]). * * (A1) = FWA OF PARAMETER LIST. * * EXIT REQUEST IS PROCESSED. * (A0) = (A0) ON ENTRY. * TO *PAE* IF PARAMETER ERROR. * * USES A - 2, 6. * X - 2, 6. * B - 1, 3, 4. * * CALLS IRR. .1 SET 0 SECURE SUBR ENTRY/EXIT SB1 1 SA2 A1 ZR X2,SEC3 IF END OF PARAMETER LIST .H IFEQ .2,0 IF COBOL5 VERSION * PROCESS PARAMETER LIST FOR COBOL5. .1 SET .1+1 MX3 -18 GET LENGTH OF MESSAGE BX4 X2 LX4 17-53 BX6 -X3*X4 SA6 SECA SAVE LENGTH OF MESSAGE SX6 SECA SAVE ADDRESS OF LENGTH SA6 PARM+SEML .H ENDIF .I IFEQ .2,1 IF FORTRAN4 VERSION * PROCESS PARAMETER LIST FOR FORTRAN4. .1 SET .1+1 * NO SPECIAL PROCESSING NEEDED. .I ENDIF .J IFEQ .2,2 IF FORTRAN5 VERSION * PROCESS PARAMETER LIST FOR FORTRAN5. .1 SET .1+1 * NO SPECIAL PROCESSING NEEDED. .J ENDIF SX6 X2 SAVE FWA OF MESSAGE SA6 PARM+SEMA SA2 A2+B1 GET STATUS ZR X2,SEC3 IF END OF PARAMETER LIST SX6 X2 SAVE FWA OF STATUS SA2 A2+B1 SA6 PARM+SEST SB3 TSEPL+PARM LWA+1 OF PARAMETER TABLE .K IFEQ .2,0 IF COBOL5 VERSION SB4 A6+1 NZ X2,SEC.1 IF NOT END OF PARAMETER LIST SX6 SECA SAVE COBOL SUPPLIED LENGTH SA6 PARM+SEML BX6 X6-X6 STORE ZERO WORD TERMINATIOR SA6 A6+B1 EQ SEC2 ISSUE REQUEST .K ENDIF .L IFEQ .2,1 IF FORTRAN4 VERSION ZR X2,SEC3 IF END OF PARAMETER LIST .L ENDIF .M IFEQ .2,2 IF FORTRAN5 VERSION ZR X2,SEC3 IF END OF PARAMETER LIST .M ENDIF SEC.1 SX6 X2 SA6 PARM+SEML SAVE FWA OF MESSAGE LENGTH * FORMAT STANDARD *TAF* REQUEST CALLING SEQUENCE. SB4 A6+B1 ADDRESS OF REST OF PARAMETER TABLE SEC1 SA2 A2+B1 GET NEXT ITEM SX6 X2 STORE PARAMETER IN TABLE GT B4,B3,SEC3 IF PARAMETER LIST TOO LARGE SA6 B4 ZR X2,SEC2 IF END OF PARAMETER LIST SB4 B4+B1 EQ SEC1 PROCESS NEXT PARAMETER SEC2 SA1 PARM ADDRESS OF PARMAETER TABLE SX1 RFSE *SECURE* REQUEST RJ IRR ISSUE RECOVERY REQUEST EQ SECUREX RETURN SEC3 SA1 SECURE READ RETURN ADDRESS EQ PAE PROCESS ARGUMENT ERROR SECA BSS 1 TINVOKE SPACE 4,20 ** TINVOKE - ASSIGN A NEW SYSTEM IDENTIFIER. * * ENTRY ENTER TINVOKE USING STATUS, NEW-SYS-ID[, OLD-SYS-ID]. * * CALL TINVOKE(STATUS,NEW-SYS-ID[,OLD-SYS-ID]). * * (A1) = FWA OF PARAMETER LIST. * * EXIT REQUEST IS PROCESSED. * (A0) = (A0) ON ENTRY. * * USES X - 1. * CALLS IRR. TINVOKE SUBR ENTRY/EXIT SX1 RFTI *TINVOKE* REQUEST RJ IRR ISSUE RECOVERY REQUEST EQ TINVOKEX RETURN PAE SPACE 4,15 ** PAE - PROCESS ARGUMENT ERROR. * * ENTRY (X1) = CALLING ADDRESS. * * EXIT PROGRAM WILL ABORT. * * USES A - 2, 6. * X - 1, 2, 6. * * MACROS ARGERR. PAE MX6 -30 LX1 29-59 SA2 X1-1 READ TRACE BACK WORD BX6 -X6*X2 SA6 PAEA ARGERR A6 EXIT TO EXECUTIVE PAEA BSSZ 1 IRR SPACE 4,15 ** IRR - ISSUE RECOVERY REQUEST. * * ENTRY (A1) = FWA OF REQUEST PARAMETER LIST. * (X1) = FUNCTION CODE. * * EXIT (A1) = FWA OF RETURN PARAMETER LIST. * * USES X - 1, 6, 7. * B - 1. * * CALLS SYS=. IRR SUBR ENTRY/EXIT SB1 1 SX6 3RREC PREPARE RECOVERY REQUEST SX7 A1 PARAMETER LIST ADDRESS LX6 59-17 BX6 X7+X6 LX1 35-17 REQUEST CODE BX6 X6+X1 RJ =XSYS= ISSUE REQUEST EQ IRRX RETURN END