-- --**************************************************************************** --* * --* Copyright (c) 2001 * --* by DIGITAL Equipment Corporation, Maynard, Mass. * --* * --* 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 or any other * --* copies thereof may not be provided or otherwise made available to any * --* other person. No title to and ownership of the software is hereby * --* transferred. * --* * --* The information in this software is subject to change without notice * --* and should not be construed as a commitment by DIGITAL Equipment * --* Corporation. * --* * --* DIGITAL assumes no responsibility for the use or reliability of its * --* software on equipment which is not supplied by DIGITAL. * --* * --**************************************************************************** --******************************************************************************************************************** -- Created: 15-MAR-2001 22:51:57 by OpenVMS SDL EV1-33 -- Source: 9-MAY-1997 06:51:30 $11$DUA933:[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. --- 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 := 296; -- LENGTH OF STANDARD FCB FCB_C_LENGTH : constant := 296; -- LENGTH OF STANDARD FCB type FCB_STATUS_TYPE is -- FILE STATUS 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 shouldn't ever be shelved PRESHELVED : BOOLEAN; -- This file has been shelved, but -- the data has not been erased from disk end record; for FCB_STATUS_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_TYPE'SIZE use 16; FCB_STATUS_TYPE_INIT : constant FCB_STATUS_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 : UNSIGNED_LONGWORD; -- Highwater mark update queue LIMBOBL : UNSIGNED_LONGWORD; -- 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 => 0, LIMBOBL => 0); type FCB_QUEUE_OVERLAY_TYPE is record HWM_WAITFL : UNSIGNED_LONGWORD; -- Highwater mark update queue HWM_WAITBL : UNSIGNED_LONGWORD; -- 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 => 0, HWM_WAITBL => 0); 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 : UNSIGNED_LONGWORD; -- ACCESS CONTROL LIST FORWARD LINK ACLBL : UNSIGNED_LONGWORD; -- 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 : UNSIGNED_LONGWORD; FILLER_7 : UNSIGNED_LONGWORD; FILLER_8 : UNSIGNED_LONGWORD; FILLER_9 : UNSIGNED_LONGWORD; FILLER_10 : UNSIGNED_LONGWORD; FILLER_11 : UNSIGNED_WORD; FILLER_12 : UNSIGNED_WORD; FILLER_13 : UNSIGNED_LONGWORD; FILLER_14 : 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 .. 15; FILLER_12 at 114 range 0 .. 15; FILLER_13 at 116 range 0 .. 31; FILLER_14 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 => 0, ACLBL => 0, 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 => 0, FILLER_7 => 0, FILLER_8 => 0, FILLER_9 => 0, FILLER_10 => 0, FILLER_11 => 0, FILLER_12 => 0, FILLER_13 => 0, FILLER_14 => 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_FILL_10_COMPONENT_TYPE is -- ORB expansion space record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 24); -- Add new fields at end of expansion space CFB : UNSIGNED_QUADWORD; CACHING_OPTIONS : FCB_CACHING_OPTIONS_TYPE; STATUS2 : FCB_STATUS2_TYPE; -- Additional file status end record; for FCB_FILL_10_COMPONENT_TYPE use record FILLER_1 at 0 range 0 .. 191; CFB at 24 range 0 .. 63; CACHING_OPTIONS at 32 range 0 .. 31; STATUS2 at 36 range 0 .. 31; end record; for FCB_FILL_10_COMPONENT_TYPE'SIZE use 320; FCB_FILL_10_COMPONENT_TYPE_INIT : constant FCB_FILL_10_COMPONENT_TYPE := (FILLER_1 => (others => 0), CFB => (0, 0), CACHING_OPTIONS => FCB_CACHING_OPTIONS_TYPE_INIT, STATUS2 => FCB_STATUS2_TYPE_INIT ); TYPE FCB_FILL_10_TYPE is ARRAY (1 .. 40) of FCB_FILL_10_COMPONENT_TYPE; FCB_FILL_10_TYPE_INIT : constant FCB_FILL_10_TYPE := ( others => FCB_FILL_10_COMPONENT_TYPE_INIT); type FCB_TYPE is record FCBFL : UNSIGNED_LONGWORD; -- FCB LIST FORWARD LINK FCBBL : UNSIGNED_LONGWORD; -- 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 : UNSIGNED_LONGWORD; -- ADDRESS OF EXTENSION FCB WLFL : UNSIGNED_LONGWORD; -- WINDOW LISTHEAD FORWARD LINK WLBL : UNSIGNED_LONGWORD; -- WINDOW LISTHEAD BACKWARD LINK REFCNT : UNSIGNED_WORD; -- Total references to this FCB. ACNT : UNSIGNED_WORD; -- FILE ACCESS COUNT WCNT : UNSIGNED_WORD; -- FILE WRITER COUNT LCNT : UNSIGNED_WORD; -- FILE LOCK COUNT TCNT : UNSIGNED_WORD; -- COUNT OF TRUNCATE LOCKS STATUS : FCB_STATUS_TYPE; -- FILE STATUS FID : FCB_FID_COMPONENT_TYPE; -- FILE IDENTIFICATION SEGN : UNSIGNED_WORD; -- FILE SEGMENT NUMBER STVBN : UNSIGNED_LONGWORD; -- STARTING VIRTUAL BLOCK NUMBER STLBN : UNSIGNED_LONGWORD; -- STARTING LOGICAL BLOCK NUMBER HDLBN : UNSIGNED_LONGWORD; -- LBN OF FILE HEADER FILESIZE : UNSIGNED_LONGWORD; -- FILE SIZE IN BLOCKS EFBLK : UNSIGNED_LONGWORD; -- END OF FILE VBN VERSIONS : UNSIGNED_WORD; -- MAXIMUM NUMBER OF VERSIONS IN DIRECTORY DIRINDX : UNSIGNED_LONGWORD; -- Directory index pointer DIRSEQ : UNSIGNED_WORD; -- DIRECTORY USE SEQUENCE NUMBER 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 HIGHWATER : UNSIGNED_LONGWORD; -- HIGH WATER MARK IN FILE NEWHIGHWATER : UNSIGNED_LONGWORD; -- Highwater mark of pending writes HWM_UPDATE : UNSIGNED_WORD; -- Count of writes past highwater mark HWM_ERASE : UNSIGNED_WORD; -- Count of writes starting past highwater mark HWM_PARTIAL : UNSIGNED_WORD; -- Count of partially validated erase operations REVISION : UNSIGNED_WORD; -- 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_BYTE_ARRAY (1 .. 4); -- quadword alignment -- -- This overlay must leave the following FCB$L_ORB field quadword aligned. -- Take care when changing sizes. -- FILL_10 : FCB_FILL_10_COMPONENT_TYPE; -- ORB expansion space -- -- We now return you to your regularly scheduled file control block. -- ORB : UNSIGNED_LONGWORD; -- Address of file ORB CFCB : UNSIGNED_LONGWORD; -- VBN Cache pointer DIRLCKID : UNSIGNED_LONGWORD; -- Support for directory -- cache invalidation PRIMFCB : UNSIGNED_LONGWORD; -- Pointer to Primary FCB if -- this is an extension FCB -- else zero 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; WLFL at 16 range 0 .. 31; WLBL at 20 range 0 .. 31; REFCNT at 24 range 0 .. 15; ACNT at 26 range 0 .. 15; WCNT at 28 range 0 .. 15; LCNT at 30 range 0 .. 15; TCNT at 32 range 0 .. 15; STATUS at 34 range 0 .. 15; FID at 36 range 0 .. 47; SEGN at 42 range 0 .. 15; STVBN at 44 range 0 .. 31; STLBN at 48 range 0 .. 31; HDLBN at 52 range 0 .. 31; FILESIZE at 56 range 0 .. 31; EFBLK at 60 range 0 .. 31; VERSIONS at 64 range 0 .. 15; DIRINDX at 66 range 0 .. 31; DIRSEQ at 70 range 0 .. 15; ACCLKID at 72 range 0 .. 31; LOCKBASIS at 76 range 0 .. 31; TRUNCVBN at 80 range 0 .. 31; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----NUMEXTENTS at 80 range 0 .. 31; CACHELKID at 84 range 0 .. 31; HIGHWATER at 88 range 0 .. 31; NEWHIGHWATER at 92 range 0 .. 31; HWM_UPDATE at 96 range 0 .. 15; HWM_ERASE at 98 range 0 .. 15; HWM_PARTIAL at 100 range 0 .. 15; REVISION at 102 range 0 .. 15; QUEUE_OVERLAY at 104 range 0 .. 63; ORB at 112 range 0 .. 991; FILLER_1 at 236 range 0 .. 31; FILL_10 at 240 range 0 .. 319; ORB at 280 range 0 .. 31; CFCB at 284 range 0 .. 31; DIRLCKID at 288 range 0 .. 31; PRIMFCB at 292 range 0 .. 31; end record; for FCB_TYPE'SIZE use 2368; FCB_TYPE_INIT : constant FCB_TYPE := (FCBFL => 0, FCBBL => 0, SIZE => 0, TYP => 0, ACCLKMODE => 0, EXFCB => 0, WLFL => 0, WLBL => 0, REFCNT => 0, ACNT => 0, WCNT => 0, LCNT => 0, TCNT => 0, STATUS => FCB_STATUS_TYPE_INIT, FID => FCB_FID_TYPE_INIT, SEGN => 0, STVBN => 0, STLBN => 0, HDLBN => 0, FILESIZE => 0, EFBLK => 0, VERSIONS => 0, DIRINDX => 0, DIRSEQ => 0, ACCLKID => 0, LOCKBASIS => 0, TRUNCVBN => 0, CACHELKID => 0, HIGHWATER => 0, NEWHIGHWATER => 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 => (others => 0), FILL_10 => FCB_FILL_10_TYPE_INIT, ORB => 0, CFCB => 0, DIRLCKID => 0, PRIMFCB => 0); end FCBDEF;