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