1 dcl 1 uns_info based (addr (info)), /* info structure for unstructured files */ 2 2 info_version fixed, /* (Input) must =1--only one version 3 currently supported */ 4 2 type fixed, /* =1 */ 5 2 end_pos fixed (34), /* length (bytes) not including header */ 6 2 flags aligned, 7 3 pad1 bit (2) unal, /* used for lock_status in other files */ 8 3 header_present bit (1) unal, /* on if file code is set */ 9 3 pad2 bit (33) unal, 10 2 header_id fixed (35); /* meaning is user defined */ 11 dcl 1 seq_info based (addr (info)), /* info structure for sequential files */ 12 2 info_version fixed, 13 2 type fixed, /* =2 */ 14 2 end_pos fixed (34), /* record count */ 15 2 flags aligned, 16 3 lock_status bit (2) unal, /* 0,1,2, or 3 to indicate not locked, 17 locked by (other,this,dead) process */ 18 3 pad bit (34) unal, 19 2 version fixed, /* end_pos valid only in latest version */ 20 2 action fixed; /* indicates if adjustment or rollback is needed */ 21 dcl 1 blk_info based (addr (info)), /* info structure for blocked files */ 22 2 info_version fixed, 23 2 type fixed, /* =3 */ 24 2 end_pos fixed (34), /* record count */ 25 2 flags aligned, 26 3 lock_status bit (2) unal, /* same as seq_info.= */ 27 3 pad bit (34) unal, 28 2 version fixed, /* only one currently supported */ 29 2 action fixed, /* non-zero if truncation in progress, else =0 */ 30 2 max_rec_len fixed (21), /* bytes--determines characteristiWc block size */ 31 2 pad fixed, /* not used at this time */ 32 2 time_last_modified fixed (71); /* time stamp for synchronization */ 33 dcl 1 indx_info based (addr (info)), /* info structure for indexed files */ 34 2 info_version fixed, 35 2 type fixed, /* =4 */ 36 2 records fixed (34), /* record count */ 37 2 flags aligned, 38 3 lock_status bit (2) unal, /* same as seq_info.= */ 39 3 pad bit (34) unal, 40 2 version_info aligned, 41 3 file_version fixed (17) unal, /* headers differ */ 42 3 program_version fixed (17) unal, /* may indicate bugs */ 43 2 action fixed, /* non-zero code indicates update in progress */ 44 2 non_null_recs fixed (34), /* count of allocated recs */ 45 2 record_bytes fixed (34), /* total record length */ 46 2 free_blocks fixed, /* available record blocks */ 47 2 index_height fixed, /* height of index tree (0 if empty) */ 48 2 nodes fixed, /* nodes being used in the index */ 49 2 key_bytes fixed (34), /* total length of keys */ 50 2 change_count fixed (35), /* bumped on each file modification */ 51 2 num_keys fixed (34), /* number of index entries */ 52 2 dup_keys fixed (34), /* 0 if all keys are distinct, else 1 for each dup */ 53 2 dup_key_bytes fixed (34), /* total bytes of duplicate keys */ 54 2 word (1) fixed; /* reserved for future use */ 55 dcl 1 vbl_info based (addr (info)), /* info structure for variable files */ 56 2 info_version fixed, 57 2 type fixed, /* =5 */ 58 2 end_pos fixed (34), /* logical end of file--not necessarily allocation count */ 59 2 flags aligned, 60 3 lock_status bit (2) unal, /* same as seq_info.= */ 61 3 pad bit (34) unal, 62 2 version fixed, /* only one currently supported */ 63 2 action fixed, /* same as in indexed files */ 64 2 first_nz fixed (34), /* position (numeric key) for first allocated record */ 65 2 last_nz fixed (34), /* last allocated record position */ 66 2 change_count fixed (35); /* used for synchronization */ 67 dcl vfs_version_1 static internal fixed init (1); 68 /* should be used in 69 assignments to info_version */