/* 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. fab.h File Access Block Definitions */ #ifndef __PDP11C$FAB_H #define __PDP11C$FAB_H /* Definitions: */ #define FAB$B_BID (00) #define FAB$C_BID (03) #define FAB$B_BLN (01) #define FAB$C_BLN (0120) #define FAB$K_BLN (0120) #define FAB$W_CTX (02) #define FAB$W_IFI (04) #define FAB$W_STS (06) #define FAB$W_STV (010) #define FAB$L_ALQ (012) #define FAB$L_ALQ0 (012) #define FAB$L_ALQ1 (014) #define FAB$W_DEQ (016) #define FAB$W_FAC (020) #define FAB$M_PUT (1 << FAB$V_PUT) /* FB$PUT Request put access */ #define FAB$M_GET (1 << FAB$V_GET) /* FB$GET Request find/get access */ #define FAB$M_DEL (1 << FAB$V_DEL) /* FB$DEL Request find/get/delete access */ #define FAB$M_UPD (1 << FAB$V_UPD) /* FB$UPD Request find/get/update access */ #define FAB$M_TRN (1 << FAB$V_TRN) /* FB$TRN Request find/get/truncate access */ #define FAB$M_BIO (1 << FAB$V_BIO) /* FB$BIO Request block io access */ #define FAB$M_WRT (041) /* FB$WRT Request block write access */ #define FAB$M_REA (042) /* FB$REA Request block read access */ #define FAB$V_PUT (00) #define FAB$V_GET (01) #define FAB$V_DEL (02) #define FAB$V_UPD (03) #define FAB$V_TRN (04) #define FAB$V_BIO (05) #define FAB$B_SHR (021) #define FAB$M_SHRGET (02) /* FB$GET Share find/get access */ #define FAB$M_SHRPUT (015) /* FB$WRI Share find/get/put/update/delete access */ #define FAB$M_UPI (040) /* FB$UPI Share any access (user provided interlock */ #define FAB$M_NIL (0100) /* FB$NIL No access sharing */ #define FAB$W_FOP (022) #define FAB$M_RWO (1 << FAB$V_RWO) /* FB$RWO Rewind magtape before operation */ #define FAB$M_RWC (1 << FAB$V_RWC) /* FB$RWC Rewind magtape after closing file */ #define FAB$M_WAT (1 << FAB$V_WAT) /* FB$WAT Wait for file */ #define FAB$M_POS (1 << FAB$V_POS) /* FB$POS Position magtape after last-closed file */ #define FAB$M_DLK (1 << FAB$V_DLK) /* FB$DLK No file locking on abnormal close */ #define FAB$M_JNL (1 << FAB$V_JNL) /* FB$JNL Explicit logging */ #define FAB$M_ACK (1 << FAB$V_ACK) /* FB$ACK Verify file attributes */ #define FAB$M_CTG (1 << FAB$V_CTG) /* FB$CTG Contiguous file */ #define FAB$M_SUP (1 << FAB$V_SUP) /* FB$SUP Supersede existing file */ #define FAB$M_NEF (1 << FAB$V_NEF) /* FB$NEF No end-of-file magtape positioning */ #define FAB$M_TMP (1 << FAB$V_TMP) /* FB$TMP Temporary file */ #define FAB$M_MKD (1 << FAB$V_MKD) /* FB$MKD Mark file for deletion */ #define FAB$M_TMD (FAB$M_TMP | FAB$M_MKD) /* FB$TMD Temporary file, mark for deletion */ #define FAB$M_FID (1 << FAB$V_FID) /* FB$FID Use information in NAM block */ #define FAB$M_DFW (1 << FAB$V_DFW) /* FB$DFW Defer writing */ #define FAB$M_NOA (1 << FAB$V_NOA) /* FB$NOA Perform local open/create with no RMS */ #define FAB$V_RWO (00) #define FAB$V_RWC (01) #define FAB$V_WAT (02) #define FAB$V_POS (03) #define FAB$V_DLK (04) #define FAB$V_JNL (05) #define FAB$V_ACK (06) #define FAB$V_CTG (07) #define FAB$V_SUP (010) #define FAB$V_NEF (011) #define FAB$V_TMP (012) #define FAB$V_MKD (013) #define FAB$V_FID (014) #define FAB$V_DFW (015) #define FAB$V_NOA (016) #define FAB$B_RTV (024) #define FAB$B_ORG (025) #define FAB$C_SEQ (00) #define FAB$S_ORG (04) #define FAB$V_ORG (04) #define FAB$C_REL (01 << FAB$V_ORG) /* FB$REL Relative file organization */ #define FAB$C_IDX (02 << FAB$V_ORG) /* FB$IDX Indexed file organization */ #define FAB$C_HSH (03 << FAB$V_ORG) /* FB$HSH Hashed file organization */ #define FAB$C_DBM (04 << FAB$V_ORG) /* FB$DBM Data base file */ #define FAB$C_FMX (0100) #define FAB$B_RAT (026) #define FAB$M_FTN (1 << FAB$V_FTN) /* FB$FTN FORTRAN-style carriage-control character in record */ #define FAB$M_CR (1 << FAB$V_CR) /* FB$CR Add CRLF to print record LF-record-CR */ #define FAB$M_PRN (1 << FAB$V_PRN) /* FB$PRN VFC print record handling */ #define FAB$M_BLK (1 << FAB$V_BLK) /* FB$BLK Blocked records */ #define FAB$V_FTN (00) #define FAB$V_CR (01) #define FAB$V_PRN (02) #define FAB$V_BLK (03) #define FAB$B_RFM (027) #define FAB$C_UDF (00) #define FAB$C_FIX (01) #define FAB$C_VAR (02) #define FAB$C_VFC (03) #define FAB$C_STM (04) #define FAB$L_XAB (030) #define FAB$L_BPA (032) #define FAB$W_BPS (034) #define FAB$W_MRS (036) #define FAB$L_MRN (040) #define FAB$L_MRN0 (040) #define FAB$L_MRN1 (042) #define FAB$W_LRL (044) #define FAB$L_NAM (046) #define FAB$L_FNA (050) #define FAB$L_DNA (052) #define FAB$B_FNS (054) #define FAB$B_DNS (055) #define FAB$W_BLS (056) #define FAB$B_FSZ (060) #define FAB$B_BKS (061) #define FAB$B_DEV (062) #define FAB$M_REC (1 << FAB$V_REC) /* FB$REC Record-oriented device */ #define FAB$M_CCL (1 << FAB$V_CCL) /* FB$CCL Carriage control device */ #define FAB$M_TRM (1 << FAB$V_TRM) /* FB$TRM Terminal device */ #define FAB$M_MDI (1 << FAB$V_MDI) /* FB$MDI Multidirectory device */ #define FAB$M_SDI (1 << FAB$V_SDI) /* FB$SDI Single-directory device */ #define FAB$M_SQD (1 << FAB$V_SQD) /* FB$SQD Sequential device */ #define FAB$V_REC (00) #define FAB$V_CCL (01) #define FAB$V_TRM (02) #define FAB$V_MDI (03) #define FAB$V_SDI (04) #define FAB$V_SQD (05) #define FAB$B_LCH (063) struct FAB { unsigned char fab$b_bid; unsigned char fab$b_bln; /* Fab Length in bytes */ unsigned short fab$w_ctx; /* User context */ unsigned short fab$w_ifi; /* Internal file identifier */ unsigned short fab$w_sts; /* Completion status code */ unsigned short fab$w_stv; /* Completion status value */ unsigned long fab$l_alq; /* File allocation size (blocks) */ unsigned short fab$w_deq; /* File default extension size (blocks) */ unsigned char fab$b_fac; /* Requested access mask */ unsigned char fab$b_shr; unsigned short fab$w_fop; /* File processing option mask */ unsigned char fab$b_rtv; /* Retrieval pointer count */ unsigned char fab$b_org; /* File organization code */ unsigned char fab$b_rat; /* Record handling mask */ unsigned char fab$b_rfm; /* Record format code */ char *fab$l_xab; /* XAB address */ char *fab$l_bpa; /* Private buffer pool address */ unsigned short fab$w_bps; /* Private buffer pool size (bytes) */ unsigned short fab$w_mrs; /* Maximum record size (bytes) */ unsigned long fab$l_mrn; /* Maximum record number */ unsigned short fab$w_lrl; /* Longest record length */ struct NAM *fab$l_nam; /* NAM block address */ char *fab$l_fna; /* File string address */ char *fab$l_dna; /* Default string address */ unsigned char fab$b_fns; /* File string size (bytes) */ unsigned char fab$b_dns; /* Default string size (bytes) */ unsigned short fab$w_bls; /* Magtape block size (characters) */ unsigned char fab$b_fsz; /* Fixed control area size for VFC records (bytes) */ unsigned char fab$b_bks; /* File bucket size (blocks) */ unsigned char fab$b_dev; /* Device characteristics mask */ unsigned char fab$b_lch; /* Logical channel number */ unsigned short fab$reserved[14]; /* Reserved */ }; /* The struct definition which follows this comment defines cc$rms_fab as an instance of a FAB 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_fab: #define RMS_FAB$PROTOTYPE The definition must appear before the #include statement. */ #ifdef RMS_FAB$PROTOTYPE #define cc$rms_fab CC$FAB /* 6 chars for TKB, cc$rms_fab for VMS compatibility */ extern struct FAB cc$rms_fab; /* Declare initialized prototype data structure */ #endif #endif