--******************************************************************************************************************** -- Created: 30-Mar-2010 17:33:41 by OpenVMS SDL EV3-3 -- Source: 16-MAR-2004 10:05:21 $1$DGA7274:[LIB_ADA.LIS]FCBDEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package FCBDEF is -- module $FCBDEF --+ -- FCB - FILE CONTROL BLOCK -- -- THERE IS ONE FILE CONTROL BLOCK FOR EACH UNIQUELY ACCESSED FILE ON A -- VOLUME. THE FILE CONTROL BLOCK PROVIDES THE VEHICLE WHEREBY SHARED -- ACCESS TO A FILE MAY BE CONTROLLED. -- Note LBN and volume size related fields have been promoted to quadwords. -- ODS-II/V will never support volumes larger than 1TB; the promotions are -- in anticipation of a new file system that will use the FCB in common. --- FCB_M_FILE_ATTRIBUTES : constant := 16#0000000F#; FCB_M_FILE_CONTENTS : constant := 16#000000F0#; FCB_M_FLUSH_ON_CLOSE : constant := 16#00000F00#; FCB_M_CACHING_OPTIONS_MBZ : constant := 16#FFFFF000#; FCB_C_DEFAULT : constant := 0; -- Use default caching policy FCB_C_WRITETHROUGH : constant := 1; -- Use writethrough caching FCB_C_WRITEBEHIND : constant := 2; -- Use writebehind caching FCB_C_NOCACHING : constant := 3; -- Do not cache file FCB_C_FLUSH : constant := 1; -- Flush file from cache when file closed FCB_C_NOFLUSH : constant := 2; -- Retain file in cache when file closed FCB_M_VCC_STATE : constant := 16#00000007#; FCB_K_LENGTH : constant := 376; -- LENGTH OF STANDARD FCB FCB_C_LENGTH : constant := 376; -- LENGTH OF STANDARD FCB FCB_S_FCBDEF : constant := 376; -- Old size name - synonym type FCB_STATUS_BITS_TYPE is record DIR : BOOLEAN; -- FCB IS A DIRECTORY LRU ENTRY MARKDEL : BOOLEAN; -- FILE IS MARKED FOR DELETE BADBLK : BOOLEAN; -- BAD BLOCK ENCOUNTERED IN FILE EXCL : BOOLEAN; -- FILE IS EXCLUSIVELY ACCESSED SPOOL : BOOLEAN; -- FILE IS AN INTERMEDIATE SPOOL FILE RMSLOCK : BOOLEAN; -- FILE IS OPEN WITH RMS RECORD LOCKING ERASE : BOOLEAN; -- ERASE DATA WHEN BLOCKS REMOVED FROM FILE BADACL : BOOLEAN; -- ACL IS CORRUPT STALE : BOOLEAN; -- Reconstruct FCB from header. DELAYTRNC : BOOLEAN; -- Delay truncation. LIMBO : BOOLEAN; -- FCB is linked into the LIMBO queue ISDIR : BOOLEAN; -- This FCB is a directory FCB NOMOVE : BOOLEAN; -- This file is NOT to be MOVEFILE'ed SHELVED : BOOLEAN; -- This file is shelved NOSHELVABLE : BOOLEAN; -- This file is NOT to be SHELVED'ed PRESHELVED : BOOLEAN; -- This file has been shelved, but -- the data has not been erased from disk end record; for FCB_STATUS_BITS_TYPE use record DIR at 0 range 0 .. 0; MARKDEL at 0 range 1 .. 1; BADBLK at 0 range 2 .. 2; EXCL at 0 range 3 .. 3; SPOOL at 0 range 4 .. 4; RMSLOCK at 0 range 5 .. 5; ERASE at 0 range 6 .. 6; BADACL at 0 range 7 .. 7; STALE at 1 range 0 .. 0; DELAYTRNC at 1 range 1 .. 1; LIMBO at 1 range 2 .. 2; ISDIR at 1 range 3 .. 3; NOMOVE at 1 range 4 .. 4; SHELVED at 1 range 5 .. 5; NOSHELVABLE at 1 range 6 .. 6; PRESHELVED at 1 range 7 .. 7; end record; for FCB_STATUS_BITS_TYPE'SIZE use 16; FCB_STATUS_BITS_TYPE_INIT : constant FCB_STATUS_BITS_TYPE := (DIR => FALSE, MARKDEL => FALSE, BADBLK => FALSE, EXCL => FALSE, SPOOL => FALSE, RMSLOCK => FALSE, ERASE => FALSE, BADACL => FALSE, STALE => FALSE, DELAYTRNC => FALSE, LIMBO => FALSE, ISDIR => FALSE, NOMOVE => FALSE, SHELVED => FALSE, NOSHELVABLE => FALSE, PRESHELVED => FALSE); type FCB_FID_RVN_TYPE is -- RELATIVE VOLUME NUMBER record FID_RVN : UNSIGNED_BYTE; -- SHORT FORM RVN FID_NMX : UNSIGNED_BYTE; -- EXTENDED FILE NUMBER end record; for FCB_FID_RVN_TYPE use record FID_RVN at 0 range 0 .. 7; FID_NMX at 1 range 0 .. 7; end record; for FCB_FID_RVN_TYPE'SIZE use 16; FCB_FID_RVN_TYPE_INIT : constant FCB_FID_RVN_TYPE := (FID_RVN => 0, FID_NMX => 0); type FCB_FID_ISO_9660_FIELDS_TYPE is -- File ID fields for ISO 9660 record FID_DIRNUM : UNSIGNED_WORD; -- Directory number of File-Id FID_RECNUM : UNSIGNED_LONGWORD; -- Record number of File-ID end record; for FCB_FID_ISO_9660_FIELDS_TYPE use record FID_DIRNUM at 0 range 0 .. 15; FID_RECNUM at 2 range 0 .. 31; end record; for FCB_FID_ISO_9660_FIELDS_TYPE'SIZE use 48; FCB_FID_ISO_9660_FIELDS_TYPE_INIT : constant FCB_FID_ISO_9660_FIELDS_TYPE := (FID_DIRNUM => 0, FID_RECNUM => 0); type FCB_FID_COMPONENT_TYPE is -- FILE IDENTIFICATION record FID_NUM : UNSIGNED_WORD; -- FILE NUMBER FID_SEQ : UNSIGNED_WORD; -- FILE SEQUENCE NUMBER FID_RVN : FCB_FID_RVN_TYPE; -- RELATIVE VOLUME NUMBER ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FID_ISO_9660_FIELDS : FCB_FID_ISO_9660_FIELDS_TYPE; -- File ID fields for ISO 9660 end record; for FCB_FID_COMPONENT_TYPE use record FID_NUM at 0 range 0 .. 15; FID_SEQ at 2 range 0 .. 15; FID_RVN at 4 range 0 .. 15; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FID_ISO_9660_FIELDS at 0 range 0 .. 47; end record; for FCB_FID_COMPONENT_TYPE'SIZE use 48; FCB_FID_COMPONENT_TYPE_INIT : constant FCB_FID_COMPONENT_TYPE := (FID_NUM => 0, FID_SEQ => 0, FID_RVN => FCB_FID_RVN_TYPE_INIT ); TYPE FCB_FID_TYPE is ARRAY (1 .. 3) of FCB_FID_COMPONENT_TYPE; FCB_FID_TYPE_INIT : constant FCB_FID_TYPE := ( others => FCB_FID_COMPONENT_TYPE_INIT); type FCB_LIMBOQHD_TYPE is -- LIMBO queue header record LIMBOFL : ADDRESS; -- Highwater mark update queue LIMBOBL : ADDRESS; -- Highwater mark update queue end record; for FCB_LIMBOQHD_TYPE use record LIMBOFL at 0 range 0 .. 31; LIMBOBL at 4 range 0 .. 31; end record; for FCB_LIMBOQHD_TYPE'SIZE use 64; FCB_LIMBOQHD_TYPE_INIT : constant FCB_LIMBOQHD_TYPE := (LIMBOFL => ADDRESS_ZERO, LIMBOBL => ADDRESS_ZERO); type FCB_QUEUE_OVERLAY_TYPE is record HWM_WAITFL : ADDRESS; -- Highwater mark update queue HWM_WAITBL : ADDRESS; -- Highwater mark update queue ----Component(s) below are defined as comments since they ----overlap other fields ---- ----LIMBOQHD : FCB_LIMBOQHD_TYPE; -- LIMBO queue header end record; for FCB_QUEUE_OVERLAY_TYPE use record HWM_WAITFL at 0 range 0 .. 31; HWM_WAITBL at 4 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----LIMBOQHD at 0 range 0 .. 63; end record; for FCB_QUEUE_OVERLAY_TYPE'SIZE use 64; FCB_QUEUE_OVERLAY_TYPE_INIT : constant FCB_QUEUE_OVERLAY_TYPE := (HWM_WAITFL => ADDRESS_ZERO, HWM_WAITBL => ADDRESS_ZERO); type FCB_FILEOWNER_TYPE is -- FILE OWNER UIC record UICMEMBER : UNSIGNED_WORD; -- MEMBER NUMBER UICGROUP : UNSIGNED_WORD; -- GROUP NUMBER end record; for FCB_FILEOWNER_TYPE use record UICMEMBER at 0 range 0 .. 15; UICGROUP at 2 range 0 .. 15; end record; for FCB_FILEOWNER_TYPE'SIZE use 32; FCB_FILEOWNER_TYPE_INIT : constant FCB_FILEOWNER_TYPE := (UICMEMBER => 0, UICGROUP => 0); type FCB_SYS_PROT_TYPE is -- Protection word/vector record FILEPROT : UNSIGNED_WORD; -- FILE PROTECTION MASK FILLER_1 : UNSIGNED_WORD; end record; for FCB_SYS_PROT_TYPE use record FILEPROT at 0 range 0 .. 15; FILLER_1 at 2 range 0 .. 15; end record; for FCB_SYS_PROT_TYPE'SIZE use 32; FCB_SYS_PROT_TYPE_INIT : constant FCB_SYS_PROT_TYPE := (FILEPROT => 0, FILLER_1 => 0); type FCB_MIN_CLASS_PROT_TYPE is -- Minimum security classification mask record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 20); -- see structure $CLSDEF end record; for FCB_MIN_CLASS_PROT_TYPE use record FILLER_1 at 0 range 0 .. 159; end record; for FCB_MIN_CLASS_PROT_TYPE'SIZE use 160; FCB_MIN_CLASS_PROT_TYPE_INIT : constant FCB_MIN_CLASS_PROT_TYPE := (FILLER_1 => (others => 0)); type FCB_MAX_CLASS_PROT_TYPE is -- Maximum security classification mask record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 20); -- see structure $CLSDEF end record; for FCB_MAX_CLASS_PROT_TYPE use record FILLER_1 at 0 range 0 .. 159; end record; for FCB_MAX_CLASS_PROT_TYPE'SIZE use 160; FCB_MAX_CLASS_PROT_TYPE_INIT : constant FCB_MAX_CLASS_PROT_TYPE := (FILLER_1 => (others => 0)); type FCB_ORB_TYPE is -- Object's Rights Block record FILEOWNER : FCB_FILEOWNER_TYPE; -- FILE OWNER UIC FILLER_1 : UNSIGNED_LONGWORD; -- ACL mutex FILLER_2 : UNSIGNED_LONGWORD; -- Structure size & type FILLER_3 : UNSIGNED_LONGWORD; -- Spare + ref count ACMODE : UNSIGNED_QUADWORD; -- Access mode protection vector SYS_PROT : FCB_SYS_PROT_TYPE; -- Protection word/vector OWN_PROT : UNSIGNED_LONGWORD; -- Owner protection GRP_PROT : UNSIGNED_LONGWORD; -- Group protection WOR_PROT : UNSIGNED_LONGWORD; -- World protection ACLFL : ADDRESS; -- ACCESS CONTROL LIST FORWARD LINK ACLBL : ADDRESS; -- ACCESS CONTROL LIST BACKWARD LINK MIN_CLASS_PROT : FCB_MIN_CLASS_PROT_TYPE; -- Minimum security classification mask MAX_CLASS_PROT : FCB_MAX_CLASS_PROT_TYPE; -- Maximum security classification mask FILLER_4 : UNSIGNED_WORD; FILLER_5 : UNSIGNED_WORD; FILLER_6 : ADDRESS; FILLER_7 : ADDRESS; FILLER_8 : ADDRESS; FILLER_9 : UNSIGNED_LONGWORD; FILLER_10 : ADDRESS; FILLER_11 : UNSIGNED_LONGWORD; FILLER_12 : ADDRESS; -- Address of mutex for CHKPRO FILLER_13 : UNSIGNED_LONGWORD; end record; for FCB_ORB_TYPE use record FILEOWNER at 0 range 0 .. 31; FILLER_1 at 4 range 0 .. 31; FILLER_2 at 8 range 0 .. 31; FILLER_3 at 12 range 0 .. 31; ACMODE at 16 range 0 .. 63; SYS_PROT at 24 range 0 .. 31; OWN_PROT at 28 range 0 .. 31; GRP_PROT at 32 range 0 .. 31; WOR_PROT at 36 range 0 .. 31; ACLFL at 40 range 0 .. 31; ACLBL at 44 range 0 .. 31; MIN_CLASS_PROT at 48 range 0 .. 159; MAX_CLASS_PROT at 68 range 0 .. 159; FILLER_4 at 88 range 0 .. 15; FILLER_5 at 90 range 0 .. 15; FILLER_6 at 92 range 0 .. 31; FILLER_7 at 96 range 0 .. 31; FILLER_8 at 100 range 0 .. 31; FILLER_9 at 104 range 0 .. 31; FILLER_10 at 108 range 0 .. 31; FILLER_11 at 112 range 0 .. 31; FILLER_12 at 116 range 0 .. 31; FILLER_13 at 120 range 0 .. 31; end record; for FCB_ORB_TYPE'SIZE use 992; FCB_ORB_TYPE_INIT : constant FCB_ORB_TYPE := ( FILEOWNER => FCB_FILEOWNER_TYPE_INIT, FILLER_1 => 0, FILLER_2 => 0, FILLER_3 => 0, ACMODE => (0, 0), SYS_PROT => FCB_SYS_PROT_TYPE_INIT, OWN_PROT => 0, GRP_PROT => 0, WOR_PROT => 0, ACLFL => ADDRESS_ZERO, ACLBL => ADDRESS_ZERO, MIN_CLASS_PROT => FCB_MIN_CLASS_PROT_TYPE_INIT, MAX_CLASS_PROT => FCB_MAX_CLASS_PROT_TYPE_INIT, FILLER_4 => 0, FILLER_5 => 0, FILLER_6 => ADDRESS_ZERO, FILLER_7 => ADDRESS_ZERO, FILLER_8 => ADDRESS_ZERO, FILLER_9 => 0, FILLER_10 => ADDRESS_ZERO, FILLER_11 => 0, FILLER_12 => ADDRESS_ZERO, FILLER_13 => 0); type FCB_CACHING_OPTIONS_TYPE is record FILE_ATTRIBUTES : UNSIGNED_4; -- File attributes caching field FILE_CONTENTS : UNSIGNED_4; -- File contents caching field FLUSH_ON_CLOSE : UNSIGNED_4; -- Flush file on close field CACHING_OPTIONS_MBZ : UNSIGNED_20; -- Must be zero end record; for FCB_CACHING_OPTIONS_TYPE use record FILE_ATTRIBUTES at 0 range 0 .. 3; FILE_CONTENTS at 0 range 4 .. 7; FLUSH_ON_CLOSE at 1 range 0 .. 3; CACHING_OPTIONS_MBZ at 1 range 4 .. 23; end record; for FCB_CACHING_OPTIONS_TYPE'SIZE use 32; FCB_CACHING_OPTIONS_TYPE_INIT : constant FCB_CACHING_OPTIONS_TYPE := (FILE_ATTRIBUTES => 0, FILE_CONTENTS => 0, FLUSH_ON_CLOSE => 0, CACHING_OPTIONS_MBZ => 0); type FCB_STATUS2_TYPE is -- Additional file status record VCC_STATE : UNSIGNED_3; -- Replicated caching attribute (see FH2DEF) FILLER_1 : UNSIGNED_29; end record; for FCB_STATUS2_TYPE use record VCC_STATE at 0 range 0 .. 2; FILLER_1 at 0 range 3 .. 31; end record; for FCB_STATUS2_TYPE'SIZE use 32; FCB_STATUS2_TYPE_INIT : constant FCB_STATUS2_TYPE := (VCC_STATE => 0, FILLER_1 => 0); type FCB_TYPE is record FCBFL : ADDRESS; -- FCB LIST FORWARD LINK FCBBL : ADDRESS; -- FCB LIST BACKWARD LINK SIZE : UNSIGNED_WORD; -- SIZE OF FCB IN BYTES TYP : UNSIGNED_BYTE; -- STRUCTURE TYPE OF FCB ACCLKMODE : UNSIGNED_BYTE; -- Access lock mode. EXFCB : ADDRESS; -- ADDRESS OF EXTENSION FCB PRIMFCB : ADDRESS; -- Pointer to Primary FCB if -- this is an extension FCB -- else zero ORB : ADDRESS; -- Address of file ORB WLFL : ADDRESS; -- WINDOW LISTHEAD FORWARD LINK WLBL : ADDRESS; -- WINDOW LISTHEAD BACKWARD LINK REFCNT : UNSIGNED_LONGWORD; -- Total references to this FCB. ACNT : UNSIGNED_LONGWORD; -- FILE ACCESS COUNT WCNT : UNSIGNED_LONGWORD; -- FILE WRITER COUNT LCNT : UNSIGNED_LONGWORD; -- FILE LOCK COUNT TCNT : UNSIGNED_LONGWORD; -- COUNT OF TRUNCATE LOCKS STATUS : UNSIGNED_LONGWORD; -- FILE STATUS ----Component(s) below are defined as comments since they ----overlap other fields ---- ----STATUS_BITS : FCB_STATUS_BITS_TYPE; OPENTIME : UNSIGNED_QUADWORD; -- Creation time of FCB READS : UNSIGNED_LONGWORD; -- Total count of read I/Os WRITES : UNSIGNED_LONGWORD; -- Total count of write I/Os SPLIT_IO : UNSIGNED_LONGWORD; -- Total count of split I/Os ASSIST_IO : UNSIGNED_LONGWORD; -- Total count of file system assisted I/Os FID : FCB_FID_COMPONENT_TYPE; -- FILE IDENTIFICATION SEGN : UNSIGNED_WORD; -- FILE SEGMENT NUMBER STVBN : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----STVBN : UNSIGNED_LONGWORD; STLBN : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----STLBN : UNSIGNED_LONGWORD; HDLBN : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----HDLBN : UNSIGNED_LONGWORD; FILESIZE : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FILESIZE : UNSIGNED_LONGWORD; EFBLK : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----EFBLK : UNSIGNED_LONGWORD; VERSIONS : UNSIGNED_LONGWORD; -- MAXIMUM NUMBER OF VERSIONS IN DIRECTORY DIRSEQ : UNSIGNED_LONGWORD; -- DIRECTORY USE SEQUENCE NUMBER DIRINDX : UNSIGNED_LONGWORD; -- Directory index pointer ACCLKID : UNSIGNED_LONGWORD; -- Access lock ID. LOCKBASIS : UNSIGNED_LONGWORD; -- Lock basis for this FCB. TRUNCVBN : UNSIGNED_LONGWORD; -- VBN for delayed truncation. (Files-11 B) ----Component(s) below are defined as comments since they ----overlap other fields ---- ----NUMEXTENTS : UNSIGNED_LONGWORD; -- Number of extents recorded (Files-11 C/D) CACHELKID : UNSIGNED_LONGWORD; -- Cache interlock lock ID DIRLCKID : UNSIGNED_LONGWORD; -- Support for directory cache invalidation HIGHWATER : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----HIGHWATER : UNSIGNED_LONGWORD; NEWHIGHWATER : UNSIGNED_QUADWORD; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----NEWHIGHWATER : UNSIGNED_LONGWORD; HWM_UPDATE : UNSIGNED_LONGWORD; -- Count of writes past highwater mark HWM_ERASE : UNSIGNED_LONGWORD; -- Count of writes starting past highwater mark HWM_PARTIAL : UNSIGNED_LONGWORD; -- Count of partially validated erase operations REVISION : UNSIGNED_LONGWORD; -- File revision QUEUE_OVERLAY : FCB_QUEUE_OVERLAY_TYPE; -- -- NOTA BENE: -- -- The following is an embedded ORB. This structure should only be referenced -- through the FCB$L_ORB pointer (using ORB$ field names). The existing (FCB) -- fields are left for source code and binary compatibility in privileged -- software that thinks it knows what an FCB and its ORB look like. -- -- Third-party developers would be well advised to remove all references to -- these FCB symbols as soon as possible. You have been warned! -- ORB : FCB_ORB_TYPE; -- Object's Rights Block FILLER_1 : UNSIGNED_LONGWORD; -- Pad to quadword FILLER_2 : UNSIGNED_QUADWORD; -- Reserved for ORB expansion -- -- End of embedded ORB -- -- -- Define fields and constant values for FCB$L_CACHING_OPTIONS -- longword. These must match [STARLET]FIBDEF.SDL exactly. -- CACHING_OPTIONS : FCB_CACHING_OPTIONS_TYPE; STATUS2 : FCB_STATUS2_TYPE; -- Additional file status CFB : UNSIGNED_QUADWORD; CFCB : ADDRESS; -- VBN Cache pointer FILLER_3 : UNSIGNED_LONGWORD; -- Pad to quadword ACCDATE : UNSIGNED_QUADWORD; -- access date MODDATE : UNSIGNED_QUADWORD; -- modification date end record; for FCB_TYPE use record FCBFL at 0 range 0 .. 31; FCBBL at 4 range 0 .. 31; SIZE at 8 range 0 .. 15; TYP at 10 range 0 .. 7; ACCLKMODE at 11 range 0 .. 7; EXFCB at 12 range 0 .. 31; PRIMFCB at 16 range 0 .. 31; ORB at 20 range 0 .. 31; WLFL at 24 range 0 .. 31; WLBL at 28 range 0 .. 31; REFCNT at 32 range 0 .. 31; ACNT at 36 range 0 .. 31; WCNT at 40 range 0 .. 31; LCNT at 44 range 0 .. 31; TCNT at 48 range 0 .. 31; STATUS at 52 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----STATUS_BITS at 52 range 0 .. 15; OPENTIME at 56 range 0 .. 63; READS at 64 range 0 .. 31; WRITES at 68 range 0 .. 31; SPLIT_IO at 72 range 0 .. 31; ASSIST_IO at 76 range 0 .. 31; FID at 80 range 0 .. 47; SEGN at 86 range 0 .. 15; STVBN at 88 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----STVBN at 88 range 0 .. 31; STLBN at 96 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----STLBN at 96 range 0 .. 31; HDLBN at 104 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----HDLBN at 104 range 0 .. 31; FILESIZE at 112 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FILESIZE at 112 range 0 .. 31; EFBLK at 120 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----EFBLK at 120 range 0 .. 31; VERSIONS at 128 range 0 .. 31; DIRSEQ at 132 range 0 .. 31; DIRINDX at 136 range 0 .. 31; ACCLKID at 140 range 0 .. 31; LOCKBASIS at 144 range 0 .. 31; TRUNCVBN at 148 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----NUMEXTENTS at 148 range 0 .. 31; CACHELKID at 152 range 0 .. 31; DIRLCKID at 156 range 0 .. 31; HIGHWATER at 160 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----HIGHWATER at 160 range 0 .. 31; NEWHIGHWATER at 168 range 0 .. 63; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----NEWHIGHWATER at 168 range 0 .. 31; HWM_UPDATE at 176 range 0 .. 31; HWM_ERASE at 180 range 0 .. 31; HWM_PARTIAL at 184 range 0 .. 31; REVISION at 188 range 0 .. 31; QUEUE_OVERLAY at 192 range 0 .. 63; ORB at 200 range 0 .. 991; FILLER_1 at 324 range 0 .. 31; FILLER_2 at 328 range 0 .. 63; CACHING_OPTIONS at 336 range 0 .. 31; STATUS2 at 340 range 0 .. 31; CFB at 344 range 0 .. 63; CFCB at 352 range 0 .. 31; FILLER_3 at 356 range 0 .. 31; ACCDATE at 360 range 0 .. 63; MODDATE at 368 range 0 .. 63; end record; for FCB_TYPE'SIZE use 3008; FCB_TYPE_INIT : constant FCB_TYPE := (FCBFL => ADDRESS_ZERO, FCBBL => ADDRESS_ZERO, SIZE => 0, TYP => 0, ACCLKMODE => 0, EXFCB => ADDRESS_ZERO, PRIMFCB => ADDRESS_ZERO, ORB => ADDRESS_ZERO, WLFL => ADDRESS_ZERO, WLBL => ADDRESS_ZERO, REFCNT => 0, ACNT => 0, WCNT => 0, LCNT => 0, TCNT => 0, STATUS => 0, OPENTIME => (0, 0), READS => 0, WRITES => 0, SPLIT_IO => 0, ASSIST_IO => 0, FID => FCB_FID_COMPONENT_TYPE_INIT, SEGN => 0, STVBN => (0, 0), STLBN => (0, 0), HDLBN => (0, 0), FILESIZE => (0, 0), EFBLK => (0, 0), VERSIONS => 0, DIRSEQ => 0, DIRINDX => 0, ACCLKID => 0, LOCKBASIS => 0, TRUNCVBN => 0, CACHELKID => 0, DIRLCKID => 0, HIGHWATER => (0, 0), NEWHIGHWATER => (0, 0), HWM_UPDATE => 0, HWM_ERASE => 0, HWM_PARTIAL => 0, REVISION => 0, QUEUE_OVERLAY => FCB_QUEUE_OVERLAY_TYPE_INIT, ORB => FCB_ORB_TYPE_INIT, FILLER_1 => 0, FILLER_2 => (0, 0), CACHING_OPTIONS => FCB_CACHING_OPTIONS_TYPE_INIT, STATUS2 => FCB_STATUS2_TYPE_INIT, CFB => (0, 0), CFCB => ADDRESS_ZERO, FILLER_3 => 0, ACCDATE => (0, 0), MODDATE => (0, 0)); end FCBDEF;