!*** MODULE $RABDEF *** CDEC$ OPTIONS /NOALIGN ! ! record access block (rab) definitions ! ! there is one rab per connected stream ! it is used for all communications between the user ! and rms concerning operations on the stream ! ! +++++***** ! the fields thru ctx cannot be changed due to commonality ! with the fab ! PARAMETER RAB$C_BID = '00000001'X ! code for rab PARAMETER RAB$M_PPF_RAT = '00003FC0'X PARAMETER RAB$M_PPF_IND = '00004000'X PARAMETER RAB$M_PPISI = '00008000'X PARAMETER RAB$M_ASY = '00000001'X PARAMETER RAB$M_TPT = '00000002'X PARAMETER RAB$M_REA = '00000004'X PARAMETER RAB$M_RRL = '00000008'X PARAMETER RAB$M_UIF = '00000010'X PARAMETER RAB$M_MAS = '00000020'X PARAMETER RAB$M_FDL = '00000040'X PARAMETER RAB$M_REV = '00000080'X PARAMETER RAB$M_EOF = '00000100'X PARAMETER RAB$M_RAH = '00000200'X PARAMETER RAB$M_WBH = '00000400'X PARAMETER RAB$M_BIO = '00000800'X PARAMETER RAB$M_CDK = '00001000'X PARAMETER RAB$M_LOA = '00002000'X PARAMETER RAB$M_LIM = '00004000'X PARAMETER RAB$M_SYNCSTS = '00008000'X PARAMETER RAB$M_LOC = '00010000'X PARAMETER RAB$M_WAT = '00020000'X PARAMETER RAB$M_ULK = '00040000'X PARAMETER RAB$M_RLK = '00080000'X PARAMETER RAB$M_NLK = '00100000'X PARAMETER RAB$M_KGE = '00200000'X PARAMETER RAB$M_KGT = '00400000'X PARAMETER RAB$M_NXR = '00800000'X PARAMETER RAB$M_RNE = '01000000'X PARAMETER RAB$M_TMO = '02000000'X PARAMETER RAB$M_CVT = '04000000'X PARAMETER RAB$M_RNF = '08000000'X PARAMETER RAB$M_ETO = '10000000'X PARAMETER RAB$M_PTA = '20000000'X PARAMETER RAB$M_PMT = '40000000'X PARAMETER RAB$M_CCO = '80000000'X PARAMETER RAB$M_EQNXT = '00200000'X PARAMETER RAB$M_NXT = '00400000'X PARAMETER RAB$C_SEQ = '00000000'X ! sequential access PARAMETER RAB$C_KEY = '00000001'X ! keyed access PARAMETER RAB$C_RFA = '00000002'X ! rfa access PARAMETER RAB$C_STM = '00000003'X ! stream access (valid only for sequential org) PARAMETER RAB$C_MAXRAC = '00000002'X ! Maximum RAC value currently supported by RMS PARAMETER RAB$K_BLN = '00000044'X ! length of rab PARAMETER RAB$C_BLN = '00000044'X ! length of rab STRUCTURE /RABDEF/ BYTE RAB$B_BID ! block id BYTE RAB$B_BLN ! block length UNION MAP INTEGER*2 RAB$W_ISI ! internal stream index END MAP ! (ifi in fab) MAP PARAMETER RAB$S_PPF_RAT = 8 PARAMETER RAB$V_PPF_RAT = 6 ! rat value for process-permanent files PARAMETER RAB$S_PPF_IND = 1 PARAMETER RAB$V_PPF_IND = 14 ! indirect access to process-permanent file ! (i.e., restricted operations) PARAMETER RAB$S_PPISI = 1 PARAMETER RAB$V_PPISI = 15 BYTE %FILL (2) ! indicates that this is process-permanent stream END MAP END UNION UNION MAP INTEGER*4 RAB$L_ROP ! record options END MAP MAP PARAMETER RAB$S_ASY = 1 PARAMETER RAB$V_ASY = 0 ! asynchronous operations PARAMETER RAB$S_TPT = 1 PARAMETER RAB$V_TPT = 1 ! truncate put - allow sequential put not at ! eof, thus truncating file (seq. org only) ! ! these next two should be in the byte for bits ! input to $find or $get, but there is no room there ! PARAMETER RAB$S_REA = 1 PARAMETER RAB$V_REA = 2 ! lock record for read only, allow other readers PARAMETER RAB$S_RRL = 1 PARAMETER RAB$V_RRL = 3 ! read record regardless of lock ! PARAMETER RAB$S_UIF = 1 PARAMETER RAB$V_UIF = 4 ! update if existent PARAMETER RAB$S_MAS = 1 PARAMETER RAB$V_MAS = 5 ! mass-insert mode PARAMETER RAB$S_FDL = 1 PARAMETER RAB$V_FDL = 6 ! fast record deletion PARAMETER RAB$S_REV = 1 PARAMETER RAB$V_REV = 7 ! reverse-search - can only be set with NXT or EQNXT ! PARAMETER RAB$S_EOF = 1 PARAMETER RAB$V_EOF = 8 ! connect to eof PARAMETER RAB$S_RAH = 1 PARAMETER RAB$V_RAH = 9 ! read ahead PARAMETER RAB$S_WBH = 1 PARAMETER RAB$V_WBH = 10 ! write behind PARAMETER RAB$S_BIO = 1 PARAMETER RAB$V_BIO = 11 ! connect for bio only PARAMETER RAB$S_CDK = 1 PARAMETER RAB$V_CDK = 12 ! check for duplicate keys on $GET PARAMETER RAB$S_LOA = 1 PARAMETER RAB$V_LOA = 13 ! use bucket fill percentage PARAMETER RAB$S_LIM = 1 PARAMETER RAB$V_LIM = 14 ! compare for key limit reached on $get/$find seq. (idx only) PARAMETER RAB$S_SYNCSTS = 1 PARAMETER RAB$V_SYNCSTS = 15 ! Synchronous status notification for asynchronous routines. ! ! the following bits are input to ! $find or $get, (see above also REA and RRL) ! (separate byte) ! PARAMETER RAB$S_LOC = 1 PARAMETER RAB$V_LOC = 16 ! use locate mode PARAMETER RAB$S_WAT = 1 PARAMETER RAB$V_WAT = 17 ! wait if record not available PARAMETER RAB$S_ULK = 1 PARAMETER RAB$V_ULK = 18 ! manual unlocking PARAMETER RAB$S_RLK = 1 PARAMETER RAB$V_RLK = 19 ! allow readers for this locked record PARAMETER RAB$S_NLK = 1 PARAMETER RAB$V_NLK = 20 ! do not lock record PARAMETER RAB$S_KGE = 1 PARAMETER RAB$V_KGE = 21 ! key > or = PARAMETER RAB$S_KGT = 1 PARAMETER RAB$V_KGT = 22 ! key greater than PARAMETER RAB$S_NXR = 1 PARAMETER RAB$V_NXR = 23 ! get non-existent record ! ! the following bits are terminal qualifiers only ! (separate byte) ! PARAMETER RAB$S_RNE = 1 PARAMETER RAB$V_RNE = 24 ! read no echo PARAMETER RAB$S_TMO = 1 PARAMETER RAB$V_TMO = 25 ! use time-out period PARAMETER RAB$S_CVT = 1 PARAMETER RAB$V_CVT = 26 ! convert to upper case PARAMETER RAB$S_RNF = 1 PARAMETER RAB$V_RNF = 27 ! read no filter PARAMETER RAB$S_ETO = 1 PARAMETER RAB$V_ETO = 28 ! extended terminal operation PARAMETER RAB$S_PTA = 1 PARAMETER RAB$V_PTA = 29 ! purge type ahead PARAMETER RAB$S_PMT = 1 PARAMETER RAB$V_PMT = 30 ! use prompt buffer PARAMETER RAB$S_CCO = 1 PARAMETER RAB$V_CCO = 31 BYTE %FILL (4) ! cancel control o on output END MAP MAP PARAMETER RAB$S_EQNXT = 1 PARAMETER RAB$V_EQNXT = 21 ! Synonyms for KGE and PARAMETER RAB$S_NXT = 1 PARAMETER RAB$V_NXT = 22 ! KGT BYTE %FILL (1) END MAP ! ! the following bits may be ! input to various rab-related ! operations ! MAP BYTE %FILL BYTE RAB$B_ROP1 ! various options BYTE RAB$B_ROP2 ! get/find options (use of this field discouraged ! due to REA and RRL being in a different byte) BYTE RAB$B_ROP3 ! terminal read options ! END MAP END UNION INTEGER*4 RAB$L_STS ! status UNION MAP INTEGER*4 RAB$L_STV ! status value END MAP MAP INTEGER*2 RAB$W_STV0 ! low word of stv INTEGER*2 RAB$W_STV2 ! high word of stv END MAP END UNION UNION MAP INTEGER*2 RAB$W_RFA(1:3) ! record's file address END MAP MAP INTEGER*4 RAB$L_RFA0 INTEGER*2 RAB$W_RFA4 END MAP END UNION INTEGER*2 %FILL ! (reserved - rms release 1 optimizes stores ! to the rfa field to be a move quad, overwriting ! this reserved word) INTEGER*4 RAB$L_CTX ! user context ! -----***** INTEGER*2 %FILL ! (spare) BYTE RAB$B_RAC ! record access BYTE RAB$B_TMO ! time-out period INTEGER*2 RAB$W_USZ ! user buffer size INTEGER*2 RAB$W_RSZ ! record buffer size INTEGER*4 RAB$L_UBF ! user buffer address INTEGER*4 RAB$L_RBF ! record buffer address INTEGER*4 RAB$L_RHB ! record header buffer addr UNION MAP INTEGER*4 RAB$L_KBF ! key buffer address END MAP MAP INTEGER*4 RAB$L_PBF ! prompt buffer addr END MAP END UNION UNION MAP BYTE RAB$B_KSZ ! key buffer size END MAP MAP BYTE RAB$B_PSZ ! prompt buffer size END MAP END UNION BYTE RAB$B_KRF ! key of reference BYTE RAB$B_MBF ! multi-buffer count BYTE RAB$B_MBC ! multi-block count UNION MAP INTEGER*4 RAB$L_BKT ! bucket hash code, vbn, or rrn END MAP MAP INTEGER*4 RAB$L_DCT ! duplicates count on key accessed on alternate key END MAP END UNION INTEGER*4 RAB$L_FAB ! related fab for connect INTEGER*4 RAB$L_XAB ! XAB address END STRUCTURE ! RABDEF CDEC$ END OPTIONS