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