COMPILATION LISTING OF SEGMENT plio2_dump_ Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1410.4 mst Mon Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 /* Modified 9 October 1980 by M. N. Davidoff to fix 1978 (doesn't compile because nono_word had wrong number of initial list 11* elements). 12**/ 13 /* format: style3 */ 14 plio2_dump_: 15 procedure; 16 17 /* parameters */ 18 19 dcl OF char (*); 20 dcl SN char (*); 21 22 /* automatic */ 23 24 dcl fsbp ptr; 25 dcl i fixed bin; 26 dcl psp ptr; 27 28 /* based */ 29 30 dcl fsb_buffer char (fsb.bsize) based (fsb.bptr); 31 32 /* builtin */ 33 34 dcl (hbound, length, low, max, maxlength, min, null, string, substr) 35 builtin; 36 37 /* entry */ 38 39 dcl ioa_$ioa_switch entry options (variable); 40 dcl octptr entry (char (*), char (*)) returns (ptr); 41 42 /* internal static */ 43 44 dcl switch_word (36) char (16) varying static internal options (constant) 45 init ("zot(1)", "zot(2)", "version_2", "open", "print", "input", "output", "update", "stream", 46 "notkeyed", "record", "sequential", "direct", "interactive", "not_used_1", "not_used_2", 47 "stringvalue", "keyed", "namelist", "implementation", "not_used_4", "transmit_error", 48 "buffer_in_use", "copy", "detach", "te_hold", "not_used_5", "internal", "threaded", 49 "fsb_in_use", "console", "emptyline", "iox_close", "xxx4", "xxx5", "xxx6"); 50 51 dcl nono_word (18) char (12) varying static internal options (constant) 52 init ("bit_string", "not_used_3", "read", "write", "rewrite", "delete", "locate", "key", 53 "keyto", "keyfrom", "set", "into", "ignore", "from", "nofrom", "nokey", "nokeyfrom", "nolock"); 54 55 dcl job_word (36) char (16) varying static internal options (constant) 56 init ("explicit_file", "string", "varying_string", "data", "edit", "list", "get", "put", "page", 57 "line", "skip", "copy", "p1p2", "bit_string", "char_string", "read", "write", "rewrite", 58 "delete", "locate", "key", "keyto", "keyfrom", "set", "into", "ignore", "from", "version(1)", 59 "version(2)", "version(3)", "version(4)", "version(5)", "version(6)", "not_byte_buffer", "pad1", 60 "packed_ptr"); 61 62 dcl ps_switch_word (4) char (16) varying internal static options (constant) 63 initial ("first_field", "file", "transmit_error", "semi_sep"); 64 65 /* external static */ 66 67 dcl iox_$error_output ptr external static; 68 1 1 /* BEGIN INCLUDE FILE ... plio2_fsb.incl.pl1 */ 1 2 /* format: style3,idind30 */ 1 3 1 4 declare 1 fsb aligned based (fsbp), 1 5 2 switch aligned, 1 6 3 zot (2) bit (1) unaligned, 1 7 3 version_2 bit (1) unaligned, 1 8 3 open bit (1) unaligned, 1 9 3 print bit (1) unaligned, 1 10 3 input bit (1) unaligned, 1 11 3 output bit (1) unaligned, 1 12 3 update bit (1) unaligned, 1 13 3 stream bit (1) unaligned, 1 14 3 notkeyed bit (1) unaligned, 1 15 3 record bit (1) unaligned, 1 16 3 sequential bit (1) unaligned, 1 17 3 direct bit (1) unaligned, 1 18 3 interactive bit (1) unaligned, 1 19 3 not_used_1 bit (1) unaligned, 1 20 3 not_used_2 bit (1) unaligned, 1 21 3 stringvalue bit (1) unaligned, 1 22 3 keyed bit (1) unaligned, 1 23 3 namelist bit (1) unaligned, 1 24 3 implementation bit (1) unaligned, 1 25 3 not_used_4 bit (1) unaligned, /* old get-input eof flag */ 1 26 3 transmit_error bit (1) unaligned, 1 27 3 buffer_in_use bit (1) unaligned, 1 28 3 copy bit (1) unaligned, 1 29 3 detach bit (1) unaligned, 1 30 3 te_hold bit (1) unaligned, 1 31 3 not_used_5 bit (1) unaligned, 1 32 3 internal bit (1) unaligned, 1 33 3 threaded bit (1) unaligned, 1 34 3 fsb_in_use bit (1) unaligned, 1 35 3 console bit (1) unaligned, 1 36 3 emptyline bit (1) unaligned, 1 37 3 iox_close bit (1) unaligned, 1 38 3 xxx4 bit (1) unaligned, 1 39 3 xxx5 bit (1) unaligned, 1 40 3 xxx6 bit (1) unaligned, 1 41 2 nono aligned, 1 42 3 bit_string bit (1) unaligned, 1 43 3 not_used_3 bit (1) unaligned, 1 44 3 read bit (1) unaligned, 1 45 3 write bit (1) unaligned, 1 46 3 rewrite bit (1) unaligned, 1 47 3 delete bit (1) unaligned, 1 48 3 locate bit (1) unaligned, 1 49 3 key bit (1) unaligned, 1 50 3 keyto bit (1) unaligned, 1 51 3 keyfrom bit (1) unaligned, 1 52 3 set bit (1) unaligned, 1 53 3 into bit (1) unaligned, 1 54 3 ignore bit (1) unaligned, 1 55 3 from bit (1) unaligned, 1 56 3 nofrom bit (1) unaligned, 1 57 3 nokey bit (1) unaligned, 1 58 3 nokeyfrom bit (1) unaligned, 1 59 3 nolock bit (1) unaligned, 1 60 2 lsep fixed bin (15), /* (1,COMMA)(2,BL)(3,TAB)(4,NL)(5,SEMI) */ 1 61 2 iocb_p ptr unaligned, /* identifies data_set to iox_ */ 1 62 2 blc fixed bin (21), /* buffer's last character (input) */ 1 63 2 bsize fixed bin (21), /* size of buffer */ 1 64 2 bptr ptr, /* address of buffer */ 1 65 2 bnc fixed bin (15), /* next character in buffer */ 1 66 2 kol fixed bin (15), /* last column read from or written into */ 1 67 2 lsize fixed bin (15), /* line size (output) */ 1 68 2 lineno fixed bin (15), /* current line (output) - starts at 1 on each new page */ 1 69 2 psize fixed bin (35), /* page size (output) */ 1 70 2 pageno fixed bin (15), /* current page number, starts at 1 */ 1 71 2 limit fixed bin (15), 1 72 2 lnzc fixed bin (35), 1 73 2 filename char (32) aligned, /* declared file name */ 1 74 2 title char (32) unaligned,/* Multics I/O switch */ 1 75 2 fsb_thread ptr, 1 76 2 buffer (212) fixed bin (15), 1 77 2 path_name char (168) unal, /* title option */ 1 78 2 declared_attributes (2) bit (36) aligned; 1 79 1 80 declare xbuf char (1000) unaligned based (fsb.bptr); 1 81 1 82 /* END INCLUDE FILE ... plio2_fsb.incl.pl1 */ 69 2 1 /* BEGIN INCLUDE FILE ... plio2_fsbr.incl.pl1 */ 2 2 /* format: style3,idind30 */ 2 3 2 4 /* This declaration is used by record I/O runtime programs */ 2 5 2 6 declare 1 fsbr aligned based (fsbp), 2 7 2 switch aligned, 2 8 3 zot (2) bit (1) unaligned, 2 9 3 version_2 bit (1) unaligned, 2 10 3 open bit (1) unaligned, 2 11 3 print bit (1) unaligned, 2 12 3 input bit (1) unaligned, 2 13 3 output bit (1) unaligned, 2 14 3 update bit (1) unaligned, 2 15 3 stream bit (1) unaligned, 2 16 3 notkeyed bit (1) unaligned, 2 17 3 record bit (1) unaligned, 2 18 3 sequential bit (1) unaligned, 2 19 3 direct bit (1) unaligned, 2 20 3 interactive bit (1) unaligned, 2 21 3 not_used_1 bit (1) unaligned, 2 22 3 not_used_2 bit (1) unaligned, 2 23 3 stringvalue bit (1) unaligned, 2 24 3 keyed bit (1) unaligned, 2 25 3 namelist bit (1) unaligned, 2 26 3 implementation bit (1) unaligned, 2 27 3 not_used_4 bit (1) unaligned, 2 28 3 transmit_error bit (1) unaligned, 2 29 3 buffer_in_use bit (1) unaligned, 2 30 3 copy bit (1) unaligned, 2 31 3 detach bit (1) unaligned, 2 32 3 te_hold bit (1) unaligned, 2 33 3 not_used_5 bit (1) unaligned, 2 34 3 internal bit (1) unaligned, 2 35 3 threaded bit (1) unaligned, 2 36 3 fsb_in_use bit (1) unaligned, 2 37 3 console bit (1) unaligned, 2 38 3 emptyline bit (1) unaligned, 2 39 3 iox_close bit (1) unaligned, 2 40 3 pad4 bit (1) unaligned, 2 41 3 pad5 bit (1) unaligned, 2 42 3 pad6 bit (1) unaligned, 2 43 2 nono aligned, 2 44 3 bit_string bit (1) unaligned, 2 45 3 not_used_3 bit (1) unaligned, 2 46 3 read bit (1) unaligned, 2 47 3 write bit (1) unaligned, 2 48 3 rewrite bit (1) unaligned, 2 49 3 delete bit (1) unaligned, 2 50 3 locate bit (1) unaligned, 2 51 3 key bit (1) unaligned, 2 52 3 keyto bit (1) unaligned, 2 53 3 keyfrom bit (1) unaligned, 2 54 3 set bit (1) unaligned, 2 55 3 into bit (1) unaligned, 2 56 3 ignore bit (1) unaligned, 2 57 3 from bit (1) unaligned, 2 58 3 nofrom bit (1) unaligned, 2 59 3 nokey bit (1) unaligned, 2 60 3 nokeyfrom bit (1) unaligned, 2 61 3 nolock bit (1) unaligned, 2 62 2 recio aligned, 2 63 3 rec_exists bit (1) unal, 2 64 3 rec_valid bit (1) unal, 2 65 3 buffer_used bit (1) unal, 2 66 2 iocb_p ptr unal, 2 67 2 inbuf_curlen fixed bin (15), 2 68 2 inbuf_maxlen fixed bin (15), 2 69 2 inbuf_ptr ptr, 2 70 2 inbuf_sw aligned, 2 71 3 exists bit (1) unal, 2 72 3 free bit (1) unal, 2 73 3 use bit (1) unal, 2 74 2 pad7 bit (36) aligned, 2 75 2 outbuf_curlen fixed bin (15), 2 76 2 outbuf_maxlen fixed bin (15), 2 77 2 outbuf_ptr ptr, 2 78 2 outbuf_sw aligned, 2 79 3 exists bit (1) unal, 2 80 3 free bit (1) unal, 2 81 3 use bit (1) unal, 2 82 3 keyed bit (1) unal, 2 83 2 lnzc fixed bin (35), /* last nonzero code from iox_ */ 2 84 2 filename char (32) aligned, /* declared file name */ 2 85 2 title char (32) unaligned,/* Multics I/O switch */ 2 86 2 fsb_thread ptr, 2 87 2 outbuf_key char (256) varying, /* if file is keyed & output_sw.use then key is here */ 2 88 2 key_saved char (256) varying, /* if file is keyed & recio.rec_valid then its key is here */ 2 89 2 buffer (82) bit (36) aligned, 2 90 2 path_name char (168) unal, /* title option */ 2 91 2 declared_attributes (2) bit (36) aligned; 2 92 2 93 /* END INCLUDE FILE ... plio2_fsbr.incl.pl1 */ 70 3 1 /* BEGIN INCLUDE FILE ... plio2_ps.incl.pl1 */ 3 2 /* Stream I/O data block used by PL/I I/O runtime routines. 3 3* 3 4* Modified: 31 January 1978 by RAB to change plio2_data_$fsb_thread to plio2_data_fsb_thread_ 3 5**/ 3 6 /* format: style3,idind30 */ 3 7 3 8 /* based */ 3 9 3 10 declare 1 ps aligned based (psp),/* items set NORMALLY by compiled procedures */ 3 11 2 stack_frame_p ptr, /* items set in block prologue */ 3 12 2 ST_top_p ptr, 3 13 2 ST_block_p ptr, 3 14 2 format_area_p ptr, 3 15 2 ss_list_p ptr, 3 16 2 ab_return, /* items set in prep call */ 3 17 3 abret (3) ptr, 3 18 2 source_p ptr, /* addr(fakefsb) for string option, 3 19* addr(file) for explicit file option */ 3 20 2 special_list_p ptr, /* addr(OKlist) for get data, addr(format_list) for edit */ 3 21 2 copy_file_p ptr, 3 22 2 job aligned, 3 23 3 explicit_file bit (1) unal, 3 24 3 string bit (1) unal, 3 25 3 varying_string bit (1) unal, 3 26 3 data bit (1) unal, 3 27 3 edit bit (1) unal, 3 28 3 list bit (1) unal, 3 29 3 get bit (1) unal, 3 30 3 put bit (1) unal, 3 31 3 page bit (1) unal, 3 32 3 line bit (1) unal, 3 33 3 skip bit (1) unal, 3 34 3 copy bit (1) unal, 3 35 3 p1p2 bit (1) unal, 3 36 3 bit_string bit (1) unal, /* for environment(stringvalue) */ 3 37 3 char_string bit (1) unal, 3 38 3 read bit (1) unal, 3 39 3 write bit (1) unal, 3 40 3 rewrite bit (1) unal, 3 41 3 delete bit (1) unal, 3 42 3 locate bit (1) unal, 3 43 3 key bit (1) unal, 3 44 3 keyto bit (1) unal, 3 45 3 keyfrom bit (1) unal, 3 46 3 set bit (1) unal, 3 47 3 into bit (1) unal, 3 48 3 ignore bit (1) unal, 3 49 3 from bit (1) unal, 3 50 3 version bit (6) unal, 3 51 3 not_byte_buffer bit (1) unal, 3 52 3 pad1 bit (1) unal, 3 53 3 packed_ptr bit (1) unal, 3 54 2 number fixed bin (15), 3 55 2 value_p ptr, /* items set NORMALLY by compiled procedures per transmission */ 3 56 2 descriptor bit (36) aligned, 3 57 2 length fixed bin (15), /* may be swallowed into descriptor */ 3 58 2 top_half bit (18) unal, 3 59 2 offset bit (18) unal, 3 60 2 prep fixed bin (15), /* items treated ABNORMALLY, written by user and PLIO */ 3 61 2 new_format fixed bin (15), 3 62 2 switch aligned, /* items used by PLIO and not touched by compiled procedures */ 3 63 3 first_field bit (1) unal, 3 64 3 file bit (1) unal, 3 65 3 transmit_error bit (1) unal, 3 66 3 semi_sep bit (1) unal, 3 67 3 pad2 bit (32) unal, 3 68 2 file_p ptr, 3 69 2 fsbp ptr, 3 70 2 auxp ptr, /* used as addr(ldidata) for GETs */ 3 71 2 fabp ptr, 3 72 2 fab2p ptr, 3 73 2 vp ptr, 3 74 2 descr bit (36) aligned, 3 75 2 start_copy fixed bin (15), 3 76 2 quick_stream_storage, 3 77 3 a_stored fixed bin (35), 3 78 3 q_stored fixed bin (35); 3 79 3 80 /* external static */ 3 81 3 82 declare ( 3 83 plio2_data_$pspstat, 3 84 plio2_data_$fsbpstat, 3 85 plio2_data_$badfsbp, 3 86 plio2_data_$fabpstat, 3 87 plio2_data_$fab2pstat, 3 88 plio2_data_$pliostringfsbp 3 89 ) ptr external static; 3 90 3 91 dcl plio2_data_fsb_thread_ ptr ext static initial (null); 3 92 /* *system var */ 3 93 3 94 declare ( 3 95 plio2_data_$badjob bit (36) aligned, 3 96 plio2_data_$undef_file_sw bit (1) aligned 3 97 ) external static; 3 98 3 99 /* END INCLUDE FILE ... plio2_ps.incl.pl1 */ 71 4 1 /* BEGIN INCLUDE FILE ... plio2_psr.incl.pl1 */ 4 2 /* Record I/O data block used by PL/I I/O runtime routines. */ 4 3 /* format: style3,idind30 */ 4 4 4 5 declare 1 psr aligned based (psp), 4 6 2 pad0 (5) ptr, /* items set NORMALLY by compiled procedures */ 4 7 2 ab_return, /* items set in prep call */ 4 8 3 abret (3) ptr, 4 9 2 source_p ptr, /* addr(file) for explicit file option */ 4 10 2 set_p_p ptr, 4 11 2 pad1 bit (36) aligned, 4 12 2 variable_bitlen fixed bin (35), 4 13 2 job aligned, 4 14 3 explicit_file bit (1) unal, 4 15 3 string bit (1) unal, 4 16 3 varying_string bit (1) unal, 4 17 3 data bit (1) unal, 4 18 3 edit bit (1) unal, 4 19 3 list bit (1) unal, 4 20 3 get bit (1) unal, 4 21 3 put bit (1) unal, 4 22 3 page bit (1) unal, 4 23 3 line bit (1) unal, 4 24 3 skip bit (1) unal, 4 25 3 copy bit (1) unal, 4 26 3 p1p2 bit (1) unal, 4 27 3 bit_string bit (1) unal, /* for environment(stringvalue) */ 4 28 3 char_string bit (1) unal, 4 29 3 read bit (1) unal, 4 30 3 write bit (1) unal, 4 31 3 rewrite bit (1) unal, 4 32 3 delete bit (1) unal, 4 33 3 locate bit (1) unal, 4 34 3 key bit (1) unal, 4 35 3 keyto bit (1) unal, 4 36 3 keyfrom bit (1) unal, 4 37 3 set bit (1) unal, 4 38 3 into bit (1) unal, 4 39 3 ignore bit (1) unal, 4 40 3 from bit (1) unal, 4 41 3 version bit (6) unal, 4 42 3 not_bytebuffer bit (1) unal, 4 43 3 varying_array bit (1) unal, 4 44 3 packedptr bit (1) unal, 4 45 2 number fixed bin (21), 4 46 2 variable_p ptr, /* items set NORMALLY by compiled procedures per transmission */ 4 47 2 pad2 bit (36) aligned, 4 48 2 pad3 bit (36) aligned, 4 49 2 pad4 bit (36) aligned, 4 50 2 locking_switch bit (36) aligned, /* items treated ABNORMALLY, written by user and PLIO */ 4 51 /* "prep" for stream I/O */ 4 52 2 new_format fixed bin (15), /* for stream I/O only */ 4 53 2 pad5 bit (36) aligned, /* items used by PLIO and not touched by compiled procedures */ 4 54 2 file_p ptr, 4 55 2 fsbp ptr, 4 56 2 auxp ptr, 4 57 2 fabp ptr, 4 58 2 fab2p ptr, 4 59 2 pad6 bit (36) aligned, 4 60 2 pad7 bit (36) aligned, 4 61 2 pad8 bit (36) aligned, 4 62 2 pad9 bit (36) aligned, 4 63 2 pad10 bit (36) aligned, 4 64 2 pl1_ops_flags aligned, /* for communication between pl1_operators_ and plio2 */ 4 65 3 keyto_keyset bit (1) unal, /* ON after keyto assignment done */ 4 66 3 pad11 bit (35) unal, 4 67 2 keytemp char (256) varying; /* used for key, keyto, and keyfrom */ 4 68 4 69 /* END INCLUDE FILE ... plio2_psr.incl.pl1 */ 72 73 74 /* program */ 75 76 setfsbp: 77 entry (SN, OF); 78 79 plio2_data_$fsbpstat = octptr (SN, OF); 80 81 return; 82 83 setpsp: 84 entry (SN, OF); 85 86 plio2_data_$pspstat = octptr (SN, OF); 87 88 return; 89 90 filelist: 91 entry; 92 93 call ioa_$ioa_switch (iox_$error_output, "List of files open or opened:"); 94 95 do fsbp = plio2_data_fsb_thread_ repeat fsbp -> fsb.fsb_thread while (fsbp ^= null); 96 call ioa_$ioa_switch (iox_$error_output, "fspb: ^p, filename: ^a^[, open pathname: ^a^;^s^]", fsbp, 97 fsb.filename, fsb.switch.open, fsb.path_name); 98 end; 99 100 call ioa_$ioa_switch (iox_$error_output, ""); 101 102 return; 103 104 dgfsb: 105 entry (SN, OF); 106 107 fsbp = octptr (SN, OF); 108 goto dfsbcommon; 109 110 dcfsb: 111 entry; 112 113 fsbp = plio2_data_$fsbpstat; 114 115 dfsbcommon: 116 call ioa_$ioa_switch (iox_$error_output, "fsbp: ^p", fsbp); 117 if fsbp = null 118 then return; 119 120 call ioa_$ioa_switch (iox_$error_output, "filename: ^a", validate ((fsb.filename))); 121 call ioa_$ioa_switch (iox_$error_output, "title: ^a", validate (fsb.title)); 122 123 if fsb.filename ^= """get_string_option""" & fsb.filename ^= """put_string_option""" 124 then call ioa_$ioa_switch (iox_$error_output, "pathname: ^a", validate (fsb.path_name)); 125 126 call print_switches ("attributes", string (fsb.switch), switch_word); 127 call ioa_$ioa_switch (iox_$error_output, "bsize: ^d, thread: ^p, DA: ^w", fsb.bsize, fsb.fsb_thread, 128 fsb.declared_attributes (1)); 129 130 if fsb.switch.record 131 then do; 132 call print_switches ("forbidden operations", string (fsb.nono), nono_word); 133 call ioa_$ioa_switch (iox_$error_output, 134 "^[^[Current record exists.^;Current record deleted.^]^;^sNo current record.^]", 135 fsbr.recio.rec_exists, fsbr.recio.rec_valid); 136 137 if fsbr.recio.buffer_used 138 then call ioa_$ioa_switch (iox_$error_output, "buffer_used"); 139 140 if fsbr.switch.keyed 141 then call ioa_$ioa_switch (iox_$error_output, "key_saved: ""^v^a""", length (fsbr.key_saved), 142 fsbr.key_saved); 143 144 if fsbr.inbuf_sw.exists 145 then do; 146 call ioa_$ioa_switch (iox_$error_output, "inbuf_exists^[ free^]^[ in_use^]", fsbr.inbuf_sw.free, 147 fsbr.inbuf_sw.use); 148 call ioa_$ioa_switch (iox_$error_output, "max: ^d, cur: ^d, ptr: ^p", fsbr.inbuf_maxlen, 149 fsbr.inbuf_curlen, fsbr.inbuf_ptr); 150 end; 151 else call ioa_$ioa_switch (iox_$error_output, "no inbuf"); 152 153 if fsbr.outbuf_sw.exists 154 then do; 155 call ioa_$ioa_switch (iox_$error_output, "outbuf_exists^[ free^]^[ in_use^]", 156 fsbr.outbuf_sw.free, fsbr.outbuf_sw.use); 157 call ioa_$ioa_switch (iox_$error_output, "max: ^d, cur: ^d, ptr: ^p", fsbr.outbuf_maxlen, 158 fsbr.outbuf_curlen, fsbr.outbuf_ptr); 159 160 if fsbr.outbuf_sw.use & fsbr.switch.keyed 161 then call ioa_$ioa_switch (iox_$error_output, "outbuf_key: ""^v^a""", length (fsbr.outbuf_key), 162 fsbr.outbuf_key); 163 end; 164 else call ioa_$ioa_switch (iox_$error_output, "no outbuf"); 165 end; 166 167 else do; 168 call ioa_$ioa_switch (iox_$error_output, "lsep: ^d, blc: ^d, bnc: ^d", fsb.lsep, fsb.blc, fsb.bnc); 169 call ioa_$ioa_switch (iox_$error_output, "bptr: ^p, kol: ^d", fsb.bptr, fsb.kol); 170 171 if fsb.switch.stream 172 then call ioa_$ioa_switch (iox_$error_output, "limit: ^d", fsb.limit); 173 174 if fsb.switch.output 175 then call ioa_$ioa_switch (iox_$error_output, "lsize: ^d", fsb.lsize); 176 177 if fsb.switch.print 178 then call ioa_$ioa_switch (iox_$error_output, "lineno: ^d, pageno: ^d, psize: ^d", fsb.lineno, fsb.pageno, 179 fsb.psize); 180 181 i = min (max (fsb.blc, fsb.bnc - 1), 20); 182 if i > 0 183 then call ioa_$ioa_switch (iox_$error_output, "buffer: ""^v^a""", i, substr (fsb_buffer, 1, i)); 184 end; 185 186 call ioa_$ioa_switch (iox_$error_output, ""); 187 188 return; 189 190 dgps: 191 entry (SN, OF); 192 193 psp = octptr (SN, OF); 194 goto pscommon; 195 196 dcps: 197 entry; 198 199 psp = plio2_data_$pspstat; 200 201 pscommon: 202 call ioa_$ioa_switch (iox_$error_output, "psp: ^p", psp); 203 if psp = null 204 then return; 205 206 if ps.job.read | ps.job.write | ps.job.rewrite | ps.job.delete | ps.job.locate 207 then do; 208 call print_switches ("job", string (ps.job), job_word); 209 call ioa_$ioa_switch (iox_$error_output, "keytemp: ^a", validate_vs (psr.keytemp)); 210 call ioa_$ioa_switch (iox_$error_output, "var_p: ^p, set_p_p: ^p, source_p: ^p", psr.variable_p, 211 psr.set_p_p, psr.source_p); 212 call ioa_$ioa_switch (iox_$error_output, "number: ^d, variable_bitlen: ^d", psr.number, 213 psr.variable_bitlen); 214 call ioa_$ioa_switch (iox_$error_output, "file_p: ^p, fsbp: ^p, auxp: ^p, fabp: ^p, fab2p: ^p", 215 psr.file_p, psr.fsbp, psr.auxp, psr.fabp, psr.fab2p); 216 end; 217 218 else do; 219 call ioa_$ioa_switch (iox_$error_output, "sfp: ^p, STTp: ^p, STBp: ^p", ps.stack_frame_p, ps.ST_top_p, 220 ps.ST_block_p); 221 call ioa_$ioa_switch (iox_$error_output, "format_area_p: ^p, ss_list_p: ^p", ps.format_area_p, 222 ps.ss_list_p); 223 call ioa_$ioa_switch (iox_$error_output, "source_p: ^p, special_list_p: ^p, copy_file_p: ^p", ps.source_p, 224 ps.special_list_p, ps.copy_file_p); 225 call print_switches ("job", string (ps.job), job_word); 226 call ioa_$ioa_switch (iox_$error_output, "number: ^d", ps.number); 227 call ioa_$ioa_switch (iox_$error_output, "value_p: ^p, descriptor: ^w, length: ^d, offset: ^w", 228 ps.value_p, ps.descriptor, ps.length, ps.offset); 229 call ioa_$ioa_switch (iox_$error_output, "prep: ^d, new_format: ^d", ps.prep, ps.new_format); 230 call print_switches ("ps.switch", substr (string (ps.switch), 1, hbound (ps_switch_word, 1)), 231 ps_switch_word); 232 call ioa_$ioa_switch (iox_$error_output, "file_p: ^p, fsbp: ^p, auxp: ^p", ps.file_p, ps.fsbp, ps.auxp); 233 call ioa_$ioa_switch (iox_$error_output, "fabp: ^p, fab2p: ^p", ps.fabp, ps.fab2p); 234 call ioa_$ioa_switch (iox_$error_output, "vp: ^p, descr: ^w, start_copy: ^d", ps.vp, ps.descr, 235 ps.start_copy); 236 end; 237 238 call ioa_$ioa_switch (iox_$error_output, ""); 239 240 return; 241 242 print_switches: 243 procedure (title, bits, names); 244 245 dcl title char (*); 246 dcl bits bit (*); 247 dcl names (*) char (*) varying; 248 249 dcl i fixed bin; 250 dcl line char (72) varying; 251 252 if bits = ""b 253 then return; 254 255 line = title || ":"; 256 do i = 1 to length (bits); 257 if substr (bits, i, 1) 258 then if length (line) + 1 + length (names (i)) <= maxlength (line) 259 then line = line || " " || names (i); 260 else do; 261 call ioa_$ioa_switch (iox_$error_output, "^a", line); 262 line = (5)" " || names (i); 263 end; 264 end; 265 266 call ioa_$ioa_switch (iox_$error_output, "^a", line); 267 end print_switches; 268 269 validate: 270 procedure (str) returns (char (256) varying); 271 272 dcl str char (*); 273 274 if str = low (length (str)) 275 then return ("Unset string."); 276 else return (str); 277 end validate; 278 279 validate_vs: 280 procedure (arg_str) returns (char (256) varying); 281 282 dcl arg_str char (*) varying; 283 284 if length (arg_str) > maxlength (arg_str) 285 then return ("Unset string."); 286 else return (arg_str); 287 end validate_vs; 288 289 end plio2_dump_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1005.4 plio2_dump_.pl1 >spec>on>pl128d>plio2_dump_.pl1 69 1 08/13/81 2043.5 plio2_fsb.incl.pl1 >ldd>include>plio2_fsb.incl.pl1 70 2 08/13/81 2043.5 plio2_fsbr.incl.pl1 >ldd>include>plio2_fsbr.incl.pl1 71 3 08/13/81 2043.5 plio2_ps.incl.pl1 >ldd>include>plio2_ps.incl.pl1 72 4 08/13/81 2043.5 plio2_psr.incl.pl1 >ldd>include>plio2_psr.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. OF parameter char unaligned dcl 19 set ref 76 79* 83 86* 104 107* 190 193* SN parameter char unaligned dcl 20 set ref 76 79* 83 86* 104 107* 190 193* ST_block_p 4 based pointer level 2 dcl 3-10 set ref 219* ST_top_p 2 based pointer level 2 dcl 3-10 set ref 219* arg_str parameter varying char dcl 282 ref 279 284 284 286 auxp 44 based pointer level 2 in structure "ps" dcl 3-10 in procedure "plio2_dump_" set ref 232* auxp 44 based pointer level 2 in structure "psr" dcl 4-5 in procedure "plio2_dump_" set ref 214* bits parameter bit unaligned dcl 246 ref 242 252 256 257 blc 4 based fixed bin(21,0) level 2 dcl 1-4 set ref 168* 181 bnc 10 based fixed bin(15,0) level 2 dcl 1-4 set ref 168* 181 bptr 6 based pointer level 2 dcl 1-4 set ref 169* 182 182 bsize 5 based fixed bin(21,0) level 2 dcl 1-4 set ref 127* 182 182 buffer_used 2(02) based bit(1) level 3 packed unaligned dcl 2-6 ref 137 copy_file_p 24 based pointer level 2 dcl 3-10 set ref 223* declared_attributes 440 based bit(36) array level 2 dcl 1-4 set ref 127* delete 26(18) based bit(1) level 3 packed unaligned dcl 3-10 ref 206 descr 54 based bit(36) level 2 dcl 3-10 set ref 234* descriptor 32 based bit(36) level 2 dcl 3-10 set ref 227* exists 16 based bit(1) level 3 in structure "fsbr" packed unaligned dcl 2-6 in procedure "plio2_dump_" ref 153 exists 10 based bit(1) level 3 in structure "fsbr" packed unaligned dcl 2-6 in procedure "plio2_dump_" ref 144 fab2p 50 based pointer level 2 in structure "ps" dcl 3-10 in procedure "plio2_dump_" set ref 233* fab2p 50 based pointer level 2 in structure "psr" dcl 4-5 in procedure "plio2_dump_" set ref 214* fabp 46 based pointer level 2 in structure "psr" dcl 4-5 in procedure "plio2_dump_" set ref 214* fabp 46 based pointer level 2 in structure "ps" dcl 3-10 in procedure "plio2_dump_" set ref 233* file_p 40 based pointer level 2 in structure "psr" dcl 4-5 in procedure "plio2_dump_" set ref 214* file_p 40 based pointer level 2 in structure "ps" dcl 3-10 in procedure "plio2_dump_" set ref 232* filename 20 based char(32) level 2 dcl 1-4 set ref 96* 120 123 123 format_area_p 6 based pointer level 2 dcl 3-10 set ref 221* free 16(01) based bit(1) level 3 in structure "fsbr" packed unaligned dcl 2-6 in procedure "plio2_dump_" set ref 155* free 10(01) based bit(1) level 3 in structure "fsbr" packed unaligned dcl 2-6 in procedure "plio2_dump_" set ref 146* fsb based structure level 1 dcl 1-4 fsb_buffer based char unaligned dcl 30 ref 182 182 fsb_thread 40 based pointer level 2 dcl 1-4 set ref 98 127* fsbp 000100 automatic pointer dcl 24 in procedure "plio2_dump_" set ref 95* 95* 96* 96 96 96* 98 107* 113* 115* 117 120 121 123 123 123 126 126 127 127 127 130 132 132 133 133 137 140 140 140 140 144 146 146 148 148 148 153 155 155 157 157 157 160 160 160 160 160 168 168 168 169 169 171 171 174 174 177 177 177 177 181 181 182 182 182 182 fsbp 42 based pointer level 2 in structure "psr" dcl 4-5 in procedure "plio2_dump_" set ref 214* fsbp 42 based pointer level 2 in structure "ps" dcl 3-10 in procedure "plio2_dump_" set ref 232* fsbr based structure level 1 dcl 2-6 hbound builtin function dcl 34 ref 230 230 i 000114 automatic fixed bin(17,0) dcl 249 in procedure "print_switches" set ref 256* 257 257 257 262* i 000102 automatic fixed bin(17,0) dcl 25 in procedure "plio2_dump_" set ref 181* 182 182* 182 182 inbuf_curlen 4 based fixed bin(15,0) level 2 dcl 2-6 set ref 148* inbuf_maxlen 5 based fixed bin(15,0) level 2 dcl 2-6 set ref 148* inbuf_ptr 6 based pointer level 2 dcl 2-6 set ref 148* inbuf_sw 10 based structure level 2 dcl 2-6 ioa_$ioa_switch 000010 constant entry external dcl 39 ref 93 96 100 115 120 121 123 127 133 137 140 146 148 151 155 157 160 164 168 169 171 174 177 182 186 201 209 210 212 214 219 221 223 226 227 229 232 233 234 238 261 266 iox_$error_output 000014 external static pointer dcl 67 set ref 93* 96* 100* 115* 120* 121* 123* 127* 133* 137* 140* 146* 148* 151* 155* 157* 160* 164* 168* 169* 171* 174* 177* 182* 186* 201* 209* 210* 212* 214* 219* 221* 223* 226* 227* 229* 232* 233* 234* 238* 261* 266* job 26 based structure level 2 dcl 3-10 ref 208 208 225 225 job_word 000024 constant varying char(16) initial array dcl 55 set ref 208* 225* key_saved 143 based varying char(256) level 2 dcl 2-6 set ref 140 140 140* keyed 0(17) based bit(1) level 3 packed unaligned dcl 2-6 ref 140 160 keytemp 60 based varying char(256) level 2 dcl 4-5 set ref 209* kol 11 based fixed bin(15,0) level 2 dcl 1-4 set ref 169* length builtin function dcl 34 in procedure "plio2_dump_" ref 140 140 160 160 256 257 257 274 284 length 33 based fixed bin(15,0) level 2 in structure "ps" dcl 3-10 in procedure "plio2_dump_" set ref 227* limit 16 based fixed bin(15,0) level 2 dcl 1-4 set ref 171* line 000115 automatic varying char(72) dcl 250 set ref 255* 257 257 257* 257 261* 262* 266* lineno 13 based fixed bin(15,0) level 2 dcl 1-4 set ref 177* locate 26(19) based bit(1) level 3 packed unaligned dcl 3-10 ref 206 low builtin function dcl 34 ref 274 lsep 2 based fixed bin(15,0) level 2 dcl 1-4 set ref 168* lsize 12 based fixed bin(15,0) level 2 dcl 1-4 set ref 174* max builtin function dcl 34 ref 181 maxlength builtin function dcl 34 ref 257 284 min builtin function dcl 34 ref 181 names parameter varying char array dcl 247 ref 242 257 257 262 new_format 36 based fixed bin(15,0) level 2 dcl 3-10 set ref 229* nono 1 based structure level 2 dcl 1-4 ref 132 132 nono_word 000310 constant varying char(12) initial array dcl 51 set ref 132* null builtin function dcl 34 ref 95 117 203 number 27 based fixed bin(21,0) level 2 in structure "psr" dcl 4-5 in procedure "plio2_dump_" set ref 212* number 27 based fixed bin(15,0) level 2 in structure "ps" dcl 3-10 in procedure "plio2_dump_" set ref 226* octptr 000012 constant entry external dcl 40 ref 79 86 107 193 offset 34(18) based bit(18) level 2 packed unaligned dcl 3-10 set ref 227* open 0(03) based bit(1) level 3 packed unaligned dcl 1-4 set ref 96* outbuf_curlen 12 based fixed bin(15,0) level 2 dcl 2-6 set ref 157* outbuf_key 42 based varying char(256) level 2 dcl 2-6 set ref 160 160 160* outbuf_maxlen 13 based fixed bin(15,0) level 2 dcl 2-6 set ref 157* outbuf_ptr 14 based pointer level 2 dcl 2-6 set ref 157* outbuf_sw 16 based structure level 2 dcl 2-6 output 0(06) based bit(1) level 3 packed unaligned dcl 1-4 ref 174 pageno 15 based fixed bin(15,0) level 2 dcl 1-4 set ref 177* path_name 366 based char(168) level 2 packed unaligned dcl 1-4 set ref 96* 123* plio2_data_$fsbpstat 000020 external static pointer dcl 3-82 set ref 79* 113 plio2_data_$pspstat 000016 external static pointer dcl 3-82 set ref 86* 199 plio2_data_fsb_thread_ 000022 external static pointer initial dcl 3-91 ref 95 prep 35 based fixed bin(15,0) level 2 dcl 3-10 set ref 229* print 0(04) based bit(1) level 3 packed unaligned dcl 1-4 ref 177 ps based structure level 1 dcl 3-10 ps_switch_word 000000 constant varying char(16) initial array dcl 62 set ref 230 230 230* psize 14 based fixed bin(35,0) level 2 dcl 1-4 set ref 177* psp 000104 automatic pointer dcl 26 set ref 193* 199* 201* 203 206 206 206 206 206 208 208 209 210 210 210 212 212 214 214 214 214 214 219 219 219 221 221 223 223 223 225 225 226 227 227 227 227 229 229 230 230 232 232 232 233 233 234 234 234 psr based structure level 1 dcl 4-5 read 26(15) based bit(1) level 3 packed unaligned dcl 3-10 ref 206 rec_exists 2 based bit(1) level 3 packed unaligned dcl 2-6 set ref 133* rec_valid 2(01) based bit(1) level 3 packed unaligned dcl 2-6 set ref 133* recio 2 based structure level 2 dcl 2-6 record 0(10) based bit(1) level 3 packed unaligned dcl 1-4 ref 130 rewrite 26(17) based bit(1) level 3 packed unaligned dcl 3-10 ref 206 set_p_p 22 based pointer level 2 dcl 4-5 set ref 210* source_p 20 based pointer level 2 in structure "ps" dcl 3-10 in procedure "plio2_dump_" set ref 223* source_p 20 based pointer level 2 in structure "psr" dcl 4-5 in procedure "plio2_dump_" set ref 210* special_list_p 22 based pointer level 2 dcl 3-10 set ref 223* ss_list_p 10 based pointer level 2 dcl 3-10 set ref 221* stack_frame_p based pointer level 2 dcl 3-10 set ref 219* start_copy 55 based fixed bin(15,0) level 2 dcl 3-10 set ref 234* str parameter char unaligned dcl 272 ref 269 274 274 276 stream 0(08) based bit(1) level 3 packed unaligned dcl 1-4 ref 171 string builtin function dcl 34 ref 126 126 132 132 208 208 225 225 230 230 substr builtin function dcl 34 ref 182 182 230 230 257 switch based structure level 2 in structure "fsb" dcl 1-4 in procedure "plio2_dump_" set ref 126 126 switch based structure level 2 in structure "fsbr" dcl 2-6 in procedure "plio2_dump_" switch 37 based structure level 2 in structure "ps" dcl 3-10 in procedure "plio2_dump_" ref 230 230 switch_word 000420 constant varying char(16) initial array dcl 44 set ref 126* title 30 based char(32) level 2 in structure "fsb" packed unaligned dcl 1-4 in procedure "plio2_dump_" set ref 121* title parameter char unaligned dcl 245 in procedure "print_switches" ref 242 255 use 16(02) based bit(1) level 3 in structure "fsbr" packed unaligned dcl 2-6 in procedure "plio2_dump_" set ref 155* 160 use 10(02) based bit(1) level 3 in structure "fsbr" packed unaligned dcl 2-6 in procedure "plio2_dump_" set ref 146* value_p 30 based pointer level 2 dcl 3-10 set ref 227* variable_bitlen 25 based fixed bin(35,0) level 2 dcl 4-5 set ref 212* variable_p 30 based pointer level 2 dcl 4-5 set ref 210* vp 52 based pointer level 2 dcl 3-10 set ref 234* write 26(16) based bit(1) level 3 packed unaligned dcl 3-10 ref 206 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. plio2_data_$badfsbp external static pointer dcl 3-82 plio2_data_$badjob external static bit(36) dcl 3-94 plio2_data_$fab2pstat external static pointer dcl 3-82 plio2_data_$fabpstat external static pointer dcl 3-82 plio2_data_$pliostringfsbp external static pointer dcl 3-82 plio2_data_$undef_file_sw external static bit(1) dcl 3-94 xbuf based char(1000) unaligned dcl 1-80 NAMES DECLARED BY EXPLICIT CONTEXT. dcfsb 001735 constant entry external dcl 110 dcps 003212 constant entry external dcl 196 dfsbcommon 001746 constant label dcl 115 ref 108 dgfsb 001670 constant entry external dcl 104 dgps 003145 constant entry external dcl 190 filelist 001544 constant entry external dcl 90 plio2_dump_ 001420 constant entry external dcl 14 print_switches 004065 constant entry internal dcl 242 ref 126 132 208 225 230 pscommon 003223 constant label dcl 201 ref 194 setfsbp 001432 constant entry external dcl 76 setpsp 001477 constant entry external dcl 83 validate 004342 constant entry internal dcl 269 ref 120 121 123 validate_vs 004406 constant entry internal dcl 279 ref 209 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4742 4766 4570 4752 Length 5316 4570 24 314 151 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME plio2_dump_ 254 external procedure is an external procedure. print_switches internal procedure shares stack frame of external procedure plio2_dump_. validate internal procedure shares stack frame of external procedure plio2_dump_. validate_vs internal procedure shares stack frame of external procedure plio2_dump_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME plio2_dump_ 000100 fsbp plio2_dump_ 000102 i plio2_dump_ 000104 psp plio2_dump_ 000114 i print_switches 000115 line print_switches THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc return shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioa_$ioa_switch octptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. iox_$error_output plio2_data_$fsbpstat plio2_data_$pspstat plio2_data_fsb_thread_ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 001417 76 001425 79 001452 81 001474 83 001475 86 001517 88 001542 90 001543 93 001551 95 001571 96 001602 98 001644 100 001650 102 001665 104 001666 107 001710 108 001733 110 001734 113 001742 115 001746 117 001770 120 001774 121 002030 123 002073 126 002145 127 002157 130 002213 132 002216 133 002230 137 002262 140 002307 144 002346 146 002352 148 002405 150 002440 151 002441 153 002460 155 002464 157 002517 160 002552 163 002611 164 002612 165 002634 168 002635 169 002671 171 002724 174 002755 177 003007 181 003046 182 003060 184 003124 186 003125 188 003142 190 003143 193 003165 194 003210 196 003211 199 003217 201 003223 203 003245 206 003251 208 003255 209 003264 210 003325 212 003357 214 003410 216 003450 219 003451 221 003502 223 003531 225 003563 226 003573 227 003622 229 003664 230 003717 232 003732 233 003764 234 004013 238 004047 240 004064 242 004065 252 004110 255 004120 256 004142 257 004157 260 004242 261 004243 262 004266 263 004313 264 004314 266 004316 267 004341 269 004342 274 004353 276 004375 279 004406 284 004417 286 004432 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved