--******************************************************************************************************************** -- Created: 30-Mar-2010 17:33:39 by OpenVMS SDL EV3-3 -- Source: 14-NOV-2008 16:48:53 $1$DGA7274:[LIB_ADA.LIS]F11DEF.SDL;1 --******************************************************************************************************************** with SYSTEM; use SYSTEM; with STARLET; use STARLET; with CONDITION_HANDLING; use CONDITION_HANDLING; package F11DEF is -- module $FH1DEF FH1_C_LEVEL1 : constant := 257; -- 401 octal = structure level 1 FH1_K_LENGTH : constant := 46; -- length of header area FH1_C_LENGTH : constant := 46; -- length of header area FH1_S_FH1DEF : constant := 512; -- Old size name - synonym type FH1_FID_COMPONENT_TYPE is -- file ID record FID_NUM : UNSIGNED_WORD; -- file number FID_SEQ : UNSIGNED_WORD; -- file sequence number end record; for FH1_FID_COMPONENT_TYPE use record FID_NUM at 0 range 0 .. 15; FID_SEQ at 2 range 0 .. 15; end record; for FH1_FID_COMPONENT_TYPE'SIZE use 32; FH1_FID_COMPONENT_TYPE_INIT : constant FH1_FID_COMPONENT_TYPE := (FID_NUM => 0, FID_SEQ => 0); TYPE FH1_FID_TYPE is ARRAY (1 .. 2) of FH1_FID_COMPONENT_TYPE; FH1_FID_TYPE_INIT : constant FH1_FID_TYPE := ( others => FH1_FID_COMPONENT_TYPE_INIT); type FH1_FILEOWNER_TYPE is -- file owner UIC record UICMEMBER : UNSIGNED_BYTE; -- UIC member number UICGROUP : UNSIGNED_BYTE; -- UIC group number end record; for FH1_FILEOWNER_TYPE use record UICMEMBER at 0 range 0 .. 7; UICGROUP at 1 range 0 .. 7; end record; for FH1_FILEOWNER_TYPE'SIZE use 16; FH1_FILEOWNER_TYPE_INIT : constant FH1_FILEOWNER_TYPE := (UICMEMBER => 0, UICGROUP => 0); type FH1_FILEPROT_TYPE is -- file protection record SYSPRO : UNSIGNED_4; -- system protection OWNPRO : UNSIGNED_4; -- owner protection GROUPPRO : UNSIGNED_4; -- group protection WORLDPRO : UNSIGNED_4; -- world protection end record; for FH1_FILEPROT_TYPE use record SYSPRO at 0 range 0 .. 3; OWNPRO at 0 range 4 .. 7; GROUPPRO at 1 range 0 .. 3; WORLDPRO at 1 range 4 .. 7; end record; for FH1_FILEPROT_TYPE'SIZE use 16; FH1_FILEPROT_TYPE_INIT : constant FH1_FILEPROT_TYPE := (SYSPRO => 0, OWNPRO => 0, GROUPPRO => 0, WORLDPRO => 0); type FH1_USERCHAR_TYPE is -- user controlled characteristics record WASCONTIG : BOOLEAN; -- file was (and should be) contiguous NOBACKUP : BOOLEAN; -- file is not to be backed up FILLER_1 : BOOLEAN; -- reserved READCHECK : BOOLEAN; -- verify all read operations WRITCHECK : BOOLEAN; -- verify all write operations CONTIGB : BOOLEAN; -- keep file as contiguous as possible LOCKED : BOOLEAN; -- file is deaccess locked CONTIG : BOOLEAN; -- file is contiguous end record; for FH1_USERCHAR_TYPE use record WASCONTIG at 0 range 0 .. 0; NOBACKUP at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 2; READCHECK at 0 range 3 .. 3; WRITCHECK at 0 range 4 .. 4; CONTIGB at 0 range 5 .. 5; LOCKED at 0 range 6 .. 6; CONTIG at 0 range 7 .. 7; end record; for FH1_USERCHAR_TYPE'SIZE use 8; FH1_USERCHAR_TYPE_INIT : constant FH1_USERCHAR_TYPE := (WASCONTIG => FALSE, NOBACKUP => FALSE, FILLER_1 => FALSE, READCHECK => FALSE, WRITCHECK => FALSE, CONTIGB => FALSE, LOCKED => FALSE, CONTIG => FALSE); type FH1_SYSCHAR_TYPE is -- system controlled characteristics record FILLER_1 : UNSIGNED_4; -- reserved SPOOL : BOOLEAN; -- intermediate spool file FILLER_2 : BOOLEAN; -- reserved BADBLOCK : BOOLEAN; -- file contains bad blocks MARKDEL : BOOLEAN; -- file is marked for delete end record; for FH1_SYSCHAR_TYPE use record FILLER_1 at 0 range 0 .. 3; SPOOL at 0 range 4 .. 4; FILLER_2 at 0 range 5 .. 5; BADBLOCK at 0 range 6 .. 6; MARKDEL at 0 range 7 .. 7; end record; for FH1_SYSCHAR_TYPE'SIZE use 8; FH1_SYSCHAR_TYPE_INIT : constant FH1_SYSCHAR_TYPE := (FILLER_1 => 0, SPOOL => FALSE, FILLER_2 => FALSE, BADBLOCK => FALSE, MARKDEL => FALSE); type FH1_FILECHAR_TYPE is -- file characteristics record USERCHAR : FH1_USERCHAR_TYPE; -- user controlled characteristics SYSCHAR : FH1_SYSCHAR_TYPE; -- system controlled characteristics end record; for FH1_FILECHAR_TYPE use record USERCHAR at 0 range 0 .. 7; SYSCHAR at 1 range 0 .. 7; end record; for FH1_FILECHAR_TYPE'SIZE use 16; FH1_FILECHAR_TYPE_INIT : constant FH1_FILECHAR_TYPE := ( USERCHAR => FH1_USERCHAR_TYPE_INIT, SYSCHAR => FH1_SYSCHAR_TYPE_INIT ); type FH1_TYPE is record IDOFFSET : UNSIGNED_BYTE; -- ident area offset in words MPOFFSET : UNSIGNED_BYTE; -- map area offset in words FID : FH1_FID_COMPONENT_TYPE; -- file ID STRUCLEV : UNSIGNED_WORD; -- file structure level FILEOWNER : FH1_FILEOWNER_TYPE; -- file owner UIC FILEPROT : FH1_FILEPROT_TYPE; -- file protection FILECHAR : FH1_FILECHAR_TYPE; -- file characteristics RECATTR : UNSIGNED_WORD_ARRAY (1 .. 16); -- file record attributes FILLER_1 : UNSIGNED_WORD_ARRAY (1 .. 232); -- rest of file header CHECKSUM : UNSIGNED_WORD; -- file header checksum end record; for FH1_TYPE use record IDOFFSET at 0 range 0 .. 7; MPOFFSET at 1 range 0 .. 7; FID at 2 range 0 .. 31; STRUCLEV at 6 range 0 .. 15; FILEOWNER at 8 range 0 .. 15; FILEPROT at 10 range 0 .. 15; FILECHAR at 12 range 0 .. 15; RECATTR at 14 range 0 .. 255; FILLER_1 at 46 range 0 .. 3711; CHECKSUM at 510 range 0 .. 15; end record; for FH1_TYPE'SIZE use 4096; FH1_TYPE_INIT : constant FH1_TYPE := (IDOFFSET => 0, MPOFFSET => 0, FID => FH1_FID_COMPONENT_TYPE_INIT, STRUCLEV => 0, FILEOWNER => FH1_FILEOWNER_TYPE_INIT, FILEPROT => FH1_FILEPROT_TYPE_INIT, FILECHAR => FH1_FILECHAR_TYPE_INIT, RECATTR => (others => 0), FILLER_1 => (others => 0), CHECKSUM => 0); -- module $FI1DEF FI1_K_LENGTH : constant := 46; -- length of ident area FI1_C_LENGTH : constant := 46; -- length of ident area FI1_S_FI1DEF : constant := 286; -- Old size name - synonym type FI1_TYPE is record FILENAME : UNSIGNED_WORD_ARRAY (1 .. 3); -- file name (RAD-50) FILETYPE : UNSIGNED_WORD; -- file type (RAD-50) VERSION : UNSIGNED_WORD; -- version number (binary) REVISION : UNSIGNED_WORD; -- revision number (binary) REVDATE : STRING(1 .. 7); -- revision date (ASCII DDMMMYY) REVTIME : STRING(1 .. 6); -- revision time (ASCII HHMMSS) CREDATE : STRING(1 .. 7); -- creation date (ASCII DDMMMYY) CRETIME : STRING(1 .. 6); -- creation time (ASCII HHMMSS) EXPDATE : STRING(1 .. 7); -- expiration date (ASCII DDMMMYY) FILLER_1 : UNSIGNED_BYTE; -- dummy byte to round up MTHDR1 : STRING(1 .. 80); -- HDR1 of ANSI magnetic tape file MTHDR2 : STRING(1 .. 80); -- HDR2 of ANSI magnetic tape file MTHDR3 : STRING(1 .. 80); -- HDR3 of ANSI magnetic tape file end record; for FI1_TYPE use record FILENAME at 0 range 0 .. 47; FILETYPE at 6 range 0 .. 15; VERSION at 8 range 0 .. 15; REVISION at 10 range 0 .. 15; REVDATE at 12 range 0 .. 55; REVTIME at 19 range 0 .. 47; CREDATE at 25 range 0 .. 55; CRETIME at 32 range 0 .. 47; EXPDATE at 38 range 0 .. 55; FILLER_1 at 45 range 0 .. 7; MTHDR1 at 46 range 0 .. 639; MTHDR2 at 126 range 0 .. 639; MTHDR3 at 206 range 0 .. 639; end record; for FI1_TYPE'SIZE use 2288; FI1_TYPE_INIT : constant FI1_TYPE := (FILENAME => (others => 0), FILETYPE => 0, VERSION => 0, REVISION => 0, REVDATE => (others => ASCII.NUL), REVTIME => (others => ASCII.NUL), CREDATE => (others => ASCII.NUL), CRETIME => (others => ASCII.NUL), EXPDATE => (others => ASCII.NUL), FILLER_1 => 0, MTHDR1 => (others => ASCII.NUL), MTHDR2 => (others => ASCII.NUL), MTHDR3 => (others => ASCII.NUL)); -- module $FM1DEF FM1_K_POINTERS : constant := 10; -- start of retrieval pointers FM1_C_POINTERS : constant := 10; -- start of retrieval pointers FM1_K_LENGTH : constant := 10; -- length of map area FM1_C_LENGTH : constant := 10; -- length of map area -- retrieval pointer format FM1_S_FM1DEF : constant := 10; -- Old size name - synonym type FM1_TYPE is record EX_SEGNUM : UNSIGNED_BYTE; -- extension segment number of this header EX_RVN : UNSIGNED_BYTE; -- extension relative volume number EX_FILNUM : UNSIGNED_WORD; -- extension file number EX_FILSEQ : UNSIGNED_WORD; -- extension file sequence number COUNTSIZE : UNSIGNED_BYTE; -- retrieval pointer count field size LBNSIZE : UNSIGNED_BYTE; -- retrieval pointer LBN field size INUSE : UNSIGNED_BYTE; -- number of retrieval words in use AVAIL : UNSIGNED_BYTE; -- number of retrieval words available end record; for FM1_TYPE use record EX_SEGNUM at 0 range 0 .. 7; EX_RVN at 1 range 0 .. 7; EX_FILNUM at 2 range 0 .. 15; EX_FILSEQ at 4 range 0 .. 15; COUNTSIZE at 6 range 0 .. 7; LBNSIZE at 7 range 0 .. 7; INUSE at 8 range 0 .. 7; AVAIL at 9 range 0 .. 7; end record; for FM1_TYPE'SIZE use 80; FM1_TYPE_INIT : constant FM1_TYPE := (EX_SEGNUM => 0, EX_RVN => 0, EX_FILNUM => 0, EX_FILSEQ => 0, COUNTSIZE => 0, LBNSIZE => 0, INUSE => 0, AVAIL => 0); FM1_S_FM1DEF1 : constant := 4; -- Old size name - synonym type FM1_1_TYPE is record HIGHLBN : UNSIGNED_BYTE; -- high order LBN COUNT : UNSIGNED_BYTE; -- block count LOWLBN : UNSIGNED_WORD; -- low order LBN end record; for FM1_1_TYPE use record HIGHLBN at 0 range 0 .. 7; COUNT at 1 range 0 .. 7; LOWLBN at 2 range 0 .. 15; end record; for FM1_1_TYPE'SIZE use 32; FM1_1_TYPE_INIT : constant FM1_1_TYPE := (HIGHLBN => 0, COUNT => 0, LOWLBN => 0); FM1_S_FM1DEF2 : constant := 5; -- Old size name - synonym type FM1_2_TYPE is record PREVHLBN : UNSIGNED_BYTE; PREVCOUNT : UNSIGNED_BYTE; PREVLLBN : UNSIGNED_WORD; -- previous retrieval pointer FILLER_1 : UNSIGNED_BYTE; end record; for FM1_2_TYPE use record PREVHLBN at 0 range 0 .. 7; PREVCOUNT at 1 range 0 .. 7; PREVLLBN at 2 range 0 .. 15; FILLER_1 at 4 range 0 .. 7; end record; for FM1_2_TYPE'SIZE use 40; FM1_2_TYPE_INIT : constant FM1_2_TYPE := (PREVHLBN => 0, PREVCOUNT => 0, PREVLLBN => 0, FILLER_1 => 0); -- module $FH2DEF --+ -- -- File header definitions for Files-11 Structure Level 2 -- --- FH2_C_LEVEL1 : constant := 257; -- 401 octal = structure level 1 FH2_C_LEVEL2 : constant := 512; -- 1000 octal = structure level 2 FH2_C_LEVEL5 : constant := 1280; -- 2400 octal = structure level 5 FH2_M_VCC_STATE : constant := 16#00000700#; FH2_M_ALM_STATE : constant := 16#000C0000#; FH2_M_WASCONTIG : constant := 16#00000001#; FH2_M_NOBACKUP : constant := 16#00000002#; FH2_M_WRITEBACK : constant := 16#00000004#; FH2_M_READCHECK : constant := 16#00000008#; FH2_M_WRITCHECK : constant := 16#00000010#; FH2_M_CONTIGB : constant := 16#00000020#; FH2_M_LOCKED : constant := 16#00000040#; FH2_M_CONTIG : constant := 16#00000080#; FH2_M_BADACL : constant := 16#00000800#; FH2_M_SPOOL : constant := 16#00001000#; FH2_M_DIRECTORY : constant := 16#00002000#; FH2_M_BADBLOCK : constant := 16#00004000#; FH2_M_MARKDEL : constant := 16#00008000#; FH2_M_NOCHARGE : constant := 16#00010000#; FH2_M_ERASE : constant := 16#00020000#; FH2_M_ALM_AIP : constant := 16#00040000#; FH2_M_SHELVED : constant := 16#00080000#; FH2_M_SCRATCH : constant := 16#00100000#; FH2_M_NOMOVE : constant := 16#00200000#; FH2_M_NOSHELVABLE : constant := 16#00400000#; FH2_M_PRESHELVED : constant := 16#00800000#; FH2_M_ALM_ARCHIVED : constant := 16#00080000#; FH2_M_SHELVING_RESERVED : constant := 16#00800000#; FH2_M_ONLY_RU : constant := 16#00000001#; FH2_M_RUJNL : constant := 16#00000002#; FH2_M_BIJNL : constant := 16#00000004#; FH2_M_AIJNL : constant := 16#00000008#; FH2_M_ATJNL : constant := 16#00000010#; FH2_M_NEVER_RU : constant := 16#00000020#; FH2_M_JOURNAL_FILE : constant := 16#00000040#; FH2_C_RU_FACILITY_RMS : constant := 1; -- RMS FH2_C_RU_FACILITY_DBMS : constant := 2; -- DBMS FH2_C_RU_FACILITY_RDB : constant := 3; -- Rdb/VMS FH2_C_RU_FACILITY_CHKPNT : constant := 4; -- Checkpoint/Restart FH2_C_MAX_LINKS : constant := 32760; -- maximum link count FH2_K_LENGTH : constant := 80; -- length of header area FH2_C_LENGTH : constant := 80; -- length of header area FH2_K_SUBSET0_LENGTH : constant := 88; -- length of header area FH2_C_SUBSET0_LENGTH : constant := 88; -- length of header area FH2_K_FULL_LENGTH : constant := 108; -- length of full header FH2_C_FULL_LENGTH : constant := 108; -- length of full header FH2_S_FH2DEF : constant := 512; -- Old size name - synonym type FH2_STRUCLEV_TYPE is -- file structure level record STRUCVER : UNSIGNED_BYTE; -- file structure version STRUCLEV : UNSIGNED_BYTE; -- principal file structure level end record; for FH2_STRUCLEV_TYPE use record STRUCVER at 0 range 0 .. 7; STRUCLEV at 1 range 0 .. 7; end record; for FH2_STRUCLEV_TYPE'SIZE use 16; FH2_STRUCLEV_TYPE_INIT : constant FH2_STRUCLEV_TYPE := (STRUCVER => 0, STRUCLEV => 0); type FH2_FID_RVN_TYPE is -- relative volume number record FID_RVN : UNSIGNED_BYTE; -- alternate format RVN FID_NMX : UNSIGNED_BYTE; -- alternate format file number extension end record; for FH2_FID_RVN_TYPE use record FID_RVN at 0 range 0 .. 7; FID_NMX at 1 range 0 .. 7; end record; for FH2_FID_RVN_TYPE'SIZE use 16; FH2_FID_RVN_TYPE_INIT : constant FH2_FID_RVN_TYPE := (FID_RVN => 0, FID_NMX => 0); type FH2_FID_COMPONENT_TYPE is -- file ID record FID_NUM : UNSIGNED_WORD; -- file number FID_SEQ : UNSIGNED_WORD; -- file sequence number FID_RVN : FH2_FID_RVN_TYPE; -- relative volume number end record; for FH2_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; end record; for FH2_FID_COMPONENT_TYPE'SIZE use 48; FH2_FID_COMPONENT_TYPE_INIT : constant FH2_FID_COMPONENT_TYPE := (FID_NUM => 0, FID_SEQ => 0, FID_RVN => FH2_FID_RVN_TYPE_INIT ); TYPE FH2_FID_TYPE is ARRAY (1 .. 3) of FH2_FID_COMPONENT_TYPE; FH2_FID_TYPE_INIT : constant FH2_FID_TYPE := ( others => FH2_FID_COMPONENT_TYPE_INIT); type FH2_EX_FIDRVN_TYPE is -- extension relative volume number record EX_FIDRVN : UNSIGNED_BYTE; -- alternate format extension RVN EX_FIDNMX : UNSIGNED_BYTE; -- alternate format extension file number extension end record; for FH2_EX_FIDRVN_TYPE use record EX_FIDRVN at 0 range 0 .. 7; EX_FIDNMX at 1 range 0 .. 7; end record; for FH2_EX_FIDRVN_TYPE'SIZE use 16; FH2_EX_FIDRVN_TYPE_INIT : constant FH2_EX_FIDRVN_TYPE := (EX_FIDRVN => 0, EX_FIDNMX => 0); type FH2_EXT_FID_COMPONENT_TYPE is -- extension file ID record EX_FIDNUM : UNSIGNED_WORD; -- extension file number EX_FIDSEQ : UNSIGNED_WORD; -- extension file sequence number EX_FIDRVN : FH2_EX_FIDRVN_TYPE; -- extension relative volume number end record; for FH2_EXT_FID_COMPONENT_TYPE use record EX_FIDNUM at 0 range 0 .. 15; EX_FIDSEQ at 2 range 0 .. 15; EX_FIDRVN at 4 range 0 .. 15; end record; for FH2_EXT_FID_COMPONENT_TYPE'SIZE use 48; FH2_EXT_FID_COMPONENT_TYPE_INIT : constant FH2_EXT_FID_COMPONENT_TYPE := (EX_FIDNUM => 0, EX_FIDSEQ => 0, EX_FIDRVN => FH2_EX_FIDRVN_TYPE_INIT ); TYPE FH2_EXT_FID_TYPE is ARRAY (1 .. 3) of FH2_EXT_FID_COMPONENT_TYPE; FH2_EXT_FID_TYPE_INIT : constant FH2_EXT_FID_TYPE := ( others => FH2_EXT_FID_COMPONENT_TYPE_INIT); type FH2_FILECHAR_BITS_TYPE is record WASCONTIG : BOOLEAN; -- file was (and should be) contiguous NOBACKUP : BOOLEAN; -- file is not to be backed up WRITEBACK : BOOLEAN; -- file may be write-back cached READCHECK : BOOLEAN; -- verify all read operations WRITCHECK : BOOLEAN; -- verify all write operations CONTIGB : BOOLEAN; -- keep file as contiguous as possible LOCKED : BOOLEAN; -- file is deaccess locked CONTIG : BOOLEAN; -- file is contiguous FILLER_1 : UNSIGNED_3; -- reserved BADACL : BOOLEAN; -- ACL is invalid SPOOL : BOOLEAN; -- intermediate spool file DIRECTORY : BOOLEAN; -- file is a directory BADBLOCK : BOOLEAN; -- file contains bad blocks MARKDEL : BOOLEAN; -- file is marked for delete NOCHARGE : BOOLEAN; -- file space is not to be charged ERASE : BOOLEAN; -- erase file contents before deletion -- **********The following two lines are different from FCH ALM_AIP : BOOLEAN; -- Archive in progress - ALM proj cancelled SHELVED : BOOLEAN; -- File is shelved SCRATCH : BOOLEAN; -- Scratch Header used by movefile NOMOVE : BOOLEAN; -- Disable movefile on this file NOSHELVABLE : BOOLEAN; -- File is not allowed to be shelved PRESHELVED : BOOLEAN; -- File is shelved but also kept online -- Note: The high 8 bits of this longword -- are reserved for user and CSS use. end record; for FH2_FILECHAR_BITS_TYPE use record WASCONTIG at 0 range 0 .. 0; NOBACKUP at 0 range 1 .. 1; WRITEBACK at 0 range 2 .. 2; READCHECK at 0 range 3 .. 3; WRITCHECK at 0 range 4 .. 4; CONTIGB at 0 range 5 .. 5; LOCKED at 0 range 6 .. 6; CONTIG at 0 range 7 .. 7; FILLER_1 at 1 range 0 .. 2; BADACL at 1 range 3 .. 3; SPOOL at 1 range 4 .. 4; DIRECTORY at 1 range 5 .. 5; BADBLOCK at 1 range 6 .. 6; MARKDEL at 1 range 7 .. 7; NOCHARGE at 2 range 0 .. 0; ERASE at 2 range 1 .. 1; ALM_AIP at 2 range 2 .. 2; SHELVED at 2 range 3 .. 3; SCRATCH at 2 range 4 .. 4; NOMOVE at 2 range 5 .. 5; NOSHELVABLE at 2 range 6 .. 6; PRESHELVED at 2 range 7 .. 7; end record; for FH2_FILECHAR_BITS_TYPE'SIZE use 24; FH2_FILECHAR_BITS_TYPE_INIT : constant FH2_FILECHAR_BITS_TYPE := (WASCONTIG => FALSE, NOBACKUP => FALSE, WRITEBACK => FALSE, READCHECK => FALSE, WRITCHECK => FALSE, CONTIGB => FALSE, LOCKED => FALSE, CONTIG => FALSE, FILLER_1 => 0, BADACL => FALSE, SPOOL => FALSE, DIRECTORY => FALSE, BADBLOCK => FALSE, MARKDEL => FALSE, NOCHARGE => FALSE, ERASE => FALSE, ALM_AIP => FALSE, SHELVED => FALSE, SCRATCH => FALSE, NOMOVE => FALSE, NOSHELVABLE => FALSE, PRESHELVED => FALSE); type FH2_FILECHAR_ARCHIVED_TYPE is -- Overlay SHELVED bit record FILLER_1 : UNSIGNED_19; -- Padding ALM_ARCHIVED : BOOLEAN; -- File archived - ALM proj cancelled FILLER_2 : UNSIGNED_3; -- Padding SHELVING_RESERVED : BOOLEAN; -- Original placeholder name for PRESHELVED end record; for FH2_FILECHAR_ARCHIVED_TYPE use record FILLER_1 at 0 range 0 .. 18; ALM_ARCHIVED at 2 range 3 .. 3; FILLER_2 at 2 range 4 .. 6; SHELVING_RESERVED at 2 range 7 .. 7; end record; for FH2_FILECHAR_ARCHIVED_TYPE'SIZE use 24; FH2_FILECHAR_ARCHIVED_TYPE_INIT : constant FH2_FILECHAR_ARCHIVED_TYPE := (FILLER_1 => 0, ALM_ARCHIVED => FALSE, FILLER_2 => 0, SHELVING_RESERVED => FALSE); type FH2_FILECHAR_TYPE is -- file characteristics record FILLER_1 : UNSIGNED_8; -- reserved VCC_STATE : UNSIGNED_3; -- VCC state bits FILLER_2 : UNSIGNED_7; -- reserved -- **********The following line is different from FH2 ALM_STATE : UNSIGNED_2; -- ALM state bits FILLER_3 : UNSIGNED_12; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FILECHAR_BITS : FH2_FILECHAR_BITS_TYPE; ----FILECHAR_ARCHIVED : FH2_FILECHAR_ARCHIVED_TYPE; -- Overlay SHELVED bit end record; for FH2_FILECHAR_TYPE use record FILLER_1 at 0 range 0 .. 7; VCC_STATE at 1 range 0 .. 2; FILLER_2 at 1 range 3 .. 9; ALM_STATE at 2 range 2 .. 3; FILLER_3 at 2 range 4 .. 15; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FILECHAR_BITS at 0 range 0 .. 23; ----FILECHAR_ARCHIVED at 0 range 0 .. 23; end record; for FH2_FILECHAR_TYPE'SIZE use 32; FH2_FILECHAR_TYPE_INIT : constant FH2_FILECHAR_TYPE := (FILLER_1 => 0, VCC_STATE => 0, FILLER_2 => 0, ALM_STATE => 0, FILLER_3 => 0); type FH2_FILEOWNER_TYPE is -- file owner UIC record UICMEMBER : UNSIGNED_WORD; -- UIC member number UICGROUP : UNSIGNED_WORD; -- UIC group number end record; for FH2_FILEOWNER_TYPE use record UICMEMBER at 0 range 0 .. 15; UICGROUP at 2 range 0 .. 15; end record; for FH2_FILEOWNER_TYPE'SIZE use 32; FH2_FILEOWNER_TYPE_INIT : constant FH2_FILEOWNER_TYPE := (UICMEMBER => 0, UICGROUP => 0); type FH2_BK_FIDRVN_TYPE is -- back link relative volume number record BK_FIDRVN : UNSIGNED_BYTE; -- alternate format back link RVN BK_FIDNMX : UNSIGNED_BYTE; -- alternate format back link file number extension end record; for FH2_BK_FIDRVN_TYPE use record BK_FIDRVN at 0 range 0 .. 7; BK_FIDNMX at 1 range 0 .. 7; end record; for FH2_BK_FIDRVN_TYPE'SIZE use 16; FH2_BK_FIDRVN_TYPE_INIT : constant FH2_BK_FIDRVN_TYPE := (BK_FIDRVN => 0, BK_FIDNMX => 0); type FH2_BACKLINK_COMPONENT_TYPE is -- back link pointer record BK_FIDNUM : UNSIGNED_WORD; -- back link file number BK_FIDSEQ : UNSIGNED_WORD; -- back link file sequence number BK_FIDRVN : FH2_BK_FIDRVN_TYPE; -- back link relative volume number end record; for FH2_BACKLINK_COMPONENT_TYPE use record BK_FIDNUM at 0 range 0 .. 15; BK_FIDSEQ at 2 range 0 .. 15; BK_FIDRVN at 4 range 0 .. 15; end record; for FH2_BACKLINK_COMPONENT_TYPE'SIZE use 48; FH2_BACKLINK_COMPONENT_TYPE_INIT : constant FH2_BACKLINK_COMPONENT_TYPE := (BK_FIDNUM => 0, BK_FIDSEQ => 0, BK_FIDRVN => FH2_BK_FIDRVN_TYPE_INIT ); TYPE FH2_BACKLINK_TYPE is ARRAY (1 .. 3) of FH2_BACKLINK_COMPONENT_TYPE; FH2_BACKLINK_TYPE_INIT : constant FH2_BACKLINK_TYPE := ( others => FH2_BACKLINK_COMPONENT_TYPE_INIT); type FH2_JOURNAL_TYPE is -- journal control flags record ONLY_RU : BOOLEAN; -- file is accessible only in recovery unit RUJNL : BOOLEAN; -- enable recovery unit journal BIJNL : BOOLEAN; -- enable before image journal AIJNL : BOOLEAN; -- enable after image journal ATJNL : BOOLEAN; -- enable audit trail journal NEVER_RU : BOOLEAN; -- file is never accessible in recovery unit JOURNAL_FILE : BOOLEAN; -- this is a journal file FILLER_1 : BOOLEAN; end record; for FH2_JOURNAL_TYPE use record ONLY_RU at 0 range 0 .. 0; RUJNL at 0 range 1 .. 1; BIJNL at 0 range 2 .. 2; AIJNL at 0 range 3 .. 3; ATJNL at 0 range 4 .. 4; NEVER_RU at 0 range 5 .. 5; JOURNAL_FILE at 0 range 6 .. 6; FILLER_1 at 0 range 7 .. 7; end record; for FH2_JOURNAL_TYPE'SIZE use 8; FH2_JOURNAL_TYPE_INIT : constant FH2_JOURNAL_TYPE := (ONLY_RU => FALSE, RUJNL => FALSE, BIJNL => FALSE, AIJNL => FALSE, ATJNL => FALSE, NEVER_RU => FALSE, JOURNAL_FILE => FALSE, FILLER_1 => FALSE); type FH2_CLASS_PROT_TYPE is -- security classification mask record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 20); -- see structure in $CLSDEF end record; for FH2_CLASS_PROT_TYPE use record FILLER_1 at 0 range 0 .. 159; end record; for FH2_CLASS_PROT_TYPE'SIZE use 160; FH2_CLASS_PROT_TYPE_INIT : constant FH2_CLASS_PROT_TYPE := (FILLER_1 => (others => 0)); type FH2_TYPE is record IDOFFSET : UNSIGNED_BYTE; -- ident area offset in words MPOFFSET : UNSIGNED_BYTE; -- map area offset in words ACOFFSET : UNSIGNED_BYTE; -- access control list offset in words RSOFFSET : UNSIGNED_BYTE; -- reserved area offset in words SEG_NUM : UNSIGNED_WORD; -- file segment number STRUCLEV : FH2_STRUCLEV_TYPE; -- file structure level FID : FH2_FID_COMPONENT_TYPE; -- file ID EXT_FID : FH2_EXT_FID_COMPONENT_TYPE; -- extension file ID RECATTR : UNSIGNED_WORD_ARRAY (1 .. 16); -- file record attributes FILECHAR : FH2_FILECHAR_TYPE; -- file characteristics RECPROT : UNSIGNED_WORD; -- record protection MAP_INUSE : UNSIGNED_BYTE; -- number of map area words in use ACC_MODE : UNSIGNED_BYTE; -- least privileged access mode FILEOWNER : FH2_FILEOWNER_TYPE; -- file owner UIC FILEPROT : UNSIGNED_WORD; -- file protection BACKLINK : FH2_BACKLINK_COMPONENT_TYPE; -- back link pointer JOURNAL : FH2_JOURNAL_TYPE; -- journal control flags RU_ACTIVE : UNSIGNED_BYTE; -- If non-zero, file has active recovery units -- (value is recoverable facility id number) -- 1-99 reserved to DEC, 100-127 reserved for -- CSS, 128-255 reserved for customers. LINKCOUNT : INTEGER_16; -- (count of links) HIGHWATER : UNSIGNED_LONGWORD; -- high-water mark in file FILLER_1 : UNSIGNED_LONGWORD_ARRAY (1 .. 2); -- reserved CLASS_PROT : FH2_CLASS_PROT_TYPE; -- security classification mask FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 402); -- rest of file header CHECKSUM : UNSIGNED_WORD; -- file header checksum end record; for FH2_TYPE use record IDOFFSET at 0 range 0 .. 7; MPOFFSET at 1 range 0 .. 7; ACOFFSET at 2 range 0 .. 7; RSOFFSET at 3 range 0 .. 7; SEG_NUM at 4 range 0 .. 15; STRUCLEV at 6 range 0 .. 15; FID at 8 range 0 .. 47; EXT_FID at 14 range 0 .. 47; RECATTR at 20 range 0 .. 255; FILECHAR at 52 range 0 .. 31; RECPROT at 56 range 0 .. 15; MAP_INUSE at 58 range 0 .. 7; ACC_MODE at 59 range 0 .. 7; FILEOWNER at 60 range 0 .. 31; FILEPROT at 64 range 0 .. 15; BACKLINK at 66 range 0 .. 47; JOURNAL at 72 range 0 .. 7; RU_ACTIVE at 73 range 0 .. 7; LINKCOUNT at 74 range 0 .. 15; HIGHWATER at 76 range 0 .. 31; FILLER_1 at 80 range 0 .. 63; CLASS_PROT at 88 range 0 .. 159; FILLER_2 at 108 range 0 .. 3215; CHECKSUM at 510 range 0 .. 15; end record; for FH2_TYPE'SIZE use 4096; FH2_TYPE_INIT : constant FH2_TYPE := (IDOFFSET => 0, MPOFFSET => 0, ACOFFSET => 0, RSOFFSET => 0, SEG_NUM => 0, STRUCLEV => FH2_STRUCLEV_TYPE_INIT, FID => FH2_FID_COMPONENT_TYPE_INIT, EXT_FID => FH2_EXT_FID_COMPONENT_TYPE_INIT, RECATTR => (others => 0), FILECHAR => FH2_FILECHAR_TYPE_INIT, RECPROT => 0, MAP_INUSE => 0, ACC_MODE => 0, FILEOWNER => FH2_FILEOWNER_TYPE_INIT, FILEPROT => 0, BACKLINK => FH2_BACKLINK_COMPONENT_TYPE_INIT, JOURNAL => FH2_JOURNAL_TYPE_INIT, RU_ACTIVE => 0, LINKCOUNT => 0, HIGHWATER => 0, FILLER_1 => (others => 0), CLASS_PROT => FH2_CLASS_PROT_TYPE_INIT, FILLER_2 => (others => 0), CHECKSUM => 0); -- module $FI2DEF FI2_K_LENGTH : constant := 120; -- length of ident area FI2_C_LENGTH : constant := 120; -- length of ident area FI2_S_FI2DEF : constant := 200; -- Old size name - synonym type FI2_TYPE is record FILENAME : STRING(1 .. 20); -- file name, type, and version (ASCII) REVISION : UNSIGNED_WORD; -- revision number (binary) CREDATE : UNSIGNED_QUADWORD; -- creation date and time REVDATE : UNSIGNED_QUADWORD; -- revision date and time EXPDATE : UNSIGNED_QUADWORD; -- expiration date and time BAKDATE : UNSIGNED_QUADWORD; -- backup date and time FILENAMEXT : STRING(1 .. 66); -- extension file name area USERLABEL : STRING(1 .. 80); -- optional user file label end record; for FI2_TYPE use record FILENAME at 0 range 0 .. 159; REVISION at 20 range 0 .. 15; CREDATE at 22 range 0 .. 63; REVDATE at 30 range 0 .. 63; EXPDATE at 38 range 0 .. 63; BAKDATE at 46 range 0 .. 63; FILENAMEXT at 54 range 0 .. 527; USERLABEL at 120 range 0 .. 639; end record; for FI2_TYPE'SIZE use 1600; FI2_TYPE_INIT : constant FI2_TYPE := (FILENAME => (others => ASCII.NUL), REVISION => 0, CREDATE => (0, 0), REVDATE => (0, 0), EXPDATE => (0, 0), BAKDATE => (0, 0), FILENAMEXT => (others => ASCII.NUL), USERLABEL => (others => ASCII.NUL)); -- module $FI5DEF -- -- ODS-5 format ident area. This is the only structural -- difference between ODS-2 and ODS-5. -- FI5_C_ODS2 : constant := 0; -- ODS-2 legal ASCII FI5_C_ISL1 : constant := 1; -- ODS-2 illegal ASCII or ISO LATIN-1 FI5_TYPE_RESERVED : constant := 2; FI5_C_UCS2 : constant := 3; -- Unicode USC-2 (16 bit characters) FI5_M_FIXED_LENGTH : constant := 16#00000010#; FI5_C_MIN_LENGTH : constant := 120; -- Minimum length of ident area FI5_C_MAX_LENGTH : constant := 324; -- Maximum length of ident area FI5_S_FI5DEF : constant := 324; -- Old size name - synonym type FI5_CONTROL_TYPE is -- Control flags and name encoding record NAMETYPE : UNSIGNED_2; -- Encoding of the filename FILLER_1 : UNSIGNED_2; -- reserved for nametype expansion; FIXED_LENGTH : BOOLEAN; -- If set, ident area may not be contracted FILLER_2 : UNSIGNED_3; end record; for FI5_CONTROL_TYPE use record NAMETYPE at 0 range 0 .. 1; FILLER_1 at 0 range 2 .. 3; FIXED_LENGTH at 0 range 4 .. 4; FILLER_2 at 0 range 5 .. 7; end record; for FI5_CONTROL_TYPE'SIZE use 8; FI5_CONTROL_TYPE_INIT : constant FI5_CONTROL_TYPE := (NAMETYPE => 0, FILLER_1 => 0, FIXED_LENGTH => FALSE, FILLER_2 => 0); type FI5_LENGTH_HINT_TYPE is -- File length & record count hint record HINT_LO_QW : UNSIGNED_QUADWORD; HINT_HI_QW : UNSIGNED_QUADWORD; end record; for FI5_LENGTH_HINT_TYPE use record HINT_LO_QW at 0 range 0 .. 63; HINT_HI_QW at 8 range 0 .. 63; end record; for FI5_LENGTH_HINT_TYPE'SIZE use 128; FI5_LENGTH_HINT_TYPE_INIT : constant FI5_LENGTH_HINT_TYPE := (HINT_LO_QW => (0, 0), HINT_HI_QW => (0, 0)); type FI5_TYPE is record CONTROL : FI5_CONTROL_TYPE; -- Control flags and name encoding -- NOTE - The values of FI5$C_ODS2 et al. must be the same as the corresponding -- values for name encoding in DIRDEF and FIBDEF. All undefined fields -- in FI5$B_CONTROL are REQUIRED to be zero. NAMELEN : UNSIGNED_BYTE; -- Length of name in bytes REVISION : UNSIGNED_WORD; -- revision number (binary) CREDATE : UNSIGNED_QUADWORD; -- creation date and time REVDATE : UNSIGNED_QUADWORD; -- revision date and time EXPDATE : UNSIGNED_QUADWORD; -- expiration date and time BAKDATE : UNSIGNED_QUADWORD; -- backup date and time ACCDATE : UNSIGNED_QUADWORD; -- last accessed time ATTDATE : UNSIGNED_QUADWORD; -- last attribute modification time EX_RECATTR : UNSIGNED_QUADWORD; -- extended RMS attributes LENGTH_HINT : FI5_LENGTH_HINT_TYPE; -- File length & record count hint FILENAME : STRING(1 .. 44); -- file name text FILENAMEXT : STRING(1 .. 204); -- extension file name area end record; for FI5_TYPE use record CONTROL at 0 range 0 .. 7; NAMELEN at 1 range 0 .. 7; REVISION at 2 range 0 .. 15; CREDATE at 4 range 0 .. 63; REVDATE at 12 range 0 .. 63; EXPDATE at 20 range 0 .. 63; BAKDATE at 28 range 0 .. 63; ACCDATE at 36 range 0 .. 63; ATTDATE at 44 range 0 .. 63; EX_RECATTR at 52 range 0 .. 63; LENGTH_HINT at 60 range 0 .. 127; FILENAME at 76 range 0 .. 351; FILENAMEXT at 120 range 0 .. 1631; end record; for FI5_TYPE'SIZE use 2592; FI5_TYPE_INIT : constant FI5_TYPE := ( CONTROL => FI5_CONTROL_TYPE_INIT, NAMELEN => 0, REVISION => 0, CREDATE => (0, 0), REVDATE => (0, 0), EXPDATE => (0, 0), BAKDATE => (0, 0), ACCDATE => (0, 0), ATTDATE => (0, 0), EX_RECATTR => (0, 0), LENGTH_HINT => FI5_LENGTH_HINT_TYPE_INIT, FILENAME => (others => ASCII.NUL), FILENAMEXT => (others => ASCII.NUL)); -- module $FM2DEF -- retrieval pointer type codes FM2_C_PLACEMENT : constant := 0; -- 00 = placement control data FM2_C_FORMAT1 : constant := 1; -- 01 = format 1 FM2_C_FORMAT2 : constant := 2; -- 10 = format 2 FM2_C_FORMAT3 : constant := 3; -- 11 = format 3 -- format of retrieval pointer FM2_K_LENGTH0 : constant := 2; -- length of format 0 (placement) FM2_C_LENGTH0 : constant := 2; -- length of format 0 (placement) FM2_K_LENGTH1 : constant := 4; -- length of format 1 FM2_C_LENGTH1 : constant := 4; -- length of format 1 FM2_S_FM2DEF : constant := 4; -- Old size name - synonym type FM2_WORD0_BITS1_TYPE is record EXACT : BOOLEAN; -- exact placement specified ONCYL : BOOLEAN; -- on cylinder allocation desired FILLER_1 : UNSIGNED_10; LBN : BOOLEAN; -- use LBN of next map pointer RVN : BOOLEAN; -- place on specified RVN FILLER_2 : UNSIGNED_2; end record; for FM2_WORD0_BITS1_TYPE use record EXACT at 0 range 0 .. 0; ONCYL at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 11; LBN at 1 range 4 .. 4; RVN at 1 range 5 .. 5; FILLER_2 at 1 range 6 .. 7; end record; for FM2_WORD0_BITS1_TYPE'SIZE use 16; FM2_WORD0_BITS1_TYPE_INIT : constant FM2_WORD0_BITS1_TYPE := (EXACT => FALSE, ONCYL => FALSE, FILLER_1 => 0, LBN => FALSE, RVN => FALSE, FILLER_2 => 0); type FM2_WORD0_BITS2_TYPE is record FILLER_1 : UNSIGNED_8; -- low byte described below HIGHLBN : UNSIGNED_6; -- high order LBN FILLER_2 : UNSIGNED_2; end record; for FM2_WORD0_BITS2_TYPE use record FILLER_1 at 0 range 0 .. 7; HIGHLBN at 1 range 0 .. 5; FILLER_2 at 1 range 6 .. 7; end record; for FM2_WORD0_BITS2_TYPE'SIZE use 16; FM2_WORD0_BITS2_TYPE_INIT : constant FM2_WORD0_BITS2_TYPE := (FILLER_1 => 0, HIGHLBN => 0, FILLER_2 => 0); type FM2_WORD0_BITS3_TYPE is record COUNT2 : UNSIGNED_14; -- format 2 & 3 count field FILLER_1 : UNSIGNED_2; end record; for FM2_WORD0_BITS3_TYPE use record COUNT2 at 0 range 0 .. 13; FILLER_1 at 1 range 6 .. 7; end record; for FM2_WORD0_BITS3_TYPE'SIZE use 16; FM2_WORD0_BITS3_TYPE_INIT : constant FM2_WORD0_BITS3_TYPE := (COUNT2 => 0, FILLER_1 => 0); type FM2_WORD0_TYPE is -- first word, of many uses record FILLER_1 : UNSIGNED_14; -- type specific data FORMAT : UNSIGNED_2; -- format type code ----Component(s) below are defined as comments since they ----overlap other fields ---- ----WORD0_BITS1 : FM2_WORD0_BITS1_TYPE; ----WORD0_BITS2 : FM2_WORD0_BITS2_TYPE; ----WORD0_BITS3 : FM2_WORD0_BITS3_TYPE; ----COUNT1 : UNSIGNED_BYTE; -- format 1 count field end record; for FM2_WORD0_TYPE use record FILLER_1 at 0 range 0 .. 13; FORMAT at 1 range 6 .. 7; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----WORD0_BITS1 at 0 range 0 .. 15; ----WORD0_BITS2 at 0 range 0 .. 15; ----WORD0_BITS3 at 0 range 0 .. 15; ----COUNT1 at 0 range 0 .. 7; end record; for FM2_WORD0_TYPE'SIZE use 16; FM2_WORD0_TYPE_INIT : constant FM2_WORD0_TYPE := (FILLER_1 => 0, FORMAT => 0); type FM2_TYPE is record WORD0 : FM2_WORD0_TYPE; -- first word, of many uses LOWLBN : UNSIGNED_WORD; -- format 1 low order LBN end record; for FM2_TYPE use record WORD0 at 0 range 0 .. 15; LOWLBN at 2 range 0 .. 15; end record; for FM2_TYPE'SIZE use 32; FM2_TYPE_INIT : constant FM2_TYPE := ( WORD0 => FM2_WORD0_TYPE_INIT, LOWLBN => 0); FM2_K_LENGTH2 : constant := 6; -- length of format 2 FM2_C_LENGTH2 : constant := 6; -- length of format 2 FM2_S_FM2DEF1 : constant := 6; -- Old size name - synonym type FM2_1_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 2); LBN2 : UNSIGNED_LONGWORD; -- format 2 LBN (longword) end record; for FM2_1_TYPE use record FILLER_1 at 0 range 0 .. 15; LBN2 at 2 range 0 .. 31; end record; for FM2_1_TYPE'SIZE use 48; FM2_1_TYPE_INIT : constant FM2_1_TYPE := (FILLER_1 => (others => 0), LBN2 => 0); FM2_K_LENGTH3 : constant := 8; -- length of format 3 FM2_C_LENGTH3 : constant := 8; -- length of format 3 FM2_S_FM2DEF2 : constant := 8; -- Old size name - synonym type FM2_2_TYPE is record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 2); LOWCOUNT : UNSIGNED_WORD; -- format 3 low order count LBN3 : UNSIGNED_LONGWORD; -- format 3 LBN (longword) end record; for FM2_2_TYPE use record FILLER_1 at 0 range 0 .. 15; LOWCOUNT at 2 range 0 .. 15; LBN3 at 4 range 0 .. 31; end record; for FM2_2_TYPE'SIZE use 64; FM2_2_TYPE_INIT : constant FM2_2_TYPE := (FILLER_1 => (others => 0), LOWCOUNT => 0, LBN3 => 0); -- module $FCHDEF --+ -- -- File characteristics bit definitions. These are identical to, and must -- track, the bits in FILECHAR above, but are defined relative to the file -- characteristics longword instead of relative to the file header. -- --- FCH_M_VCC_STATE : constant := 16#00000700#; FCH_M_ASSOCIATED : constant := 16#00100000#; FCH_M_EXISTENCE : constant := 16#00200000#; FCH_M_WASCONTIG : constant := 16#00000001#; FCH_M_NOBACKUP : constant := 16#00000002#; FCH_M_WRITEBACK : constant := 16#00000004#; FCH_M_READCHECK : constant := 16#00000008#; FCH_M_WRITCHECK : constant := 16#00000010#; FCH_M_CONTIGB : constant := 16#00000020#; FCH_M_LOCKED : constant := 16#00000040#; FCH_M_CONTIG : constant := 16#00000080#; FCH_M_BADACL : constant := 16#00000800#; FCH_M_SPOOL : constant := 16#00001000#; FCH_M_DIRECTORY : constant := 16#00002000#; FCH_M_BADBLOCK : constant := 16#00004000#; FCH_M_MARKDEL : constant := 16#00008000#; FCH_M_NOCHARGE : constant := 16#00010000#; FCH_M_ERASE : constant := 16#00020000#; FCH_M_SHELVED : constant := 16#00080000#; FCH_M_SCRATCH : constant := 16#00100000#; FCH_M_NOMOVE : constant := 16#00200000#; FCH_M_NOSHELVABLE : constant := 16#00400000#; FCH_M_PRESHELVED : constant := 16#00800000#; FCH_S_FCHDEF : constant := 4; -- Old size name - synonym type FCH_FILL_1_BITS_TYPE is record WASCONTIG : BOOLEAN; -- file was (and should be) contiguous NOBACKUP : BOOLEAN; -- file is not to be backed up WRITEBACK : BOOLEAN; -- file may be write-back cached READCHECK : BOOLEAN; -- verify all read operations WRITCHECK : BOOLEAN; -- verify all write operations CONTIGB : BOOLEAN; -- keep file as contiguous as possible LOCKED : BOOLEAN; -- file is deaccess locked CONTIG : BOOLEAN; -- file is contiguous FILLER_1 : UNSIGNED_3; -- reserved BADACL : BOOLEAN; -- ACL is invalid SPOOL : BOOLEAN; -- intermediate spool file DIRECTORY : BOOLEAN; -- file is a directory BADBLOCK : BOOLEAN; -- file contains bad blocks MARKDEL : BOOLEAN; -- file is marked for delete NOCHARGE : BOOLEAN; -- file space is not to be charged ERASE : BOOLEAN; -- erase file contents before deletion -- **********The following line is different from FH2 FILLER_2 : BOOLEAN; -- Place holder for ALM bit in FH2 SHELVED : BOOLEAN; -- File shelved SCRATCH : BOOLEAN; -- Scratch Header used by movefile NOMOVE : BOOLEAN; -- Disable movefile on this file NOSHELVABLE : BOOLEAN; -- File is not allowed to be shelved PRESHELVED : BOOLEAN; -- File is shelved but also kept online -- Note: The high 8 bits of this longword -- are reserved for user and CSS use. end record; for FCH_FILL_1_BITS_TYPE use record WASCONTIG at 0 range 0 .. 0; NOBACKUP at 0 range 1 .. 1; WRITEBACK at 0 range 2 .. 2; READCHECK at 0 range 3 .. 3; WRITCHECK at 0 range 4 .. 4; CONTIGB at 0 range 5 .. 5; LOCKED at 0 range 6 .. 6; CONTIG at 0 range 7 .. 7; FILLER_1 at 1 range 0 .. 2; BADACL at 1 range 3 .. 3; SPOOL at 1 range 4 .. 4; DIRECTORY at 1 range 5 .. 5; BADBLOCK at 1 range 6 .. 6; MARKDEL at 1 range 7 .. 7; NOCHARGE at 2 range 0 .. 0; ERASE at 2 range 1 .. 1; FILLER_2 at 2 range 2 .. 2; SHELVED at 2 range 3 .. 3; SCRATCH at 2 range 4 .. 4; NOMOVE at 2 range 5 .. 5; NOSHELVABLE at 2 range 6 .. 6; PRESHELVED at 2 range 7 .. 7; end record; for FCH_FILL_1_BITS_TYPE'SIZE use 24; FCH_FILL_1_BITS_TYPE_INIT : constant FCH_FILL_1_BITS_TYPE := (WASCONTIG => FALSE, NOBACKUP => FALSE, WRITEBACK => FALSE, READCHECK => FALSE, WRITCHECK => FALSE, CONTIGB => FALSE, LOCKED => FALSE, CONTIG => FALSE, FILLER_1 => 0, BADACL => FALSE, SPOOL => FALSE, DIRECTORY => FALSE, BADBLOCK => FALSE, MARKDEL => FALSE, NOCHARGE => FALSE, ERASE => FALSE, FILLER_2 => FALSE, SHELVED => FALSE, SCRATCH => FALSE, NOMOVE => FALSE, NOSHELVABLE => FALSE, PRESHELVED => FALSE); type FCH_FILL_1_TYPE is record FILLER_1 : UNSIGNED_8; -- reserved VCC_STATE : UNSIGNED_3; -- VCC state bits FILLER_2 : UNSIGNED_7; -- reserved -- **********The following line is different from FH2 FILLER_3 : UNSIGNED_2; -- ALM state bits removed ASSOCIATED : BOOLEAN; -- ISO 9660 Associated file EXISTENCE : BOOLEAN; -- ISO 9660 Existence file FILLER_4 : UNSIGNED_10; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FILL_1_BITS : FCH_FILL_1_BITS_TYPE; end record; for FCH_FILL_1_TYPE use record FILLER_1 at 0 range 0 .. 7; VCC_STATE at 1 range 0 .. 2; FILLER_2 at 1 range 3 .. 9; FILLER_3 at 2 range 2 .. 3; ASSOCIATED at 2 range 4 .. 4; EXISTENCE at 2 range 5 .. 5; FILLER_4 at 2 range 6 .. 15; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FILL_1_BITS at 0 range 0 .. 23; end record; for FCH_FILL_1_TYPE'SIZE use 32; FCH_FILL_1_TYPE_INIT : constant FCH_FILL_1_TYPE := (FILLER_1 => 0, VCC_STATE => 0, FILLER_2 => 0, FILLER_3 => 0, ASSOCIATED => FALSE, EXISTENCE => FALSE, FILLER_4 => 0); type FCH_TYPE is record FILL_1 : FCH_FILL_1_TYPE; end record; for FCH_TYPE use record FILL_1 at 0 range 0 .. 31; end record; for FCH_TYPE'SIZE use 32; FCH_TYPE_INIT : constant FCH_TYPE := ( FILL_1 => FCH_FILL_1_TYPE_INIT ); -- module $FJNDEF --+ -- -- File journal control bit definitions. These are identical to, and must -- track, the bits in JOURNAL above, but are defined relative to the journal -- control byte instead of relative to the file header. -- --- FJN_M_ONLY_RU : constant := 16#00000001#; FJN_M_RUJNL : constant := 16#00000002#; FJN_M_BIJNL : constant := 16#00000004#; FJN_M_AIJNL : constant := 16#00000008#; FJN_M_ATJNL : constant := 16#00000010#; FJN_M_NEVER_RU : constant := 16#00000020#; FJN_M_JOURNAL_FILE : constant := 16#00000040#; FJN_S_FJNDEF : constant := 1; -- Old size name - synonym type FJNDEF_FILL_1_TYPE is record ONLY_RU : BOOLEAN; -- file is accessible only in recovery unit RUJNL : BOOLEAN; -- enable recovery unit journal BIJNL : BOOLEAN; -- enable before image journal AIJNL : BOOLEAN; -- enable after image journal ATJNL : BOOLEAN; -- enable audit trail journal NEVER_RU : BOOLEAN; -- file is never accessible in recovery unit JOURNAL_FILE : BOOLEAN; -- this is a journal file FILLER_1 : BOOLEAN; end record; for FJNDEF_FILL_1_TYPE use record ONLY_RU at 0 range 0 .. 0; RUJNL at 0 range 1 .. 1; BIJNL at 0 range 2 .. 2; AIJNL at 0 range 3 .. 3; ATJNL at 0 range 4 .. 4; NEVER_RU at 0 range 5 .. 5; JOURNAL_FILE at 0 range 6 .. 6; FILLER_1 at 0 range 7 .. 7; end record; for FJNDEF_FILL_1_TYPE'SIZE use 8; FJNDEF_FILL_1_TYPE_INIT : constant FJNDEF_FILL_1_TYPE := (ONLY_RU => FALSE, RUJNL => FALSE, BIJNL => FALSE, AIJNL => FALSE, ATJNL => FALSE, NEVER_RU => FALSE, JOURNAL_FILE => FALSE, FILLER_1 => FALSE); type FJN_TYPE is record FILL_1 : FJNDEF_FILL_1_TYPE; end record; for FJN_TYPE use record FILL_1 at 0 range 0 .. 7; end record; for FJN_TYPE'SIZE use 8; FJN_TYPE_INIT : constant FJN_TYPE := ( FILL_1 => FJNDEF_FILL_1_TYPE_INIT ); -- module $FATDEF --+ -- -- Record attributes area as used by FCS and RMS. -- --- FAT_C_UNDEFINED : constant := 0; -- undefined record type FAT_C_FIXED : constant := 1; -- fixed record type FAT_C_VARIABLE : constant := 2; -- variable length FAT_C_VFC : constant := 3; -- variable + fixed control FAT_C_STREAM : constant := 4; -- RMS-11 (DEC traditional) stream format FAT_C_STREAMLF : constant := 5; -- LF-terminated stream format FAT_C_STREAMCR : constant := 6; -- CR-terminated stream format FAT_C_SEQUENTIAL : constant := 0; -- sequential organization FAT_C_RELATIVE : constant := 1; -- relative organization FAT_C_INDEXED : constant := 2; -- indexed organization FAT_C_DIRECT : constant := 3; -- direct organization FAT_C_SPECIAL : constant := 4; -- Special file organization FAT_M_FORTRANCC : constant := 16#00000001#; FAT_M_IMPLIEDCC : constant := 16#00000002#; FAT_M_PRINTCC : constant := 16#00000004#; FAT_M_NOSPAN : constant := 16#00000008#; FAT_M_MSBRCW : constant := 16#00000010#; FAT_C_FIFO : constant := 1; -- FIFO special file FAT_C_CHAR_SPECIAL : constant := 2; -- character special file FAT_C_BLOCK_SPECIAL : constant := 3; -- block special file FAT_C_SYMLINK : constant := 4; -- symbolic link special file for pre-V8.2 FAT_C_SYMBOLIC_LINK : constant := 5; -- symbolic link special file for V8.2 and beyond FAT_M_GBC_PERCENT : constant := 16#00000001#; FAT_M_GBC_DEFAULT : constant := 16#00000002#; FAT_K_LENGTH : constant := 32; FAT_C_LENGTH : constant := 32; FAT_S_FATDEF : constant := 32; -- Old size name - synonym type FAT_RTYPE_TYPE is -- record type record RTYPE : UNSIGNED_4; -- record type subfield FILEORG : UNSIGNED_4; -- file organization end record; for FAT_RTYPE_TYPE use record RTYPE at 0 range 0 .. 3; FILEORG at 0 range 4 .. 7; end record; for FAT_RTYPE_TYPE'SIZE use 8; FAT_RTYPE_TYPE_INIT : constant FAT_RTYPE_TYPE := (RTYPE => 0, FILEORG => 0); type FAT_RATTRIB_TYPE is -- record attributes record FORTRANCC : BOOLEAN; -- Fortran carriage control IMPLIEDCC : BOOLEAN; -- implied carriage control PRINTCC : BOOLEAN; -- print file carriage control NOSPAN : BOOLEAN; -- no spanned records MSBRCW : BOOLEAN; -- Format of RCW (0=LSB, 1=MSB) FILLER_1 : UNSIGNED_3; -- MBZ (or should be zero) ----Component(s) below are defined as comments since they ----overlap other fields ---- ----SPECIAL_TYPE : UNSIGNED_BYTE; -- type of special file -- (record attributes are -- meaningless for special files) end record; for FAT_RATTRIB_TYPE use record FORTRANCC at 0 range 0 .. 0; IMPLIEDCC at 0 range 1 .. 1; PRINTCC at 0 range 2 .. 2; NOSPAN at 0 range 3 .. 3; MSBRCW at 0 range 4 .. 4; FILLER_1 at 0 range 5 .. 7; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----SPECIAL_TYPE at 0 range 0 .. 7; end record; for FAT_RATTRIB_TYPE'SIZE use 8; FAT_RATTRIB_TYPE_INIT : constant FAT_RATTRIB_TYPE := (FORTRANCC => FALSE, IMPLIEDCC => FALSE, PRINTCC => FALSE, NOSPAN => FALSE, MSBRCW => FALSE, FILLER_1 => 0); type FAT_HIBLK_TYPE is -- highest allocated VBN record HIBLKH : UNSIGNED_WORD; -- high order word HIBLKL : UNSIGNED_WORD; -- low order word end record; for FAT_HIBLK_TYPE use record HIBLKH at 0 range 0 .. 15; HIBLKL at 2 range 0 .. 15; end record; for FAT_HIBLK_TYPE'SIZE use 32; FAT_HIBLK_TYPE_INIT : constant FAT_HIBLK_TYPE := (HIBLKH => 0, HIBLKL => 0); type FAT_EFBLK_TYPE is -- end of file VBN record EFBLKH : UNSIGNED_WORD; -- high order word EFBLKL : UNSIGNED_WORD; -- low order word end record; for FAT_EFBLK_TYPE use record EFBLKH at 0 range 0 .. 15; EFBLKL at 2 range 0 .. 15; end record; for FAT_EFBLK_TYPE'SIZE use 32; FAT_EFBLK_TYPE_INIT : constant FAT_EFBLK_TYPE := (EFBLKH => 0, EFBLKL => 0); type FAT_RECATTR_FLAGS_TYPE is -- flags for record attribute area record GBC_PERCENT : BOOLEAN; -- Interpret value in GBC32 as percent instead of count GBC_DEFAULT : BOOLEAN; -- RMS should set default for GBC at runtime and ignore -- any values in GBC16 or GBC32 FILLER_1 : UNSIGNED_6; -- Reserved for future use end record; for FAT_RECATTR_FLAGS_TYPE use record GBC_PERCENT at 0 range 0 .. 0; GBC_DEFAULT at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 7; end record; for FAT_RECATTR_FLAGS_TYPE'SIZE use 8; FAT_RECATTR_FLAGS_TYPE_INIT : constant FAT_RECATTR_FLAGS_TYPE := (GBC_PERCENT => FALSE, GBC_DEFAULT => FALSE, FILLER_1 => 0); type FAT_TYPE is record RTYPE : FAT_RTYPE_TYPE; -- record type RATTRIB : FAT_RATTRIB_TYPE; -- record attributes RSIZE : UNSIGNED_WORD; -- record size in bytes HIBLK : FAT_HIBLK_TYPE; -- highest allocated VBN EFBLK : FAT_EFBLK_TYPE; -- end of file VBN FFBYTE : UNSIGNED_WORD; -- first free byte in EFBLK BKTSIZE : UNSIGNED_BYTE; -- bucket size in blocks VFCSIZE : UNSIGNED_BYTE; -- size in bytes of fixed length control for VFC records MAXREC : UNSIGNED_WORD; -- maximum record size in bytes DEFEXT : UNSIGNED_WORD; -- default extend quantity GBC : UNSIGNED_WORD; -- global buffer count (original word) ----Component(s) below are defined as comments since they ----overlap other fields ---- ----GBC16 : UNSIGNED_WORD; -- Alias RECATTR_FLAGS : FAT_RECATTR_FLAGS_TYPE; -- flags for record attribute area FILLER_1 : UNSIGNED_BYTE; -- reserved for future use (possible flags word union) GBC32 : UNSIGNED_LONGWORD; -- longword implementation of global buffer count FILLER_2 : UNSIGNED_WORD; -- spare space documented as unused in I/O REF VERSIONS : UNSIGNED_WORD; -- default version limit for directory file end record; for FAT_TYPE use record RTYPE at 0 range 0 .. 7; RATTRIB at 1 range 0 .. 7; RSIZE at 2 range 0 .. 15; HIBLK at 4 range 0 .. 31; EFBLK at 8 range 0 .. 31; FFBYTE at 12 range 0 .. 15; BKTSIZE at 14 range 0 .. 7; VFCSIZE at 15 range 0 .. 7; MAXREC at 16 range 0 .. 15; DEFEXT at 18 range 0 .. 15; GBC at 20 range 0 .. 15; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----GBC16 at 20 range 0 .. 15; RECATTR_FLAGS at 22 range 0 .. 7; FILLER_1 at 23 range 0 .. 7; GBC32 at 24 range 0 .. 31; FILLER_2 at 28 range 0 .. 15; VERSIONS at 30 range 0 .. 15; end record; for FAT_TYPE'SIZE use 256; FAT_TYPE_INIT : constant FAT_TYPE := ( RTYPE => FAT_RTYPE_TYPE_INIT, RATTRIB => FAT_RATTRIB_TYPE_INIT, RSIZE => 0, HIBLK => FAT_HIBLK_TYPE_INIT, EFBLK => FAT_EFBLK_TYPE_INIT, FFBYTE => 0, BKTSIZE => 0, VFCSIZE => 0, MAXREC => 0, DEFEXT => 0, GBC => 0, RECATTR_FLAGS => FAT_RECATTR_FLAGS_TYPE_INIT, FILLER_1 => 0, GBC32 => 0, FILLER_2 => 0, VERSIONS => 0); -- module $HM1DEF --+ -- -- Home block definitions for Files-11 Structure Level 1 -- --- HM1_C_LEVEL1 : constant := 257; -- 401 octal = structure level 1 HM1_C_LEVEL2 : constant := 258; -- 402 octal = structure level 1, version 2 HM1_S_HM1DEF : constant := 512; -- Old size name - synonym type HM1_PROTECT_TYPE is -- volume protection record SYSPRO : UNSIGNED_4; -- system protection OWNPRO : UNSIGNED_4; -- owner protection GROUPPRO : UNSIGNED_4; -- group protection WORLDPRO : UNSIGNED_4; -- world protection end record; for HM1_PROTECT_TYPE use record SYSPRO at 0 range 0 .. 3; OWNPRO at 0 range 4 .. 7; GROUPPRO at 1 range 0 .. 3; WORLDPRO at 1 range 4 .. 7; end record; for HM1_PROTECT_TYPE'SIZE use 16; HM1_PROTECT_TYPE_INIT : constant HM1_PROTECT_TYPE := (SYSPRO => 0, OWNPRO => 0, GROUPPRO => 0, WORLDPRO => 0); type HM1_TYPE is record IBMAPSIZE : UNSIGNED_WORD; -- index file bitmap size, blocks IBMAPLBN : UNSIGNED_LONGWORD; -- index file bitmap starting LBN MAXFILES : UNSIGNED_WORD; -- maximum ! files on volume CLUSTER : UNSIGNED_WORD; -- storage bitmap cluster factor DEVTYPE : UNSIGNED_WORD; -- disk device type STRUCLEV : UNSIGNED_WORD; -- volume structure level VOLNAME : STRING(1 .. 12); -- volume name (ASCII) FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 4); -- spare VOLOWNER : UNSIGNED_WORD; -- volume owner UIC PROTECT : HM1_PROTECT_TYPE; -- volume protection VOLCHAR : UNSIGNED_WORD; -- volume characteristics FILEPROT : UNSIGNED_WORD; -- default file protection FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 6); -- spare WINDOW : UNSIGNED_BYTE; -- default window size EXTEND : UNSIGNED_BYTE; -- default file extend LRU_LIM : UNSIGNED_BYTE; -- default LRU limit FILLER_3 : UNSIGNED_BYTE_ARRAY (1 .. 11); -- spare CHECKSUM1 : UNSIGNED_WORD; -- first checksum CREDATE : STRING(1 .. 14); -- volume creation date FILLER_4 : UNSIGNED_BYTE_ARRAY (1 .. 382); -- spare SERIALNUM : UNSIGNED_LONGWORD; -- pack serial number FILLER_5 : UNSIGNED_BYTE_ARRAY (1 .. 12); -- reserved VOLNAME2 : STRING(1 .. 12); -- 2nd copy of volume name OWNERNAME : STRING(1 .. 12); -- volume owner name FORMAT : STRING(1 .. 12); -- volume format type FILLER_6 : UNSIGNED_BYTE_ARRAY (1 .. 2); -- spare CHECKSUM2 : UNSIGNED_WORD; -- second checksum end record; for HM1_TYPE use record IBMAPSIZE at 0 range 0 .. 15; IBMAPLBN at 2 range 0 .. 31; MAXFILES at 6 range 0 .. 15; CLUSTER at 8 range 0 .. 15; DEVTYPE at 10 range 0 .. 15; STRUCLEV at 12 range 0 .. 15; VOLNAME at 14 range 0 .. 95; FILLER_1 at 26 range 0 .. 31; VOLOWNER at 30 range 0 .. 15; PROTECT at 32 range 0 .. 15; VOLCHAR at 34 range 0 .. 15; FILEPROT at 36 range 0 .. 15; FILLER_2 at 38 range 0 .. 47; WINDOW at 44 range 0 .. 7; EXTEND at 45 range 0 .. 7; LRU_LIM at 46 range 0 .. 7; FILLER_3 at 47 range 0 .. 87; CHECKSUM1 at 58 range 0 .. 15; CREDATE at 60 range 0 .. 111; FILLER_4 at 74 range 0 .. 3055; SERIALNUM at 456 range 0 .. 31; FILLER_5 at 460 range 0 .. 95; VOLNAME2 at 472 range 0 .. 95; OWNERNAME at 484 range 0 .. 95; FORMAT at 496 range 0 .. 95; FILLER_6 at 508 range 0 .. 15; CHECKSUM2 at 510 range 0 .. 15; end record; for HM1_TYPE'SIZE use 4096; HM1_TYPE_INIT : constant HM1_TYPE := (IBMAPSIZE => 0, IBMAPLBN => 0, MAXFILES => 0, CLUSTER => 0, DEVTYPE => 0, STRUCLEV => 0, VOLNAME => (others => ASCII.NUL), FILLER_1 => (others => 0), VOLOWNER => 0, PROTECT => HM1_PROTECT_TYPE_INIT, VOLCHAR => 0, FILEPROT => 0, FILLER_2 => (others => 0), WINDOW => 0, EXTEND => 0, LRU_LIM => 0, FILLER_3 => (others => 0), CHECKSUM1 => 0, CREDATE => (others => ASCII.NUL), FILLER_4 => (others => 0), SERIALNUM => 0, FILLER_5 => (others => 0), VOLNAME2 => (others => ASCII.NUL), OWNERNAME => (others => ASCII.NUL), FORMAT => (others => ASCII.NUL), FILLER_6 => (others => 0), CHECKSUM2 => 0); -- module $HM2DEF --+ -- -- Home block definitions for Files-11 Structure Level 2 -- --- HM2_C_LEVEL1 : constant := 257; -- 401 octal = structure level 1 HM2_C_LEVEL2 : constant := 512; -- 1000 octal = structure level 2 HM2_C_LEVEL5 : constant := 1280; -- 2400 octal = structure level 5 HM2_C_LEVEL6 : constant := 1536; -- 3000 octal = structure level 6 HM2_M_READCHECK : constant := 16#00000001#; HM2_M_WRITCHECK : constant := 16#00000002#; HM2_M_ERASE : constant := 16#00000004#; HM2_M_NOHIGHWATER : constant := 16#00000008#; HM2_M_CLASS_PROT : constant := 16#00000010#; HM2_M_ACCESSTIMES : constant := 16#00000020#; HM2_M_HARDLINKS : constant := 16#00000040#; HM2_M_NO_SPECIAL_FILES : constant := 16#00000080#; HM2_S_HM2DEF : constant := 512; -- Old size name - synonym type HM2_STRUCLEV_TYPE is -- volume structure level record STRUCVER : UNSIGNED_BYTE; -- structure version number STRUCLEV : UNSIGNED_BYTE; -- main structure level end record; for HM2_STRUCLEV_TYPE use record STRUCVER at 0 range 0 .. 7; STRUCLEV at 1 range 0 .. 7; end record; for HM2_STRUCLEV_TYPE'SIZE use 16; HM2_STRUCLEV_TYPE_INIT : constant HM2_STRUCLEV_TYPE := (STRUCVER => 0, STRUCLEV => 0); type HM2_VOLCHAR_BITS_TYPE is record READCHECK : BOOLEAN; -- verify all read operations WRITCHECK : BOOLEAN; -- verify all write operations ERASE : BOOLEAN; -- erase all files on delete NOHIGHWATER : BOOLEAN; -- turn off high-water marking CLASS_PROT : BOOLEAN; -- enable classification checks on the volume ACCESSTIMES : BOOLEAN; -- enable access time HARDLINKS : BOOLEAN; -- enable hardlinks NO_SPECIAL_FILES : BOOLEAN; -- disable special files end record; for HM2_VOLCHAR_BITS_TYPE use record READCHECK at 0 range 0 .. 0; WRITCHECK at 0 range 1 .. 1; ERASE at 0 range 2 .. 2; NOHIGHWATER at 0 range 3 .. 3; CLASS_PROT at 0 range 4 .. 4; ACCESSTIMES at 0 range 5 .. 5; HARDLINKS at 0 range 6 .. 6; NO_SPECIAL_FILES at 0 range 7 .. 7; end record; for HM2_VOLCHAR_BITS_TYPE'SIZE use 8; HM2_VOLCHAR_BITS_TYPE_INIT : constant HM2_VOLCHAR_BITS_TYPE := (READCHECK => FALSE, WRITCHECK => FALSE, ERASE => FALSE, NOHIGHWATER => FALSE, CLASS_PROT => FALSE, ACCESSTIMES => FALSE, HARDLINKS => FALSE, NO_SPECIAL_FILES => FALSE); type HM2_MIN_CLASS_TYPE is -- volume minimum security class record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 20); end record; for HM2_MIN_CLASS_TYPE use record FILLER_1 at 0 range 0 .. 159; end record; for HM2_MIN_CLASS_TYPE'SIZE use 160; HM2_MIN_CLASS_TYPE_INIT : constant HM2_MIN_CLASS_TYPE := (FILLER_1 => (others => 0)); type HM2_MAX_CLASS_TYPE is -- volume maximum security class record FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 20); end record; for HM2_MAX_CLASS_TYPE use record FILLER_1 at 0 range 0 .. 159; end record; for HM2_MAX_CLASS_TYPE'SIZE use 160; HM2_MAX_CLASS_TYPE_INIT : constant HM2_MAX_CLASS_TYPE := (FILLER_1 => (others => 0)); type HM2_LOWSTRUCLEV_TYPE is -- lowest struclev on volume record LOWSTRUCVER : UNSIGNED_BYTE; -- structure version number LOWSTRUCLEV : UNSIGNED_BYTE; -- main structure level end record; for HM2_LOWSTRUCLEV_TYPE use record LOWSTRUCVER at 0 range 0 .. 7; LOWSTRUCLEV at 1 range 0 .. 7; end record; for HM2_LOWSTRUCLEV_TYPE'SIZE use 16; HM2_LOWSTRUCLEV_TYPE_INIT : constant HM2_LOWSTRUCLEV_TYPE := (LOWSTRUCVER => 0, LOWSTRUCLEV => 0); type HM2_HIGHSTRUCLEV_TYPE is -- highest struclev on volume record HIGHSTRUCVER : UNSIGNED_BYTE; -- structure version number HIGHSTRUCLEV : UNSIGNED_BYTE; -- main structure level end record; for HM2_HIGHSTRUCLEV_TYPE use record HIGHSTRUCVER at 0 range 0 .. 7; HIGHSTRUCLEV at 1 range 0 .. 7; end record; for HM2_HIGHSTRUCLEV_TYPE'SIZE use 16; HM2_HIGHSTRUCLEV_TYPE_INIT : constant HM2_HIGHSTRUCLEV_TYPE := (HIGHSTRUCVER => 0, HIGHSTRUCLEV => 0); type HM2_TYPE is record HOMELBN : UNSIGNED_LONGWORD; -- LBN of home (i.e., this) block ALHOMELBN : UNSIGNED_LONGWORD; -- LBN of alternate home block ALTIDXLBN : UNSIGNED_LONGWORD; -- LBN of alternate index file header STRUCLEV : HM2_STRUCLEV_TYPE; -- volume structure level CLUSTER : UNSIGNED_WORD; -- storage bitmap cluster factor HOMEVBN : UNSIGNED_WORD; -- VBN of home (i.e., this) block ALHOMEVBN : UNSIGNED_WORD; -- VBN of alternate home block ALTIDXVBN : UNSIGNED_WORD; -- VBN of alternate index file header IBMAPVBN : UNSIGNED_WORD; -- VBN of index file bitmap IBMAPLBN : UNSIGNED_LONGWORD; -- LBN of index file bitmap MAXFILES : UNSIGNED_LONGWORD; -- maximum ! files on volume IBMAPSIZE : UNSIGNED_WORD; -- index file bitmap size, blocks RESFILES : UNSIGNED_WORD; -- ! reserved files on volume DEVTYPE : UNSIGNED_WORD; -- disk device type RVN : UNSIGNED_WORD; -- relative volume number of this volume SETCOUNT : UNSIGNED_WORD; -- count of volumes in set VOLCHAR : UNSIGNED_WORD; -- volume characteristics ----Component(s) below are defined as comments since they ----overlap other fields ---- ----VOLCHAR_BITS : HM2_VOLCHAR_BITS_TYPE; VOLOWNER : UNSIGNED_LONGWORD; -- volume owner UIC SEC_MASK : UNSIGNED_LONGWORD; -- volume security mask PROTECT : UNSIGNED_WORD; -- volume protection FILEPROT : UNSIGNED_WORD; -- default file protection RECPROT : UNSIGNED_WORD; -- default file record protection CHECKSUM1 : UNSIGNED_WORD; -- first checksum CREDATE : UNSIGNED_QUADWORD; -- volume creation date WINDOW : UNSIGNED_BYTE; -- default window size LRU_LIM : UNSIGNED_BYTE; -- default LRU limit EXTEND : UNSIGNED_WORD; -- default file extend RETAINMIN : UNSIGNED_QUADWORD; -- minimum file retention period RETAINMAX : UNSIGNED_QUADWORD; -- maximum file retention period REVDATE : UNSIGNED_QUADWORD; -- volume revision date MIN_CLASS : HM2_MIN_CLASS_TYPE; -- volume minimum security class MAX_CLASS : HM2_MAX_CLASS_TYPE; -- volume maximum security class FILETAB_FID : UNSIGNED_WORD_ARRAY (1 .. 3); -- file lookup table FID LOWSTRUCLEV : HM2_LOWSTRUCLEV_TYPE; -- lowest struclev on volume HIGHSTRUCLEV : HM2_HIGHSTRUCLEV_TYPE; -- highest struclev on volume COPYDATE : UNSIGNED_QUADWORD; -- volume copy date ACCESSDELTA : UNSIGNED_QUADWORD; -- granularity for access time VIBOFFSET : UNSIGNED_WORD; -- Offset in bytes to VIB (ODS6 Volume Information Block) VIBSIZE : UNSIGNED_WORD; -- Size in bytes of VIB FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 2); -- Filler to reestablish alignment FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 288); -- spare SERIALNUM : UNSIGNED_LONGWORD; -- pack serial number STRUCNAME : STRING(1 .. 12); -- structure (volume set name) VOLNAME : STRING(1 .. 12); -- volume name OWNERNAME : STRING(1 .. 12); -- volume owner name FORMAT : STRING(1 .. 12); -- volume format type FILLER_3 : UNSIGNED_BYTE_ARRAY (1 .. 2); -- spare CHECKSUM2 : UNSIGNED_WORD; -- second checksum end record; for HM2_TYPE use record HOMELBN at 0 range 0 .. 31; ALHOMELBN at 4 range 0 .. 31; ALTIDXLBN at 8 range 0 .. 31; STRUCLEV at 12 range 0 .. 15; CLUSTER at 14 range 0 .. 15; HOMEVBN at 16 range 0 .. 15; ALHOMEVBN at 18 range 0 .. 15; ALTIDXVBN at 20 range 0 .. 15; IBMAPVBN at 22 range 0 .. 15; IBMAPLBN at 24 range 0 .. 31; MAXFILES at 28 range 0 .. 31; IBMAPSIZE at 32 range 0 .. 15; RESFILES at 34 range 0 .. 15; DEVTYPE at 36 range 0 .. 15; RVN at 38 range 0 .. 15; SETCOUNT at 40 range 0 .. 15; VOLCHAR at 42 range 0 .. 15; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----VOLCHAR_BITS at 42 range 0 .. 7; VOLOWNER at 44 range 0 .. 31; SEC_MASK at 48 range 0 .. 31; PROTECT at 52 range 0 .. 15; FILEPROT at 54 range 0 .. 15; RECPROT at 56 range 0 .. 15; CHECKSUM1 at 58 range 0 .. 15; CREDATE at 60 range 0 .. 63; WINDOW at 68 range 0 .. 7; LRU_LIM at 69 range 0 .. 7; EXTEND at 70 range 0 .. 15; RETAINMIN at 72 range 0 .. 63; RETAINMAX at 80 range 0 .. 63; REVDATE at 88 range 0 .. 63; MIN_CLASS at 96 range 0 .. 159; MAX_CLASS at 116 range 0 .. 159; FILETAB_FID at 136 range 0 .. 47; LOWSTRUCLEV at 142 range 0 .. 15; HIGHSTRUCLEV at 144 range 0 .. 15; COPYDATE at 146 range 0 .. 63; ACCESSDELTA at 154 range 0 .. 63; VIBOFFSET at 162 range 0 .. 15; VIBSIZE at 164 range 0 .. 15; FILLER_1 at 166 range 0 .. 15; FILLER_2 at 168 range 0 .. 2303; SERIALNUM at 456 range 0 .. 31; STRUCNAME at 460 range 0 .. 95; VOLNAME at 472 range 0 .. 95; OWNERNAME at 484 range 0 .. 95; FORMAT at 496 range 0 .. 95; FILLER_3 at 508 range 0 .. 15; CHECKSUM2 at 510 range 0 .. 15; end record; for HM2_TYPE'SIZE use 4096; HM2_TYPE_INIT : constant HM2_TYPE := (HOMELBN => 0, ALHOMELBN => 0, ALTIDXLBN => 0, STRUCLEV => HM2_STRUCLEV_TYPE_INIT, CLUSTER => 0, HOMEVBN => 0, ALHOMEVBN => 0, ALTIDXVBN => 0, IBMAPVBN => 0, IBMAPLBN => 0, MAXFILES => 0, IBMAPSIZE => 0, RESFILES => 0, DEVTYPE => 0, RVN => 0, SETCOUNT => 0, VOLCHAR => 0, VOLOWNER => 0, SEC_MASK => 0, PROTECT => 0, FILEPROT => 0, RECPROT => 0, CHECKSUM1 => 0, CREDATE => (0, 0), WINDOW => 0, LRU_LIM => 0, EXTEND => 0, RETAINMIN => (0, 0), RETAINMAX => (0, 0), REVDATE => (0, 0), MIN_CLASS => HM2_MIN_CLASS_TYPE_INIT, MAX_CLASS => HM2_MAX_CLASS_TYPE_INIT, FILETAB_FID => (others => 0), LOWSTRUCLEV => HM2_LOWSTRUCLEV_TYPE_INIT, HIGHSTRUCLEV => HM2_HIGHSTRUCLEV_TYPE_INIT, COPYDATE => (0, 0), ACCESSDELTA => (0, 0), VIBOFFSET => 0, VIBSIZE => 0, FILLER_1 => (others => 0), FILLER_2 => (others => 0), SERIALNUM => 0, STRUCNAME => (others => ASCII.NUL), VOLNAME => (others => ASCII.NUL), OWNERNAME => (others => ASCII.NUL), FORMAT => (others => ASCII.NUL), FILLER_3 => (others => 0), CHECKSUM2 => 0); -- Type of homeblock placement deltas. -- Code assumes these are zero-based and increase monotonically -- HM2_C_REQ_DELTA_GEOM_DEPEND : constant := 0; -- dependent on disk geometry HM2_C_REQ_DELTA_GEOM_INDEPEND : constant := 1; -- independent of disk geometry HM2_C_REQ_DELTA_FIXED_CONTIG : constant := 2; -- fixed so index file will be contig (for Dollar) HM2_C_GEOM_INDEPEND_DELTA : constant := 1033; -- actual geometry independent delta -- this is a prime > 1000 HM2_C_FIXED_CONTIG_DELTA : constant := 1; -- fixed delta for contiguous index file HM2_C_LIMITED_SEARCH_LENGTH : constant := 255; -- number of blocks to check in a limited search -- module $DIRDEF --+ -- -- Directory entry structure for Files-11 Structure Level 2 -- --- DIR_C_FID : constant := 0; -- normal file ID DIR_C_LINKNAME : constant := 1; -- symbolic name (obsolete, not used) -- Filename encoding codes. DIR_C_ODS2 : constant := 0; -- ODS-2 legal ASCII DIR_C_ISL1 : constant := 1; -- ODS-2 illegal ASCII or ISO LATIN-1 DIR_TYPE_RESERVED : constant := 2; DIR_C_UCS2 : constant := 3; -- Unicode USC-2 (16 bit characters) -- NOTE - The values of DIR$C_ODS2 et al. must be the same as the corresponding DIR_K_LENGTH : constant := 6; -- length of directory entry overhead DIR_C_LENGTH : constant := 6; -- length of directory entry overhead DIR_S_NAME : constant := 80; -- maximum length of name string DIR_S_ODS5_NAME : constant := 236; -- maximum length of name string (ODS-5) DIR_S_DIRDEF : constant := 6; -- Old size name - synonym type DIR_FLAGS_OBSOLETE_TYPE is -- the following two flags are obsolete and were never implemented record FILLER_1 : UNSIGNED_6; NEXTREC : BOOLEAN; -- another record of same name & type follows PREVREC : BOOLEAN; -- another record of same name & type precedes end record; for DIR_FLAGS_OBSOLETE_TYPE use record FILLER_1 at 0 range 0 .. 5; NEXTREC at 0 range 6 .. 6; PREVREC at 0 range 7 .. 7; end record; for DIR_FLAGS_OBSOLETE_TYPE'SIZE use 8; DIR_FLAGS_OBSOLETE_TYPE_INIT : constant DIR_FLAGS_OBSOLETE_TYPE := (FILLER_1 => 0, NEXTREC => FALSE, PREVREC => FALSE); type DIR_FLAGS_TYPE is -- status flags record TYP : UNSIGNED_3; -- directory entry type NAMETYPE : UNSIGNED_3; -- Filename encoding type SPECIAL : BOOLEAN; -- directory entry points to a special file FILLER_1 : BOOLEAN; ----Component(s) below are defined as comments since they ----overlap other fields ---- ----FLAGS_OBSOLETE : DIR_FLAGS_OBSOLETE_TYPE; -- the following two flags are obsolete and were never implemented -- directory entry type codes -- values for name encoding in FI5DEF and FIBDEF. end record; for DIR_FLAGS_TYPE use record TYP at 0 range 0 .. 2; NAMETYPE at 0 range 3 .. 5; SPECIAL at 0 range 6 .. 6; FILLER_1 at 0 range 7 .. 7; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----FLAGS_OBSOLETE at 0 range 0 .. 7; end record; for DIR_FLAGS_TYPE'SIZE use 8; DIR_FLAGS_TYPE_INIT : constant DIR_FLAGS_TYPE := (TYP => 0, NAMETYPE => 0, SPECIAL => FALSE, FILLER_1 => FALSE); type DIR_NAMECOUNT_TYPE is -- byte count of name string record FILLER_1 : UNSIGNED_BYTE; NAME : STRING(1 .. 0); -- name string -- the version numbers and file ID's follow the -- variable length name area in the form of a -- blockvector. Each entry is as follows: end record; for DIR_NAMECOUNT_TYPE use record FILLER_1 at 0 range 0 .. 7; NAME at 1 range 0 .. -1; end record; for DIR_NAMECOUNT_TYPE'SIZE use 8; DIR_NAMECOUNT_TYPE_INIT : constant DIR_NAMECOUNT_TYPE := (FILLER_1 => 0, NAME => (others => ASCII.NUL)); type DIR_TYPE is record SIZE : UNSIGNED_WORD; -- size of directory record in bytes VERLIMIT : UNSIGNED_WORD; -- maximum number of versions FLAGS : DIR_FLAGS_TYPE; -- status flags NAMECOUNT : DIR_NAMECOUNT_TYPE; -- byte count of name string end record; for DIR_TYPE use record SIZE at 0 range 0 .. 15; VERLIMIT at 2 range 0 .. 15; FLAGS at 4 range 0 .. 7; NAMECOUNT at 5 range 0 .. 7; end record; for DIR_TYPE'SIZE use 48; DIR_TYPE_INIT : constant DIR_TYPE := (SIZE => 0, VERLIMIT => 0, FLAGS => DIR_FLAGS_TYPE_INIT, NAMECOUNT => DIR_NAMECOUNT_TYPE_INIT ); DIR_K_VERSION : constant := 8; -- size of each version entry DIR_C_VERSION : constant := 8; -- size of each version entry DIR_S_DIRDEF1 : constant := 8; -- Old size name - synonym type DIR_FID_RVN_TYPE is -- relative volume number record FID_RVN : UNSIGNED_BYTE; -- alternate format RVN FID_NMX : UNSIGNED_BYTE; -- alternate format file number extension end record; for DIR_FID_RVN_TYPE use record FID_RVN at 0 range 0 .. 7; FID_NMX at 1 range 0 .. 7; end record; for DIR_FID_RVN_TYPE'SIZE use 16; DIR_FID_RVN_TYPE_INIT : constant DIR_FID_RVN_TYPE := (FID_RVN => 0, FID_NMX => 0); type DIR_FID_COMPONENT_TYPE is -- file ID record FID_NUM : UNSIGNED_WORD; -- file number FID_SEQ : UNSIGNED_WORD; -- file sequence number FID_RVN : DIR_FID_RVN_TYPE; -- relative volume number end record; for DIR_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; end record; for DIR_FID_COMPONENT_TYPE'SIZE use 48; DIR_FID_COMPONENT_TYPE_INIT : constant DIR_FID_COMPONENT_TYPE := (FID_NUM => 0, FID_SEQ => 0, FID_RVN => DIR_FID_RVN_TYPE_INIT ); TYPE DIR_FID_TYPE is ARRAY (1 .. 3) of DIR_FID_COMPONENT_TYPE; DIR_FID_TYPE_INIT : constant DIR_FID_TYPE := ( others => DIR_FID_COMPONENT_TYPE_INIT); type DIR1_TYPE is record VERSION : INTEGER_16; -- version number FID : DIR_FID_COMPONENT_TYPE; -- file ID end record; for DIR1_TYPE use record VERSION at 0 range 0 .. 15; FID at 2 range 0 .. 47; end record; for DIR1_TYPE'SIZE use 64; DIR1_TYPE_INIT : constant DIR1_TYPE := (VERSION => 0, FID => DIR_FID_COMPONENT_TYPE_INIT ); DIR_S_DIRDEF2 : constant := 1; -- Old size name - synonym type DIR2_TYPE is record LINKNAME : CHARACTER; -- symbolic link name (counted string) end record; for DIR2_TYPE use record LINKNAME at 0 range 0 .. 7; end record; for DIR2_TYPE'SIZE use 8; DIR2_TYPE_INIT : constant DIR2_TYPE := (LINKNAME => ASCII.NUL); -- module $SCBDEF --+ -- -- Format of storage control block, Files-11 Structure Level 2 -- --- SCB_C_LEVEL2 : constant := 512; -- 1000 octal = structure level 2 SCB_C_LEVEL5 : constant := 1280; -- 2400 octal = structure level 5 SCB_C_LEVEL6 : constant := 1536; -- 3000 octal = structure level 6 SCB_M_MAPDIRTY : constant := 16#00000001#; SCB_M_MAPALLOC : constant := 16#00000002#; SCB_M_FILALLOC : constant := 16#00000004#; SCB_M_QUODIRTY : constant := 16#00000008#; SCB_M_HDRWRITE : constant := 16#00000010#; SCB_M_CORRUPT : constant := 16#00000020#; SCB_M_MAPDIRTY2 : constant := 16#00000001#; SCB_M_MAPALLOC2 : constant := 16#00000002#; SCB_M_FILALLOC2 : constant := 16#00000004#; SCB_M_QUODIRTY2 : constant := 16#00000008#; SCB_M_HDRWRITE2 : constant := 16#00000010#; SCB_M_CORRUPT2 : constant := 16#00000020#; SCB_M_NORMAL : constant := 16#00000001#; SCB_M_NEW : constant := 16#00000002#; SCB_M_COPYING : constant := 16#00000020#; SCB_M_MERGING : constant := 16#00000040#; SCB_M_MINIMRG : constant := 16#00000080#; SCB_M_COPY_RESET : constant := 16#00000100#; SCB_M_BOOTING : constant := 16#00000200#; SCB_M_SCB_WLG : constant := 16#00000400#; SCB_M_MUST_MRG : constant := 16#00004000#; SCB_M_FAILED : constant := 16#00008000#; SCB_M_CPY_RESET : constant := 16#00000100#; SCB_M_WLG : constant := 16#00000400#; SCB_M_MBR_FCPY : constant := 16#00000001#; SCB_M_MBR_MERGE : constant := 16#00000002#; SCB_M_MBR_CIP : constant := 16#00000004#; SCB_M_MBR_SRC : constant := 16#00000020#; SCB_M_MBR_MFCPY : constant := 16#00000040#; SCB_M_MBR_VALID : constant := 16#00000080#; SCB_M_INIT_NO_ERASE : constant := 16#00000001#; SCB_M_DVE_ENABLED : constant := 16#00000002#; SCB_M_HBVS_MEMBERS_MAY_DIFFER : constant := 16#00000004#; SCB_K_LENGTH : constant := 512; -- Length of Structure SCB_C_LENGTH : constant := 512; -- Length of Structure type SCB_STRUCLEV_TYPE is -- file structure level record STRUCVER : UNSIGNED_BYTE; -- file structure version STRUCLEV : UNSIGNED_BYTE; -- principal file structure level end record; for SCB_STRUCLEV_TYPE use record STRUCVER at 0 range 0 .. 7; STRUCLEV at 1 range 0 .. 7; end record; for SCB_STRUCLEV_TYPE'SIZE use 16; SCB_STRUCLEV_TYPE_INIT : constant SCB_STRUCLEV_TYPE := (STRUCVER => 0, STRUCLEV => 0); type SCB_STATUS_TYPE is -- volume status flags record MAPDIRTY : BOOLEAN; -- storage map is dirty (partially updated) MAPALLOC : BOOLEAN; -- storage map is preallocated (lost blocks) FILALLOC : BOOLEAN; -- file numbers are preallocated (lost header slots) QUODIRTY : BOOLEAN; -- quota file is dirty (partially updated) HDRWRITE : BOOLEAN; -- file headers are write back cached CORRUPT : BOOLEAN; -- file structure is corrupt FILLER_1 : UNSIGNED_26; end record; for SCB_STATUS_TYPE use record MAPDIRTY at 0 range 0 .. 0; MAPALLOC at 0 range 1 .. 1; FILALLOC at 0 range 2 .. 2; QUODIRTY at 0 range 3 .. 3; HDRWRITE at 0 range 4 .. 4; CORRUPT at 0 range 5 .. 5; FILLER_1 at 0 range 6 .. 31; end record; for SCB_STATUS_TYPE'SIZE use 32; SCB_STATUS_TYPE_INIT : constant SCB_STATUS_TYPE := (MAPDIRTY => FALSE, MAPALLOC => FALSE, FILALLOC => FALSE, QUODIRTY => FALSE, HDRWRITE => FALSE, CORRUPT => FALSE, FILLER_1 => 0); type SCB_STATUS2_TYPE is -- backup status - bits must match those above record MAPDIRTY2 : BOOLEAN; -- storage map is dirty (partially updated) MAPALLOC2 : BOOLEAN; -- storage map is preallocated (lost blocks) FILALLOC2 : BOOLEAN; -- file numbers are preallocated (lost header slots) QUODIRTY2 : BOOLEAN; -- quota file is dirty (partially updated) HDRWRITE2 : BOOLEAN; -- file headers are write back cached CORRUPT2 : BOOLEAN; -- file structure is corrupt FILLER_1 : UNSIGNED_26; end record; for SCB_STATUS2_TYPE use record MAPDIRTY2 at 0 range 0 .. 0; MAPALLOC2 at 0 range 1 .. 1; FILALLOC2 at 0 range 2 .. 2; QUODIRTY2 at 0 range 3 .. 3; HDRWRITE2 at 0 range 4 .. 4; CORRUPT2 at 0 range 5 .. 5; FILLER_1 at 0 range 6 .. 31; end record; for SCB_STATUS2_TYPE'SIZE use 32; SCB_STATUS2_TYPE_INIT : constant SCB_STATUS2_TYPE := (MAPDIRTY2 => FALSE, MAPALLOC2 => FALSE, FILALLOC2 => FALSE, QUODIRTY2 => FALSE, HDRWRITE2 => FALSE, CORRUPT2 => FALSE, FILLER_1 => 0); type SCB_SHADOW_STATUS_BITS_TYPE is record NORMAL : BOOLEAN; -- Shadow set populated and online NE : BOOLEAN; -- Newly created, no members yet FILLER_1 : UNSIGNED_3; -- COPYING : BOOLEAN; -- Copy State MERGING : BOOLEAN; -- Merge State MINIMRG : BOOLEAN; -- Mini Merge in progress COPY_RESET : BOOLEAN; -- Reset Shadow Server Copy mode BOOTING : BOOLEAN; -- System Disk shadow set in booting state SCB_WLG : BOOLEAN; -- Write Logging Phase 1 enabled FILLER_2 : UNSIGNED_3; -- Reserved MUST_MRG : BOOLEAN; -- This set requires a full merge FAILED : BOOLEAN; -- Shadow set not populated end record; for SCB_SHADOW_STATUS_BITS_TYPE use record NORMAL at 0 range 0 .. 0; NE at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 4; COPYING at 0 range 5 .. 5; MERGING at 0 range 6 .. 6; MINIMRG at 0 range 7 .. 7; COPY_RESET at 1 range 0 .. 0; BOOTING at 1 range 1 .. 1; SCB_WLG at 1 range 2 .. 2; FILLER_2 at 1 range 3 .. 5; MUST_MRG at 1 range 6 .. 6; FAILED at 1 range 7 .. 7; end record; for SCB_SHADOW_STATUS_BITS_TYPE'SIZE use 16; SCB_SHADOW_STATUS_BITS_TYPE_INIT : constant SCB_SHADOW_STATUS_BITS_TYPE := (NORMAL => FALSE, NE => FALSE, FILLER_1 => 0, COPYING => FALSE, MERGING => FALSE, MINIMRG => FALSE, COPY_RESET => FALSE, BOOTING => FALSE, SCB_WLG => FALSE, FILLER_2 => 0, MUST_MRG => FALSE, FAILED => FALSE); type SCB_STATUS_BITS_ING_TYPE is record FILLER_1 : UNSIGNED_8; CPY_RESET : BOOLEAN; -- Copy mode is reset FILLER_2 : BOOLEAN; WLG : BOOLEAN; -- Write logging FILLER_3 : UNSIGNED_5; end record; for SCB_STATUS_BITS_ING_TYPE use record FILLER_1 at 0 range 0 .. 7; CPY_RESET at 1 range 0 .. 0; FILLER_2 at 1 range 1 .. 1; WLG at 1 range 2 .. 2; FILLER_3 at 1 range 3 .. 7; end record; for SCB_STATUS_BITS_ING_TYPE'SIZE use 16; SCB_STATUS_BITS_ING_TYPE_INIT : constant SCB_STATUS_BITS_ING_TYPE := (FILLER_1 => 0, CPY_RESET => FALSE, FILLER_2 => FALSE, WLG => FALSE, FILLER_3 => 0); type SCB_MEMBER_STATUS_TYPE is -- Member status bytes record MBR_FCPY : BOOLEAN; -- Member involved in copy MBR_MERGE : BOOLEAN; -- Member requires a merge MBR_CIP : BOOLEAN; -- Copy (or merge) in progress on this SSM FILLER_1 : BOOLEAN; -- Reserved FILLER_2 : BOOLEAN; -- Reserved MBR_SRC : BOOLEAN; -- Member can be used as a source member MBR_MFCPY : BOOLEAN; -- Minimum copy target member MBR_VALID : BOOLEAN; -- SSM status information is valid end record; for SCB_MEMBER_STATUS_TYPE use record MBR_FCPY at 0 range 0 .. 0; MBR_MERGE at 0 range 1 .. 1; MBR_CIP at 0 range 2 .. 2; FILLER_1 at 0 range 3 .. 3; FILLER_2 at 0 range 4 .. 4; MBR_SRC at 0 range 5 .. 5; MBR_MFCPY at 0 range 6 .. 6; MBR_VALID at 0 range 7 .. 7; end record; for SCB_MEMBER_STATUS_TYPE'SIZE use 8; SCB_MEMBER_STATUS_TYPE_INIT : constant SCB_MEMBER_STATUS_TYPE := (MBR_FCPY => FALSE, MBR_MERGE => FALSE, MBR_CIP => FALSE, FILLER_1 => FALSE, FILLER_2 => FALSE, MBR_SRC => FALSE, MBR_MFCPY => FALSE, MBR_VALID => FALSE); type SCB_SHADOWING_STATUS_TYPE is -- Volume status: record INIT_NO_ERASE : BOOLEAN; -- Shadow set created without INIT /ERASE DVE_ENABLED : BOOLEAN; -- Volume is DVE capable HBVS_MEMBERS_MAY_DIFFER : BOOLEAN; -- HBVS virtual unit VOLSIZE has been increased FILLER_1 : UNSIGNED_13; -- Reserved end record; for SCB_SHADOWING_STATUS_TYPE use record INIT_NO_ERASE at 0 range 0 .. 0; DVE_ENABLED at 0 range 1 .. 1; HBVS_MEMBERS_MAY_DIFFER at 0 range 2 .. 2; FILLER_1 at 0 range 3 .. 15; end record; for SCB_SHADOWING_STATUS_TYPE'SIZE use 16; SCB_SHADOWING_STATUS_TYPE_INIT : constant SCB_SHADOWING_STATUS_TYPE := (INIT_NO_ERASE => FALSE, DVE_ENABLED => FALSE, HBVS_MEMBERS_MAY_DIFFER => FALSE, FILLER_1 => 0); type SCB_TYPE is record STRUCLEV : SCB_STRUCLEV_TYPE; -- file structure level CLUSTER : UNSIGNED_WORD; -- storage map cluster factor VOLSIZE : UNSIGNED_LONGWORD; -- volume size in logical blocks BLKSIZE : UNSIGNED_LONGWORD; -- number of physical blocks per logical block SECTORS : UNSIGNED_LONGWORD; -- number of sectors per track TRACKS : UNSIGNED_LONGWORD; -- number of tracks per cylinder CYLINDER : UNSIGNED_LONGWORD; -- number of cylinders STATUS : SCB_STATUS_TYPE; -- volume status flags STATUS2 : SCB_STATUS2_TYPE; -- backup status - bits must match those above WRITECNT : UNSIGNED_WORD; -- count of write access mounters. VOLOCKNAME : STRING(1 .. 12); -- name used for file system serialization on volume. MOUNTTIME : UNSIGNED_QUADWORD; -- time of last initial mount. BACKREV : UNSIGNED_WORD; -- BACKUP revision number. GENERNUM : UNSIGNED_QUADWORD; -- shadow set revision number. UNIT_ID : UNSIGNED_QUADWORD; -- Virtual Unit specifier SHADOW_STATUS : UNSIGNED_WORD; -- Volume status: ----Component(s) below are defined as comments since they ----overlap other fields ---- ----STATUS : UNSIGNED_WORD; -- Duplicate pointer to status ----SHADOW_STATUS_BITS : SCB_SHADOW_STATUS_BITS_TYPE; ----STATUS_BITS_ING : SCB_STATUS_BITS_ING_TYPE; MEMBER_STATUS : SCB_MEMBER_STATUS_TYPE; -- Member status bytes FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 1); -- Reserved for alignment SCB_MBZ : UNSIGNED_WORD; -- Historically cleared by UPDATE_DISKS MEMBER_IDS : UNSIGNED_QUADWORD_ARRAY (1 .. 3); -- Unit ID for member SCB_LBN : UNSIGNED_LONGWORD; -- Unit Control Block for VU DEVICES : UNSIGNED_BYTE; -- Number of devices in SS MEMBERS : UNSIGNED_BYTE; -- Number of source members MAST_INDX : UNSIGNED_BYTE; -- Array index to Master SSM MRG_TARGETS : UNSIGNED_BYTE; -- Active Merge Targets FC_TARGETS : UNSIGNED_BYTE; -- Active Copy Targets DECRAM_MBRS : UNSIGNED_BYTE; -- Number of DECram devices FILLER_2 : UNSIGNED_BYTE_ARRAY (1 .. 10); -- Reserved for alignment MBZ_V731_PLACEHOLDER : UNSIGNED_QUADWORD; -- WHL_FILE_START quadword unsigned; was the old name -- N.B. The low longword of this cell MUST remain -- defined to prevent latent (HSG80MM) support -- that shipped in MOUNT96 for V73-1 from making -- the wrong decision HBVS_WRITE_COUNT : UNSIGNED_QUADWORD; -- Count of systems that have set enabled for write VALBLK_OFFSET : UNSIGNED_LONGWORD; -- Offset for MOS VALBLK CONSISTENCY_TIMESTAMP : UNSIGNED_QUADWORD; -- HBVS - SYSTIME value when a multiple member virtual unit -- is considered to be in that state HBMC_ORIGINAL_GN : UNSIGNED_QUADWORD; -- Mini Copy initial Generation Number XMEMBER_STATUS : UNSIGNED_BYTE; -- XMBRS Project XMEMBER_IDS : UNSIGNED_QUADWORD_ARRAY (1 .. 16); FILLER_3 : UNSIGNED_BYTE_ARRAY (1 .. 204); -- reserved SHADOWING_STATUS : SCB_SHADOWING_STATUS_TYPE; -- Volume status: CHECKSUM : UNSIGNED_WORD; -- block checksum end record; for SCB_TYPE use record STRUCLEV at 0 range 0 .. 15; CLUSTER at 2 range 0 .. 15; VOLSIZE at 4 range 0 .. 31; BLKSIZE at 8 range 0 .. 31; SECTORS at 12 range 0 .. 31; TRACKS at 16 range 0 .. 31; CYLINDER at 20 range 0 .. 31; STATUS at 24 range 0 .. 31; STATUS2 at 28 range 0 .. 31; WRITECNT at 32 range 0 .. 15; VOLOCKNAME at 34 range 0 .. 95; MOUNTTIME at 46 range 0 .. 63; BACKREV at 54 range 0 .. 15; GENERNUM at 56 range 0 .. 63; UNIT_ID at 64 range 0 .. 63; SHADOW_STATUS at 72 range 0 .. 15; ----Component representation spec(s) below are defined as ----comments since they overlap other fields ---- ----STATUS at 72 range 0 .. 15; ----SHADOW_STATUS_BITS at 72 range 0 .. 15; ----STATUS_BITS_ING at 72 range 0 .. 15; MEMBER_STATUS at 74 range 0 .. 23; FILLER_1 at 77 range 0 .. 7; SCB_MBZ at 78 range 0 .. 15; MEMBER_IDS at 80 range 0 .. 191; SCB_LBN at 104 range 0 .. 31; DEVICES at 108 range 0 .. 7; MEMBERS at 109 range 0 .. 7; MAST_INDX at 110 range 0 .. 7; MRG_TARGETS at 111 range 0 .. 7; FC_TARGETS at 112 range 0 .. 7; DECRAM_MBRS at 113 range 0 .. 7; FILLER_2 at 114 range 0 .. 79; MBZ_V731_PLACEHOLDER at 124 range 0 .. 63; HBVS_WRITE_COUNT at 132 range 0 .. 63; VALBLK_OFFSET at 140 range 0 .. 31; CONSISTENCY_TIMESTAMP at 144 range 0 .. 63; HBMC_ORIGINAL_GN at 152 range 0 .. 63; XMEMBER_STATUS at 160 range 0 .. 7; XMEMBER_IDS at 176 range 0 .. 1023; FILLER_3 at 304 range 0 .. 1631; SHADOWING_STATUS at 508 range 0 .. 15; CHECKSUM at 510 range 0 .. 15; end record; for SCB_TYPE'SIZE use 4096; SCB_TYPE_INIT : constant SCB_TYPE := ( STRUCLEV => SCB_STRUCLEV_TYPE_INIT, CLUSTER => 0, VOLSIZE => 0, BLKSIZE => 0, SECTORS => 0, TRACKS => 0, CYLINDER => 0, STATUS => SCB_STATUS_TYPE_INIT, STATUS2 => SCB_STATUS2_TYPE_INIT, WRITECNT => 0, VOLOCKNAME => (others => ASCII.NUL), MOUNTTIME => (0, 0), BACKREV => 0, GENERNUM => (0, 0), UNIT_ID => (0, 0), SHADOW_STATUS => 0, MEMBER_STATUS => SCB_MEMBER_STATUS_TYPE_INIT, FILLER_1 => (others => 0), SCB_MBZ => 0, MEMBER_IDS => (others => (0, 0)), SCB_LBN => 0, DEVICES => 0, MEMBERS => 0, MAST_INDX => 0, MRG_TARGETS => 0, FC_TARGETS => 0, DECRAM_MBRS => 0, FILLER_2 => (others => 0), MBZ_V731_PLACEHOLDER => (0, 0), HBVS_WRITE_COUNT => (0, 0), VALBLK_OFFSET => 0, CONSISTENCY_TIMESTAMP => (0, 0), HBMC_ORIGINAL_GN => (0, 0), XMEMBER_STATUS => 0, XMEMBER_IDS => (others => (0, 0)), FILLER_3 => (others => 0), SHADOWING_STATUS => SCB_SHADOWING_STATUS_TYPE_INIT, CHECKSUM => 0); -- module $BBMDEF --+ -- -- Bad block map (generated by bad block scan program) -- --- BBM_K_POINTERS : constant := 4; -- start of retrieval pointers BBM_C_POINTERS : constant := 4; -- start of retrieval pointers BBM_S_BBMDEF : constant := 512; -- Old size name - synonym /* retrieval po type BBM_TYPE is record COUNTSIZE : UNSIGNED_BYTE; -- retrieval pointer count field size LBNSIZE : UNSIGNED_BYTE; -- retrieval pointer LBN field size INUSE : UNSIGNED_BYTE; -- number of retrieval words in use AVAIL : UNSIGNED_BYTE; -- number of retrieval words available FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 506); -- pointer space CHECKSUM : UNSIGNED_WORD; -- block checksum end record; for BBM_TYPE use record COUNTSIZE at 0 range 0 .. 7; LBNSIZE at 1 range 0 .. 7; INUSE at 2 range 0 .. 7; AVAIL at 3 range 0 .. 7; FILLER_1 at 4 range 0 .. 4047; CHECKSUM at 510 range 0 .. 15; end record; for BBM_TYPE'SIZE use 4096; BBM_TYPE_INIT : constant BBM_TYPE := (COUNTSIZE => 0, LBNSIZE => 0, INUSE => 0, AVAIL => 0, FILLER_1 => (others => 0), CHECKSUM => 0); BBM_S_BBMDEF1 : constant := 4; -- Old size name - synonym type BBM1_TYPE is record HIGHLBN : UNSIGNED_BYTE; -- high order LBN COUNT : UNSIGNED_BYTE; -- block count LOWLBN : UNSIGNED_WORD; -- low order LBN end record; for BBM1_TYPE use record HIGHLBN at 0 range 0 .. 7; COUNT at 1 range 0 .. 7; LOWLBN at 2 range 0 .. 15; end record; for BBM1_TYPE'SIZE use 32; BBM1_TYPE_INIT : constant BBM1_TYPE := (HIGHLBN => 0, COUNT => 0, LOWLBN => 0); BBM_S_BBMDEF2 : constant := 5; -- Old size name - synonym type BBM2_TYPE is record PREVHLBN : UNSIGNED_BYTE; PREVCOUNT : UNSIGNED_BYTE; PREVLLBN : UNSIGNED_WORD; -- previous retrieval pointer FILLER_1 : UNSIGNED_BYTE; end record; for BBM2_TYPE use record PREVHLBN at 0 range 0 .. 7; PREVCOUNT at 1 range 0 .. 7; PREVLLBN at 2 range 0 .. 15; FILLER_1 at 4 range 0 .. 7; end record; for BBM2_TYPE'SIZE use 40; BBM2_TYPE_INIT : constant BBM2_TYPE := (PREVHLBN => 0, PREVCOUNT => 0, PREVLLBN => 0, FILLER_1 => 0); -- module $BBDDEF --+ -- -- Bad block descriptor (generated by formatters for RK06, RM03, et al) -- --- BBD_K_DESCRIPT : constant := 8; -- start of bad block descriptors BBD_C_DESCRIPT : constant := 8; -- start of bad block descriptors BBD_S_BBDDEF : constant := 512; -- Old size name - synonym type BBD_TYPE is record SERIAL : UNSIGNED_LONGWORD; -- pack serial number RESERVED : UNSIGNED_WORD; -- reserved area (MBZ) FLAGS : UNSIGNED_WORD; -- pack status flags (zero for normal use) FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 500); LASTWORD : UNSIGNED_LONGWORD; -- last longword of block end record; for BBD_TYPE use record SERIAL at 0 range 0 .. 31; RESERVED at 4 range 0 .. 15; FLAGS at 6 range 0 .. 15; FILLER_1 at 8 range 0 .. 3999; LASTWORD at 508 range 0 .. 31; end record; for BBD_TYPE'SIZE use 4096; BBD_TYPE_INIT : constant BBD_TYPE := (SERIAL => 0, RESERVED => 0, FLAGS => 0, FILLER_1 => (others => 0), LASTWORD => 0); BBD_K_ENTRY : constant := 4; BBD_C_ENTRY : constant := 4; BBD_S_BBDDEF1 : constant := 4; -- Old size name - synonym type BBD_BADBLOCK_TYPE is -- individual bad block entry record CYLINDER : UNSIGNED_15; -- cylinder number of bad block FILLER_1 : BOOLEAN; SECTOR : UNSIGNED_8; -- sector number of bad block TRACK : UNSIGNED_7; -- track number of bad block FILLER_2 : BOOLEAN; end record; for BBD_BADBLOCK_TYPE use record CYLINDER at 0 range 0 .. 14; FILLER_1 at 1 range 7 .. 7; SECTOR at 2 range 0 .. 7; TRACK at 3 range 0 .. 6; FILLER_2 at 3 range 7 .. 7; end record; for BBD_BADBLOCK_TYPE'SIZE use 32; BBD_BADBLOCK_TYPE_INIT : constant BBD_BADBLOCK_TYPE := (CYLINDER => 0, FILLER_1 => FALSE, SECTOR => 0, TRACK => 0, FILLER_2 => FALSE); type BBD1_TYPE is record BADBLOCK : BBD_BADBLOCK_TYPE; -- individual bad block entry end record; for BBD1_TYPE use record BADBLOCK at 0 range 0 .. 31; end record; for BBD1_TYPE'SIZE use 32; BBD1_TYPE_INIT : constant BBD1_TYPE := ( BADBLOCK => BBD_BADBLOCK_TYPE_INIT ); -- module $VSLDEF --+ -- -- Structure of a volume set list file entry. Record 1 contains the volume -- set name. Record n+1 contains the volume label of RVN n in the volume set. -- --- VSL_K_LENGTH : constant := 64; VSL_C_LENGTH : constant := 64; VSL_S_VSLDEF : constant := 64; -- Old size name - synonym type VSL_TYPE is record NAME : STRING(1 .. 12); -- volume name FILLER_1 : UNSIGNED_BYTE_ARRAY (1 .. 52); -- unused end record; for VSL_TYPE use record NAME at 0 range 0 .. 95; FILLER_1 at 12 range 0 .. 415; end record; for VSL_TYPE'SIZE use 512; VSL_TYPE_INIT : constant VSL_TYPE := (NAME => (others => ASCII.NUL), FILLER_1 => (others => 0)); -- module $PBBDEF --+ -- -- Pending bad block file record format. Each record describes a disk block -- on which an error has occurred which has not been turned over to the bad -- block file. -- --- PBB_M_READERR : constant := 16#00000001#; PBB_M_WRITERR : constant := 16#00000002#; PBB_K_LENGTH : constant := 16; -- length of entry PBB_C_LENGTH : constant := 16; -- length of entry PBB_S_PBBDEF : constant := 16; -- Old size name - synonym type PBB_FLAGS_TYPE is -- status flags record READERR : BOOLEAN; -- read error occurred WRITERR : BOOLEAN; -- write error occurred FILLER_1 : UNSIGNED_6; end record; for PBB_FLAGS_TYPE use record READERR at 0 range 0 .. 0; WRITERR at 0 range 1 .. 1; FILLER_1 at 0 range 2 .. 7; end record; for PBB_FLAGS_TYPE'SIZE use 8; PBB_FLAGS_TYPE_INIT : constant PBB_FLAGS_TYPE := (READERR => FALSE, WRITERR => FALSE, FILLER_1 => 0); type PBB_TYPE is record FID : UNSIGNED_WORD_ARRAY (1 .. 3); -- File ID of containing file FLAGS : PBB_FLAGS_TYPE; -- status flags COUNT : UNSIGNED_BYTE; -- error count VBN : UNSIGNED_LONGWORD; -- virtual block in file LBN : UNSIGNED_LONGWORD; -- logical block number end record; for PBB_TYPE use record FID at 0 range 0 .. 47; FLAGS at 6 range 0 .. 7; COUNT at 7 range 0 .. 7; VBN at 8 range 0 .. 31; LBN at 12 range 0 .. 31; end record; for PBB_TYPE'SIZE use 128; PBB_TYPE_INIT : constant PBB_TYPE := (FID => (others => 0), FLAGS => PBB_FLAGS_TYPE_INIT, COUNT => 0, VBN => 0, LBN => 0); -- module $DQFDEF --+ -- -- Structure of disk quota file record. Each record contains the authorization -- and usage of a particular UIC for this volume set. -- --- DQF_M_ACTIVE : constant := 16#00000001#; DQF_K_LENGTH : constant := 32; DQF_C_LENGTH : constant := 32; DQF_S_DQFDEF : constant := 32; -- Old size name - synonym type DQF_FLAGS_TYPE is -- flags longword, containing... record ACTIVE : BOOLEAN; -- record contains an active entry FILLER_1 : UNSIGNED_31; end record; for DQF_FLAGS_TYPE use record ACTIVE at 0 range 0 .. 0; FILLER_1 at 0 range 1 .. 31; end record; for DQF_FLAGS_TYPE'SIZE use 32; DQF_FLAGS_TYPE_INIT : constant DQF_FLAGS_TYPE := (ACTIVE => FALSE, FILLER_1 => 0); type DQF_TYPE is record FLAGS : DQF_FLAGS_TYPE; -- flags longword, containing... UIC : UNSIGNED_LONGWORD; -- UIC of this record USAGE : UNSIGNED_LONGWORD; -- number of blocks in use PERMQUOTA : UNSIGNED_LONGWORD; -- permanent disk quota OVERDRAFT : UNSIGNED_LONGWORD; -- overdraft limit FILLER_1 : UNSIGNED_LONGWORD_ARRAY (1 .. 3); -- reserved end record; for DQF_TYPE use record FLAGS at 0 range 0 .. 31; UIC at 4 range 0 .. 31; USAGE at 8 range 0 .. 31; PERMQUOTA at 12 range 0 .. 31; OVERDRAFT at 16 range 0 .. 31; FILLER_1 at 20 range 0 .. 95; end record; for DQF_TYPE'SIZE use 256; DQF_TYPE_INIT : constant DQF_TYPE := ( FLAGS => DQF_FLAGS_TYPE_INIT, UIC => 0, USAGE => 0, PERMQUOTA => 0, OVERDRAFT => 0, FILLER_1 => (others => 0)); end F11DEF;