IDENT AAML SST ENTRY CLOSE ENTRY DBCOMIT ENTRY DBEGIN ENTRY DBFREE ENTRY DBSTAT ENTRY DELETE ENTRY LOCK ENTRY FLOCK ENTRY OPEN ENTRY READ ENTRY READL ENTRY READM ENTRY READN ENTRY READNL ENTRY REWIND ENTRY REWRITE ENTRY SKIPBL ENTRY SKIPFL ENTRY START ENTRY UNLOCK ENTRY UNFLOCK ENTRY WRITE SYSCOM B1 TITLE AAML - ADVANCED ACCESS METHODS LIBRARY. *COMMENT AAML - ADVANCED ACCESS METHODS LIBRARY. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. AAM SPACE 4,10 ***** AAM - ADVANCED ACCESS METHODS. * * G. W. PROPP. 78/08/07. * L. E. LOVETT. 80/05/01. * * AAM IS AN USER LIBRARY INTERFACE FOR COBOL5 AND FORTRAN TASKS * MAKING ADVANCED ACCESS METHOD CYBER RECORD MANAGER REQUESTS * OF THE TRANSACTION FACILITY. DECK *AAML* IS PLACED ON THE * TRANSACTION USER LIBRARY CALLED *TRANLIB*. THE COBOL5 * *ENTER* VERB AND THE FORTRAN *CALL* STATEMENT INTERFACE USER * TASKS TO THE TRANSACTION FACILITY. * * AAML HAS BEEN MODIFIED TO PROVIDE TASK LEVEL * INTERFACE TO THE TRANSACTION FACILITY FOR * DATA BASE RECOVERY CALLS. * *** THE REQUESTS FOR *TAF CMR* ARE AS FOLLOWS - * * TO CLOSE A FILE FOR A TASK - * ENTER CLOSE USING FILE,TSTAT,CSTAT. * CALL CLOSE(FILE,TSTAT,CSTAT). * * TO COMMIT AN UPDATE SEQUENCE - * ENTER DBCOMIT USING TSTAT. * CALL DBCOMIT(TSTAT) * * TO BEGIN AN UPDATE SEQUENCE - * ENTER DBEGIN USING UBID,TSTAT. * CALL DBEGIN(UBID,TSTAT) * * TO FREE AN UPDATE SEQUENCE - * ENTER DBFREE USING TSTAT. * CALL DBFREE(TSTAT) * * TO OBTAIN STATUS OF UPDATE SEQUENCE(S) - * ENTER DBSTAT USING PBID,TSTAT,CBID. * CALL DBSTAT(PBID,STAT,CBID) * * TO DELETE A RECORD - * ENTER DELETE USING FILE,TSTAT,CSTAT,KEYA,KEYP. * CALL DELETE(FILE,TSTAT,CSTAT,KEYA,KEYP) * * TO LOCK A RECORD - * ENTER LOCK USING FILE,TSTAT,KEYA,KEYP. * CALL(FILE,TSTAT,KEYA,KEYP). * * TO LOCK A FILE - * ENTER FLOCK USING FILE,TSTAT. * CALL FLOCK(FILE,TSTAT). * * TO OPEN A FILE FOR A TASK - * ENTER OPEN USING FILE,TSTAT,CSTAT. * CALL OPEN(FILE,TSTAT,CSTAT). * * TO READ A RECORD BY KEY - * ENTER READ USING FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYA,KEYP- * ,FSTAT,ALTKEY,KEYR,KEYL-. * CALL READ(FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYA,KEYP-,FSTAT * ,ALTKEY,KEYR,KEYL-). * * TO READ A RECORD BY KEY WITH LOCK - * ENTER READL USING FILE TSTAT,CSTAT,WSA,WSAL,RL,KEYA,KEYP- * ,FSTAT,ALTKEY,KEYR,KEYL-. * CALL READL(FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYA,KEYP-,FSTAT * ,ALTKEY,KEYR,KEYL-). * * TO READ A RECORD BY MAJOR KEY - * ENTER READM USING FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR, * KEYL,KEYA,KEYP,MKEYL-,FSTAT,ALTKEY-. * CALL READM(FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR, * KEYL,KEYA,KEYP,MKEYL-,FSTAT,ALTKEY-). * * TO READ NEXT RECORD - * ENTER READN USING FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR,KEYL- * ,FSTAT-. * CALL READN(FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR,KEYL-,FSTAT-). * * TO READ NEXT RECORD WITH LOCK - * ENTER READNL USING FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR,KEYL- * ,FSTAT-. * CALL READNL(FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR,KEYL-,FSTAT-). * * TO REWIND A FILE - * ENTER REWIND USING FILE,TSTAT,CSTAT. * CALL REWIND(FILE,TSTAT,CSTAT). * * TO REWRITE A RECORD - * ENTER REWRITE USING FILE,TSTAT,CSTAT,WSA,RL,KEYA,KEYP. * CALL REWRITE(FILE,TSTAT,CSTAT,WSA,RL,KEYA,KEYP). * * TO SKIP A LOGICAL RECORD BACKWARD - * ENTER SKIPBL USING FILE,TSTAT,CSTAT,COUNT. * CALL SKIPBL(FILE,TSTAT,CSTAT,COUNT). * * TO SKIP A LOGICAL RECORD FORWARD - * ENTER SKIPFL USING FILE,TSTAT,CSTAT,COUNT. * CALL SKIPFL(FILE,TSTAT,CSTAT,COUNT). * * TO SET THE STARTING POSITION - * ENTER START USING FILE,TSTAT,CSTAT,REL,KEYA,KEYP-,FSTAT * ,ALTKEY,MKEYL-. * CALL START(FILE,TSTAT,CSTAT,REL,KEYA,KEYP-,FSTAT,ALTKEY * ,MKEYL-). * * TO UNLOCK A RECORD - * ENTER UNLOCK USING FILE,TSTAT,KEYA,KEYP. * CALL UNLOCK(FILE,TSTAT,KEYA,KEYP). * * TO UNLOCK A FILE - * ENTER UNFLOCK USING FILE,TSTAT. * CALL UNFLOCK(FILE,TSTAT). * * TO WRITE A RECORD - * ENTER WRITE USING FILE,TSTAT,CSTAT,WSA,RL,KEYA,KEYP-,KEYR * ,KEYL-. * CALL WRITE(FILE,TSTAT,CSTAT,WSA,RL,KEYA,KEYP-,KEYR,KEYL-). * * PARAMETERS ENCLOSED IN - - ARE OPTIONAL. * *** THE PARAMETERS FOR *TAF CRM* REQUESTS ARE DEFINED BELOW - * * FILE FILE NAME SELECTED BY DATA BASE ADMINISTRATOR. THE * FILE NAME MUST BEGIN ON A WORD BOUNDARY AND CONSIST OF * 2-7 CHARACTERS WITH BLANK OR BINARY ZERO FILL. * COBOL5 - 01 LEVEL DATA NAME. * FORTRAN - INTEGER. * * TSTAT TRANSACTION FACILITY STATUS. SEE DECK *COMKTER* . * COBOL5 - 01 LEVEL COMPUTATIONAL-1 DATA NAME. * FORTRAN - INTEGER. * * CSTAT *CRM* STATUS. * COBOL5 - 01 LEVEL COMPUTATIONAL-1 DATA NAME. * FORTRAN - INTEGER. * * WSA WORKING STORAGE AREA LARGE ENOUGH TO CONTAIN RECORD. * COBOL5 - 01 LEVEL DATA NAME. * FORTRAN - INTEGER ARRAY. * * * WSAL WORKING STORAGE AREA LENGTH IN CHARACTERS. * COBOL5 - 01 LEVEL COMPUTATIONAL-1 DATA NAME. * FORTRAN - INTEGER. * * KEYR KEY RETURN AREA LARGE ENOUGH TO CONTAIN PRIMARY KEY * COBOL5 - 01 LEVEL DATA NAME. * FORTRAN - INTEGER. * * KEYL KEY RETURN AREA LENGTH IN CHARACTERS. * COBOL5 - 01 LEVEL COMPUTATIONAL-1 DATA NAME. * FORTRAN - INTEGER. * * MKEYL MAJOR KEY LENGTH IN CHARACTERS. * COBOL5 - 01 LEVEL COMPUTATIONAL-1 DATA NAME. * FORTRAN - INTEGER. * * KEYP KEY CHARACTER POSITION WITH RESPECT TO *KEYA*. *KEYP* * STARTS AT ONE FOR FIRST CHARACTER OF *KEYA*. * COBOL5 - 01 COMPUTATIONAL-1 DATA NAME. * FORTRAN - INTEGER. * * KEYA KEY AREA. THIS IS A DATA NAME CONTAINING THE KEY * VALUE. * COBOL5 - 01 LEVEL DATA NAME. * FORTRAN - INTEGER. * * RL RECORD LENGTH IN CHARACTERS. ON AN INPUT REQUEST * THE TRANSACTION FACILITY RETURNS THE LENGTH. ON * OUTPUT THE TASK MUST SPECIFY THE LENGTH. * COBOL5 - 01 LEVEL COMPUTATIONAL-1 DATA NAME. * FORTRAN - INTEGER. * * COUNT COUNT OF LOGICAL RECORDS TO SKIP. * COBOL5 - 01 LEVEL COMPUTATIONAL-1 DATA ANME. * FORTRAN - INTEGER. * * UBID USER SUPPLIED BEGIN IDENTIFIER. * ON A DBEGIN REQUEST THE USER SUPPLIES A 5 CHARACTER * BEGIN IDENTIFIER. * COBOL5 - 01 LEVEL ALPHANUMERIC DATA NAME. * FORTRAN - INTEGER. * * PBID BEGIN IDENTIFIER OF THE (LAST) SUCCESSFULLY * COMPLETED UPDATE SEQUENCE. ON A DBSTAT REQUEST THE * TRANSACTION FACILITY WILL RETURN THIS IDENTIFIER * IN THE UPPER 30 BITS OF THE WORD, THE LOWER 30 BITS * REMAIN UNCHANGED. * COBOL5 - 01 LEVEL ALPHANUMERIC DATA NAME. * FORTRAN - INTEGER. * * CBID BEGIN IDENTIFIER OF THE CURRENT UPDATE SEQUENCE. * ON A DBSTAT REQUEST THE TRANSACTION FACILITY WILL * RETURN THIS IDENTIFIER IN THE UPPER 30 BITS OF THE * WORD, THE LOWER 30 BITS REMAIN UNCHANGED. * COBOL5 - 01 LEVEL ALPHANUMERIC DATA NAME. * FORTRAN - INTEGER. * * REL CODE GOVERNING POSITION RELATIVE TO GIVEN KEY AFTER * OPERATION. * VALUES EQ, GE, GT. * COBOL5 - 01 LEVEL DATA NAME. * FORTRAN - INTEGER DISPLAY CODE LEFT JUSTIFIED. * * FSTAT FILE POSITION INFORMATION. * RETURNED VALUES 0. * 1 NOT ON KEY. * 10B END OF KEY. * 100B END OF INFORMATION. * COBOL5 - 01 LEVEL COMPUTATIONAL-1 DATA NAME. * FORTRAN - INTEGER. * * ALTKEY ORDINAL OF ALTERNATE KEY FOR OPERATION * VALUES -1 NO CHANGE FROM CURRENT. * 0 PRIMARY KEY. * N ALTERNATE KEY N. * COBOL5 - 01 LEVEL COMPUTATIONAL-1 DATA NAME. * FORTRAN - INTEGER. SPACE 4,10 * COMMON DECKS. *CALL COMKTAF *CALL COMKIPR *CALL COMKTDM *CALL COMCMAC *CALL COMKFLD BEGINT BSS 0 LIST X *CALL COMKCRM SPACE 4,10 ORG BEGINT DO NOT RESERVE SPACE FOR *TAF CRM* TABLES LIST -X ** RTN - RETURN ADDRESS FOR ENTRY POINTS. * *RTN* GENERATES RETURN ADDRESS FOR ROUTINE ISSUING * *CRM* REQUEST. THE MACRO ALSO ENSURES THE RETURN * ADDRESS IS POSITIONED CORRECTLY IN THE TABLE OF * RETURN ADDRESSES. * * ENTRY CODE = TASK REQUEST CODE. * RETN = ENTRY POINT TO PROCESS TASK REQUEST. * (.1) = RETURN ADDRESS TABLE COUNTER. * * EXIT RETURN ADDRESS *RETN* IS PLACED IN TABLE. * (.1) = (.1) + 1. PURGMAC RTN RTN MACRO CODE,RETN ERRNZ .1-CODE IF REQUEST CODE NOT IN ORDER VFD 12/0,18/RETN .1 SET .1+1 ENDM TITLE TASK INTERFACE ROUTINES. CLOSE SPACE 4,10 ** CLOSE - CLOSE FILE. * * ENTRY ENTER CLOSE USING FILE,TSTAT,CSTAT. * CALL CLOSE(FILE,TSTAT,CSTAT). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. VFD 42/0LAAML,18/CLOSE IDENTIFY DECK CLOSE SUBR ENTRY/EXIT SX1 TRCL CLOSE FILE FOR TASK EQ ISR ISSUE REQUEST SPACE 4,10 ** DBCOMIT - DATA BASE COMMIT REQUEST. * * ENTRY ENTER DBCOMIT USING TSTAT. * CALL DBCOMIT(TSTAT) * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. DBCOMIT SUBR ENTRY/EXIT SX1 TRDC DATA BASE COMMIT REQUEST EQ ISR ISSUE REQUEST SPACE 4,10 ** DBEGIN - DATA BASE BEGIN REQUEST. * * ENTRY ENTER DBEGIN USING UBID,TSTAT. * CALL DBEGIN(UBID,TSTAT) * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. DBEGIN SUBR ENTRY/EXIT SX1 TRDB DATA BASE BEGIN REQUEST EQ ISR ISSUE REQUEST SPACE 4,10 ** DBFREE - DATA BASE FREE REQUEST. * * ENTRY ENTER DBFREE USING TSTAT. * CALL DBFREE(TSTAT) * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. DBFREE SUBR ENTRY/EXIT SX1 TRDF DATA BASE FREE REQUEST EQ ISR ISSUE REQUEST SPACE 4,10 ** DBSTAT - DATA BASE STATUS REQUEST. * * ENTRY ENTER DBSTAT USING PBID,TSTAT,CBID. * CALL DBSTST(PBID,TSTAT,CBID) * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. DBSTAT SUBR ENTRY/EXIT SX1 TRDS DATA BASE STATUS REQUEST EQ ISR ISSUE REQUEST DELETE SPACE 4,10 ** DELETE - DELETE RECORD. * * ENTRY ENTER DELETE USING FILE,TSTAT,CSTAT,KEYA,KEYP. * CALL DELETE(FILE,TSTAT,CSTAT,KEYA,KEYP). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. DELETE SUBR ENTRY/EXIT SX1 TRDE DELETE RECORD EQ ISR ISSUE REQUEST LOCK SPACE 4,10 LOCK SPACE 4,10 ** LOCK - LOCK RECORD. * * ENTRY ENTER LOCK USING FILE,TSTAT,KEYA,KEYP. * CALL(FILE,TSTAT,KEYA,KEYP). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. LOCK SUBR ENTRY/EXIT SX1 TRLC LOCK RECORD EQ ISR ISSUE REQUEST FLOCK SPACE 4,10 ** FLOCK - LOCK FILE. * * ENTRY ENTER FLOCK USING FILE,TSTAT. * CALL FLOCK(FILE,TSTAT). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. FLOCK SUBR ENTRY/EXIT SX1 TRLF LOCK FILE EQ ISR ISSUE REQUEST OPEN SPACE 4,10 ** OPEN - OPEN FILE FOR TASK. * * ENTRY ENTER OPEN USING FILE,TSTAT,CSTAT. * CALL OPEN(FILE,TSTAT,CSTAT). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. OPEN SUBR ENTRY/EXIT SX1 TROP OPEN FILE FOR TASK EQ ISR ISSUE REQUEST READ SPACE 4,10 ** READ - READ BY KEY. * * ENTRY ENTER READ USING FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYA, * KEYP-,FSTAT,ALTKEY-. * CALL READ(FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYA,KEYP-, * FSTAT,ALTKEY-). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. READ SUBR ENTRY/EXIT SX1 TRRD READ BY KEY EQ ISR ISSUE REQUEST READL SPACE 4,10 ** READL - READ BY KEY WITH LOCK. * * ENTRY ENTER READL USING FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYA, * KEYP-,FSTAT,ALTKEY-. * CALL READL(FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYA,KEYP- * ,FSTAT,ALTKEY-). * * EXIT TO *ISR* TO ISSUE REQUEST * * USES X - 1. READL SUBR ENTRY/EXIT SX1 TRRL READ BY KEY WITH LOCK EQ ISR ISSUE REQUEST READM SPACE 4,10 ** READM - READ BY MAJOR KEY. * * ENTRY ENTER READM USING FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR, * KEYRL,KEYA,KEYP,MKEYL-,FSTAT,ALTKEY-. * CALL READM(FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR,KEYRL, * KEYA,KEYP,MKEYL-,FSTAT,ALTKEY-). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. READM SUBR ENTRY/EXIT SX1 TRRM READ BY MAJOR KEY EQ ISR ISSUE REQUEST READN SPACE 4,10 ** READN - READ NEXT RECORD. * * ENTRY ENTER READN USING FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR, * KEYL-,FSTAT-. * CALL READN(FILE,TSTAT,CSTAT,WSA,RL,KEYR,KEYL-,FSTAT-). * * ENIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. READN SUBR ENTRY/EXIT SX1 TRRN READ NEXT RECORD WITHOUT LOCK EQ ISR ISSUE REQUEST READNL SPACE 4,10 ** READNL - READ NEXT RECORD WITH LOCK. * * ENTRY ENTER READNL USING FILE,TSTAT,CSTAT,WSA,WSAL,RL,KEYR, * KEYL-,FSTAT-. * CALL READNL(FILE,TSTAT,CSTAT,WSA,RL,KEYR,KEYL- * ,FSTAT-). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. READNL SUBR ENTRY/EXIT SX1 TRRO READ NEXT RECORD WITH LOCK EQ ISR ISSUE REQUEST REWIND SPACE 4,10 ** REWIND - REWIND FILE. * * ENTRY ENTER REWIND USING FILE,TSTAT,CSTAT. * CALL REWIND(FILE,TSTAT,CSTAT). * * EXIT TO *ISR* TO ISSUE REQUEST * * USES X - 1. REWIND SUBR ENTRY/EXIT SX1 TRRP REWIND FILE EQ ISR ISSUE REQUEST REWRITE SPACE 4,10 ** REWRITE - REWRITE RECORD. * * ENTRY ENTER REWRITE USING FILE,TSTAT,CSTAT,WSA,RL,KEYA, * KEYP. * CALL REWRITE(FILE,TSTAT,CSTAT,WSA,RL,KEYA,KEYP). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. REWRITE SUBR ENTRY/EXIT SX1 TRRW REWRITE RECORD EQ ISR ISSUE REQUEST SKIPBL SPACE 4,10 ** SKIPBL - SKIP BACKWARD LOGICAL RECORDS. * * ENTRY ENTER SKIPBL USING FILE,TSTAT,CSTAT,COUNT. * CALL SKIPBL(FILE,TSTAT,CSTAT,COUNT). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. SKIPBL SUBR ENTRY/EXIT SX1 TRSB SKIP LOGICAL RECORDS BACKWARD EQ ISR ISSUE REQUEST SKIPFL SPACE 4,10 ** SKIPFL - SKIP FORWARD LOGICAL RECORDS. * * ENTRY ENTER SKIPFL USING FILE,TSTAT,CSTAT,COUNT. * CALL SKIPFL(FILE,TSTAT,CSTAT,COUNT). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. SKIPFL SUBR ENTRY/EXIT SX1 TRSF SKIP FORWARD LOGICAL RECORD EQ ISR ISSUE REQUEST UNLOCK SPACE 4,10 ** UNLOCK - UNLOCK RECORD. * * ENTRY ENTER UNLOCK USING FILE,TSTAT,KEYA,KEYP. * CALL UNLOCK(FILE,TSTAT,KEYA,KEYP). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. UNLOCK SUBR ENTRY/EXIT SX1 TRUC UNLOCK RECORD EQ ISR ISSUE REQUEST UNFLOCK SPACE 4,10 ** UNFLOCK - UNLOCK FILE. * * ENTRY ENTER UNFLOCK USING FILE,TSTAT. * CALL UNFLOCK(FILE,TSTAT). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. UNFLOCK SUBR ENTRY/EXIT SX1 TRUF UNLOCK FILE EQ ISR ISSUE REQUEST WRITE SPACE 4,10 ** WRITE - WRITE RECORD BY KEY. * * ENTRY ENTER WRITE USING FILE,TSTAT,CSTAT,WSA,RL,KEYA, * KEYP-,KEYR,KEYL-. * CALL WRITE(FILE,TSTAT,CSTAT,WSA,RL,KEYA,KEYP-,KEYR * ,KEYL-). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. WRITE SUBR ENTRY/EXIT SX1 TRWR WRITE RECORD BY KEY EQ ISR ISSUE REQUEST START SPACE 4,20 ** START - SET STARTING POSITION. * * ENTRY ENTER START USING FILE,TSTAT,CSTAT,REL,KEYA,KEYP- * ,FSTAT,ALTKEY,MKEYL-. * * CALL START(FILE,TSTAT,CSTAT,REL,KEYA,KEYP-,FSTAT * ,ALTKEY,MKEYL-). * * EXIT TO *ISR* TO ISSUE REQUEST. * * USES X - 1. START SUBR ENTRY/EXIT SX1 TRST SET STARTING POSITION EQ ISR ISSUE REQUEST TITLE REQUEST ROUTINE. ISR SPACE 4,10 ** ISR - ISSUE REQUEST. * * ENTRY (X1) = REQUEST CODE. * (A1) = ADDRESS OF REQUEST PARAMETERS. * * USES X - 0, 1, 2, 6, 7. * A - 2. * B - 1, 7. * * EXIT (B1) = 1. * * CALLS SYS=. ISR SB1 1 * DETERMINE RETURN ADDRESS OF CALLER. SX2 X1 COMPUTE WORD INDEX INTO *TRTN* TABLE LX1 59-0 DETERMINE LOWER OR UPPER TABLE ENTRY AX2 1 DIVIDE BY 2 SA2 X2+TRTN NG X1,ISR1 IF UPPER ENTRY LX2 30 ISR1 SX0 X2 RETURN ADDRESS * SET UP REQUEST. SX6 3RAAM SX7 A1 PARAMETER ADDRESS LX6 59-17 BX6 X7+X6 LX1 23-5+1 REQUEST CODE BX6 X6+X1 RJ =XSYS= ISSUE REQUEST SB7 X0 RETURN ADDRESS JP B7 RETURN TRTN SPACE 4,10 ** TRTN - TABLE OF RETURN ADDRESS FOR REQUESTS. * TWO RETURN ADDRESS ARE PACKED PER WORD TO SAVE CORE. * THE TABLE MUST BE IN ASCENDING ORDER ACCORDING * TO REQUEST CODE GIVEN IN *COMKCRM*. * *T 12/0,18/ RTN1,12/0,18/ RTN2 * * RTN1 - ODD REQUEST CODE RETURN ADDRESS. * RTN2 - EVEN REQUEST CODE RETURN ADDRESS. .1 SET 0 REQUEST CODE SEQUENCE COUNTER TRTN BSS 0 TABLE OF RETURN ADDRESS FOR REQUESTS RTN TRCL,CLOSE RTN TRDE,DELETE RTN TRLC,LOCK RTN TRLF,FLOCK RTN TROP,OPEN RTN TRRD,READ RTN TRRL,READL RTN TRRM,READM RTN TRRN,READN RTN TRRO,READNL RTN TRRP,REWIND RTN TRRW,REWRITE RTN TRSB,SKIPBL RTN TRSF,SKIPFL RTN TRUC,UNLOCK RTN TRUF,UNFLOCK RTN TRWR,WRITE RTN TRST,START RTN TRDB,DBEGIN RTN TRDC,DBCOMIT RTN TRDF,DBFREE RTN TRDS,DBSTAT ERRNZ .1-.TREQL IF ALL TASK REQUESTS NOT IN TABLE END