/* Copyright 1989, 1990, 1992 Digital Equipment Corporation All rights reserved. This software is furnished under a license and may be used and copied only in accordance with the terms of such license and with the inclusion of the above copyright notice. This software and any copies shall not be provided to any other person. No title to or ownership of the software is hereby transferred. The information in this software is subject to change without notice. DIGITAL assumes no responsibility for the use, functionality or reliability of its software on equipment which is not supplied by DIGITAL. rab.h Record Access Block Definitions */ #ifndef __PDP11C$RAB_H #define __PDP11C$RAB_H /* Common Offset Definitions For RAB */ #define RAB$B_BID (00) /* O$BID */ #define RAB$C_BID (01) /* RB$BID RAB identifier */ #define RAB$B_BLN (01) /* O$BLN */ #define RAB$K_BLN_SYNC (0120) /* RB$BLN Syncronous RAB length (bytes) */ #define RAB$K_BLN_ASYNC (0240) /* RB$BLL Asyncronous RAB length (bytes) */ #define RAB$C_BLN_SYNC (0120) /* RB$BLN Syncronous RAB length (bytes) */ #define RAB$C_BLN_ASYNC (0240) /* RB$BLL Asyncronous RAB length (bytes) */ #define RAB$W_CTX (02) /* O$CTX */ #define RAB$W_ISI (04) /* O$ISI */ #define RAB$W_STS (06) /* O$STS */ #define RAB$W_STV (010) /* O$STV */ #define RAB$W_RFA (012) /* O$RFA */ #define RAB$B_RAC (020) /* O$RAC */ #define RAB$C_SEQ (00) /* RB$SEQ Sequential access */ #define RAB$C_KEY (01) /* RB$KEY Key access */ #define RAB$C_RFA (02) /* RB$RFA RFA access */ #define RAB$B_KSZ (021) /* O$KSZ */ #define RAB$W_ROP (022) /* O$ROP */ #define RAB$M_EOF (1 << RAB$V_EOF) /* RB$EOF Postion to end-of-file */ #define RAB$M_MAS (1 << RAB$V_MAS) /* RB$MAS Mass insert */ #define RAB$M_WAT (1 << RAB$V_WAT) /* RB$WAT Wait if record unavailable */ #define RAB$M_HSH (1 << RAB$V_HSH) /* RB$HSH Use hash code in bucket field */ #define RAB$M_LOA (1 << RAB$V_LOA) /* RB$LOA Honor bucket fill numbers */ #define RAB$M_ULK (1 << RAB$V_ULK) /* RB$ULK Manual locking, unlocking */ #define RAB$M_LOK (1 << RAB$V_LOK) /* RB$LOK Record lock control bit */ #define RAB$M_LOC (1 << RAB$V_LOC) /* RB$LOC Locate mode */ #define RAB$M_ASY (1 << RAB$V_ASY) /* RB$ASY Asynchronous operation */ #define RAB$M_RAH (1 << RAB$V_RAH) /* RB$RAH Read ahead */ #define RAB$M_WBH (1 << RAB$V_WBH) /* RB$WBH Write behind */ #define RAB$M_KGE (1 << RAB$V_KGE) /* RB$KGE Greater-than-or-equal key criterion */ #define RAB$M_KGT (1 << RAB$V_KGT) /* RB$KGT Greater-than key criterion */ #define RAB$M_FDL (1 << RAB$V_FDL) /* RB$FDL Fast deletion */ #define RAB$M_UIF (1 << RAB$V_UIF) /* RB$UIF Update if record exists */ #define RAB$M_RCN (1 << RAB$V_RCN) /* RB$RCN Enable key access to sequential files */ #define RAB$V_EOF (00) #define RAB$V_MAS (01) #define RAB$V_WAT (02) #define RAB$M_RLK RAB$M_WAT /* RB$RLK TPS - Read lock records */ #define RAB$V_HSH (03) #define RAB$V_LOA (04) #define RAB$V_ULK (05) #define RAB$V_LOK RAB$V_ULK #define RAB$V_LOC (06) #define RAB$V_ASY (07) #define RAB$V_RAH (010) #define RAB$V_WBH (011) #define RAB$V_KGE (012) #define RAB$V_KGT (013) #define RAB$V_FDL (014) #define RAB$V_UIF (015) #define RAB$V_RCN (016) #define RAB$W_USZ (024) /* O$USZ */ #define RAB$L_UBF (026) /* O$UBF */ #define RAB$W_RSZ (030) /* O$RSZ */ #define RAB$L_RBF (032) /* O$RBF */ #define RAB$L_KBF (034) /* O$KBF */ #define RAB$B_KRF (036) /* O$KRF */ #define RAB$B_MBF (037) /* O$MBF */ #define RAB$B_MBC (040) /* O$MBC */ #define RAB$W_RT1A (041) /* O$RT1A */ #define RAB$L_RHB (042) /* O$RHB */ #define RAB$L_FAB (044) /* O$FAB */ #define RAB$L_BKT (046) /* O$BKT */ #define RAB$L_BKT0 (046) /* O$BKT0 */ #define RAB$L_BKT1 (050) /* O$BKT1 */ #define RAB$L_DCT (046) /* O$DCT */ #define RAB$L_DCT0 (046) /* O$DCT0 */ #define RAB$L_DCT1 (050) /* O$DCT1 */ /* Structure definition for Asynchronous RAB */ struct A_RAB { unsigned char rab$b_bid; /* RAB identifier code */ unsigned char rab$b_bln; /* RAB length (bytes) */ unsigned short rab$w_ctx; /* User context */ unsigned short rab$w_isi; /* Internal stream identifier */ unsigned short rab$w_sts; /* Completion status code */ unsigned short rab$w_stv; /* Completion status value */ unsigned short rab$w_rfa[3]; /* Record file address */ unsigned char rab$b_rac; /* Record access mode */ unsigned char rab$b_ksz; /* Key size (bytes) */ unsigned short rab$w_rop; /* Record processing option mask */ unsigned short rab$w_usz; /* User buffer size (bytes) */ char *rab$l_ubf; /* User buffer address */ unsigned short rab$w_rsz; /* Record size */ char *rab$l_rbf; /* Record buffer address */ char *rab$l_kbf; /* Key buffer address */ unsigned char rab$b_krf; /* Key of reference */ char rab$b_mbf; /* Multibuffer count */ unsigned char rab$b_mbc; /* Multiblock count */ unsigned char rab$w_rt1a; /* Reserved */ char *rab$l_rhb; /* VFC control buffer address */ struct FAB *rab$l_fab; /* FAB address */ unsigned long rab$l_bkt; /* Virtual block number (VBN) or relative record number (RRN) */ unsigned short reserved[59]; /* Reserved */ }; /* Structure definition for Synchronous RAB */ struct S_RAB { unsigned char rab$b_bid; /* RAB identifier code */ unsigned char rab$b_bln; /* RAB length (bytes) */ unsigned short rab$w_ctx; /* User context */ unsigned short rab$w_isi; /* Internal stream identifier */ unsigned short rab$w_sts; /* Completion status code */ unsigned short rab$w_stv; /* Completion status value */ unsigned short rab$w_rfa[3]; /* Record file address */ unsigned char rab$b_rac; /* Record access mode */ unsigned char rab$b_ksz; /* Key size (bytes) */ unsigned short rab$w_rop; /* Record processing option mask */ unsigned short rab$w_usz; /* User buffer size (bytes) */ char *rab$l_ubf; /* User buffer address */ unsigned short rab$w_rsz; /* Record size */ char *rab$l_rbf; /* Record buffer address */ char *rab$l_kbf; /* Key buffer address */ unsigned char rab$b_krf; /* Key of reference */ char rab$b_mbf; /* Multibuffer count */ unsigned char rab$b_mbc; /* Multiblock count */ unsigned char rab$w_rt1a; /* Reserved */ char *rab$l_rhb; /* VFC control buffer address */ struct FAB *rab$l_fab; /* FAB address */ unsigned long rab$l_bkt; /* Virtual block number (VBN) or relative record number (RRN) */ unsigned short reserved[19]; /* Reserved */ }; /* The struct definition which follows this comment defines cc$rms_rab as an instance of a RAB which is initialized to default values. If you wish to use it, you must include the following line in any module which refers to cc$rms_rab: #define RMS_RAB$PROTOTYPE The definition must appear before the #include statement. */ #ifdef RMS_RAB$PROTOTYPE #define cc$rms_rab CC$RAB /* 6 chars for TKB, cc$rms_rab for VMS compatability */ extern struct A_RAB cc$rms_rab; /* Declare initialized prototype data structure */ #endif #endif