; ; ; TABLE ACCESS MACROS. ; ; AUTHOR :- J.S.Clifton. ; DATE :- 24th May 1982 ; ; .MACRO TLOOKUP TKEY,TBLE,RSAVE TSEEKF = 0 ; IF SET DENOTES 'CALL T$SEEK' GENERATED. .IF B TKEY .ERROR ; -KEY NOT DEFINED. .MEXIT .ENDC .IF B TBLE .ERROR ; -TABLE NOT DEFINED. .MEXIT .ENDC .IIF DIF RGSTR'RSAVE,RGSTRS .EMIT .IF DIF TBLE,- .IF DIF TBLE,R0 .NTYPE TLAB,TBLE .IF EQ TLAB&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT .ENDC .IF DIF TKEY,- .IF DIF TKEY,FIRST .IF DIF TKEY,PREVIOUS .IF DIF TKEY,PRESENT .IF DIF TKEY,NEXT .IF DIF TKEY,LAST .IIF DIF TKEY,R1 .EMIT .EMIT TSEEKF = 1 ;SET THE SEEK FLAG. .IFF .EMIT .ENDC .IFF .EMIT .ENDC .IFF .EMIT .ENDC .IFF .EMIT .ENDC .IFF .EMIT .ENDC .IFF .IIF EQ LST$$ .LIST MOV CD.KEY,R1 CALL T$SEEK .IIF EQ LST$$ .NLIST TSEEKF = 1 .ENDC .IIF DIF RGSTR'RSAVE,RGSTRS .EMIT .ENDM TLOOKUP ; ; .MACRO TREAD DST,TKEY,TBLE TLOOKUP TKEY,TBLE ON.NOERROR MOVSTRING -,DST END .ENDM TREAD ; ; .MACRO TWRITE SRC,TKEY,TBLE .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IIF IDN SRC,- .EMIT TLOOKUP TKEY,TBLE .IF IDN SRC,- ON.NOERROR .EMIT .EMIT MOVSTRING -,- END .IFF ON.NOERROR .EMIT MOVSTRING SRC,- END .ENDC .ENDM TWRITE ; ; .MACRO TKILL TKEY,TBLE .IF IDN TKEY,ALL TCLOSE TBLE .IFF .EMIT TLOOKUP TKEY,TBLE,S ON.NOERROR .EMIT END .EMIT .ENDC .ENDM TKILL ; ; .MACRO TCREATE LNGTH,TKEY,TBLE,RSAVE .IF B LNGTH .ERROR ; -LENGTH NOT DEFINED. .MEXIT .IFF .IIF DIF LNGTH,- .EMIT .ENDC .IF B TKEY .ERROR ; -KEY NOT DEFINED. .MEXIT .ENDC .IIF DIF RGSTR'RSAVE,RGSTRS .EMIT TLOOKUP TKEY,TBLE,S ON.ERROR .IF EQ TSEEKF .ERROR ;INCORRECT MACRO KEY USAGE. .MEXIT .ENDC .EMIT .EMIT ON.NOERROR .EMIT END ELSE SETERROR END .IIF DIF RGSTR'RSAVE,RGSTRS .EMIT .ENDM TCREATE ; ; .MACRO TPROTECT TKEY,TBLE .IF IDN TKEY,ALL T..ALL PROTECT,TBLE .IFF .EMIT TLOOKUP TKEY,TBLE,S ON.NOERROR .EMIT END .EMIT .ENDC .ENDM TPROTECT ; ; .MACRO TUNPROTECT TKEY,TBLE .IF IDN TKEY,ALL T..ALL UNPROTECT,TBLE .IFF .EMIT TLOOKUP TKEY,TBLE,S ON.NOERROR .EMIT END .EMIT .ENDC .ENDM TUNPROTECT ; ; .MACRO TCLOSE TBLE TLOOKUP FIRST,TBLE .EMIT .ENDM TCLOSE ; ; .MACRO TINSERT SRC,LGTH,TKEY,TBLE .EMIT .IF B SRC .ERROR ; -SOURCE NOT DEFINED. .MEXIT .ENDC .IF B LGTH .ERROR ; -LENGTH NOT DEFINED. .MEXIT .ENDC TLOOKUP TKEY,TBLE,S ON.NOERROR .IF IDN TKEY,LAST .IIF EQ LST$$ .LIST INC CD.KEY MOV CD.KEY,R1 .IIF EQ LST$$ .NLIST .IFF .IIF EQ LST$$ .LIST CALL T$RSEQ MOV CD.KEY,R1 .IIF EQ LST$$ .NLIST .ENDC ELSE .IF IDN TKEY,NEXT .IIF EQ LST$$ .LIST CALL T$LAST INC CD.KEY MOV CD.KEY,R1 .IIF EQ LST$$ .NLIST .IFF .IIF EQ TSEEKF .EMIT .ENDC END .IIF DIF LGTH,- .EMIT .IIF EQ LST$$ .LIST MOV CD.CNT,R0 CALL T$CREATE .IIF EQ LST$$ .NLIST ON.NOERROR .IIF EQ LST$$ .LIST CALL R$CLEAR MOV R0,CD.DST .IIF EQ LST$$ .NLIST .IF DIF SRC,NULSTG .IF DIF SRC,- .NTYPE TSRC,SRC .IF EQ TSRC&70 .EMIT .IFF .EMIT .ENDC .ENDC .EMIT .ENDC END .EMIT ON.NOERROR .EMIT ELSE .IIF EQ LST$$ .LIST CALL T$RSEQ SEC .IIF EQ LST$$ .NLIST END .EMIT .ENDM TINSERT ; ; .MACRO TREMOVE TKEY,TBLE .EMIT TLOOKUP TKEY,TBLE,S ON.NOERROR .EMIT END .IIF EQ LST$$ .LIST CLR R0 ;Complete resequence. CALL T$RSEQ CALL R$UNSAVE .IIF EQ LST$$ .NLIST .ENDM TREMOVE ; ; .MACRO T..ALL ACTION,TBLE,?LAB1,?LAB2 .EMIT TLOOKUP -,TBLE,S ON.NOERROR .IIF EQ LST$$ .LIST MOV TADDRESS,R0 MOV (R0)+,R2 ADD R0,R2 LAB1: CMP R0,R2 BGE LAB2 TST (R0)+ .IIF EQ LST$$ .NLIST .IIF IDN ACTION,PROTECT .EMIT .IIF IDN ACTION,UNPROTECT .EMIT .IIF EQ LST$$ .LIST TST (R0)+ BR LAB1 LAB2: .IIF EQ LST$$ .NLIST .IIF IDN ACTION,DELETE .EMIT END .EMIT .ENDM T..ALL ; ; ; .END