COMPILATION LISTING OF SEGMENT tape_ansi_control_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/04/82 1705.2 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 12 13 14 tape_ansi_control_: procedure (iocbP, order, infoP, code); /* performs iox_$control function for tape_ansi_ */ 15 16 17 /* Modified 08/17/76 by Janice Phillipps to handle io_call order requests. */ 18 /* Modified 12/18/78 by Michael R. Jordan to add volume_density order as a 19* temporary measure for list_tape_contents. */ 20 /* Modified 04/11/79 by C. D. Tavares for resource management */ 21 /* Modified 08/81 by M. R. Jordan for bug fixes */ 22 23 /* arguments */ 24 dcl iocbP ptr, /* pointer to iocb */ 25 order char (*), /* control order name */ 26 infoP ptr, /* pointer to information structure */ 27 code fixed bin (35); /* error code */ 28 29 /* based storage */ 30 31 dcl hardware_status bit (72) aligned based (infoP); /* information for "hardware_status" order */ 32 dcl retain_code fixed bin based (infoP); /* information for "retention" */ 33 34 35 36 /* automatic storage */ 37 38 dcl ret_code fixed bin (35); 39 dcl io_order char (32) varying; 40 dcl volume_density_ptr ptr; 41 dcl volume_density fixed bin based (volume_density_ptr); 42 43 dcl file_status_sw bit (1); 44 dcl msg_sw bit (1); 45 dcl state fixed bin; 46 dcl event_code fixed bin (35); 47 dcl lbl bit (1) aligned; 48 49 dcl errmsg char (64) aligned; 50 dcl short char (8) aligned; 51 dcl long char (100) aligned; 52 dcl i fixed bin; /* temporary */ 53 dcl io_mod fixed bin; 54 55 56 /* internal static */ 57 58 dcl central_msg (0:7) char (55) internal static options (constant) init ( 59 """000""b", 60 "LPW tally runout", 61 "two sequential TDCW's", 62 "boundary violation", 63 "invalid IOM central status - ""100""b", 64 "IDCW in restricted mode", 65 "character position/size discrepancy during list service", 66 "parity error on I/O bus, data read from channel"), 67 channel_msg (0:7) char (46) int static options (constant) init ( 68 """000""b", 69 "attempt to connect while busy", 70 "illegal channel command in PCW", 71 "incorrect DCW during list service", 72 "incomplete instruction sequence", 73 "invalid channel status - ""101""b", 74 "parity error on PSIA", 75 "parity error on I/O bus, data write to channel"), 76 format (2, 8) char (3) int static options (constant) init ( 77 "u", "f", "d", "s", "ub", "fb", "db", "sb", 78 "u", "f", "v", "vs", "ub", "fb", "vb", "vbs"), 79 mode (3) char (6) int static options (constant) init ( 80 "ASCII", "EBCDIC", "binary"), 81 State (0:3) char (32) int static options (constant) init ( 82 "no information", "not open", "open", "open, but further I/O inhibited"); 83 84 dcl 1 order_list (12) internal static options (constant), /* list of valid control orders */ 85 2 name char (32) varying init (/* orders */ 86 "hardware_status", 87 "status", 88 "volume_status", 89 "feov", 90 "close_rewind", 91 "retention", 92 "file_status", 93 "retain_none", 94 "retain_all", 95 "reset_error_lock", 96 "volume_density", /* temp for MR7.0 for list_tape_contents */ 97 "io_call"), 98 2 must_be_open bit (1) init ("1"b, "1"b, "0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b), 99 2 non_null_ptr bit (1) init ("1"b, "1"b, "1"b, "0"b, "0"b, "1"b, "1"b, "0"b, "0"b, "0"b, "1"b, "1"b); 100 101 dcl 1 io_order_list (10) internal static options (constant), /* list of valid control orders foor use thru io_call */ 102 2 long_name char (32) varying init (/* orders */ 103 "hardware_status", 104 "status", 105 "volume_status", 106 "feov", 107 "close_rewind", 108 "retention", 109 "file_status", 110 "retain_none", 111 "retain_all", 112 "reset_error_lock"), 113 2 short_name char (4) varying init (/* orders */ 114 "hst", 115 "st", 116 "vst", 117 "feov", 118 "crw", 119 "ret", 120 "fst", 121 "retn", 122 "reta", 123 "rel"), 124 2 must_be_open bit (1) init ("1"b, "1"b, "0"b, "1"b, "0"b, "0"b, "0"b, "0"b, "0"b, "1"b), 125 2 arguments bit (1) init ("0"b, "1"b, "0"b, "0"b, "0"b, "1"b, "0"b, "0"b, "0"b, "0"b); 126 127 128 dcl 1 io_order_user_msg (10) internal static options (constant), /* list of valid order request syntax */ 129 2 msgs char (48) varying init (/* orders */ 130 "hardware_status", 131 "status {-all}", 132 "volume_status", 133 "feov", 134 "close_rewind", 135 "retention -all | -volume | -device | -none", 136 "file_status", 137 "retain_none", 138 "retain_all", 139 "reset_error_lock"); 140 141 /* external procedures */ 142 143 dcl tape_ansi_file_cntl_$data_eot ext entry (ptr, fixed bin (35)); 144 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 145 dcl tape_ansi_nl_file_cntl_$data_eot ext entry (ptr, fixed bin (35)); 146 147 /* external static */ 148 149 dcl (error_table_$action_not_performed, 150 error_table_$wrong_no_of_args, 151 error_table_$bad_arg, 152 error_table_$undefined_order_request, 153 error_table_$file_busy, 154 error_table_$invalid_cseg, 155 error_table_$no_operation, 156 error_table_$no_next_volume, 157 error_table_$not_open, 158 error_table_$tape_error) fixed bin (35) external static; 159 160 /* conditions and builtins */ 161 162 dcl cleanup condition, 163 (hbound, null, addr, binary, convert, substr) builtin; 164 1 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 1 2 /* format: style2 */ 1 3 1 4 dcl 1 iocb aligned based, /* I/O control block. */ 1 5 2 version character (4) aligned, 1 6 2 name char (32), /* I/O name of this block. */ 1 7 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 8 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 9 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 10 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 11 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 12 2 reserved bit (72), /* Reserved for future use. */ 1 13 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 1 14 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 1 15 /* open(p,mode,not_used,s) */ 1 16 2 close entry (ptr, fixed (35)),/* close(p,s) */ 1 17 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 18 /* get_line(p,bufptr,buflen,actlen,s) */ 1 19 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 20 /* get_chars(p,bufptr,buflen,actlen,s) */ 1 21 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 1 22 /* put_chars(p,bufptr,buflen,s) */ 1 23 2 modes entry (ptr, char (*), char (*), fixed (35)), 1 24 /* modes(p,newmode,oldmode,s) */ 1 25 2 position entry (ptr, fixed, fixed (21), fixed (35)), 1 26 /* position(p,u1,u2,s) */ 1 27 2 control entry (ptr, char (*), ptr, fixed (35)), 1 28 /* control(p,order,infptr,s) */ 1 29 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 30 /* read_record(p,bufptr,buflen,actlen,s) */ 1 31 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 1 32 /* write_record(p,bufptr,buflen,s) */ 1 33 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 1 34 /* rewrite_record(p,bufptr,buflen,s) */ 1 35 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 1 36 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 37 /* seek_key(p,key,len,s) */ 1 38 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 39 /* read_key(p,key,len,s) */ 1 40 2 read_length entry (ptr, fixed (21), fixed (35)); 1 41 /* read_length(p,len,s) */ 1 42 1 43 declare iox_$iocb_version_sentinel 1 44 character (4) aligned external static; 1 45 1 46 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 165 166 2 1 /* BEGIN INCLUDE FILE: tape_ansi_cseg.incl.pl1 */ 2 2 /* */ 2 3 /* 1) Modified: 12/01/75 by Ross E. Klinger -- to allow */ 2 4 /* for allocation of the attach and open descriptions */ 2 5 /* within the cseg structure. */ 2 6 /* 2) Modified for resource management. */ 2 7 /* 3) Modified 9/79 by R.J.C. Kissel to handle the new tseg. */ 2 8 /* 4) Modified 4/82 by J.A. Bush for block sizes > 8192 bytes */ 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind9 */ 2 11 dcl cP ptr; /* pointer on which cseg structure is based */ 2 12 dcl cseg_tseg_version_2 fixed bin internal static options (constant) init (2); 2 13 2 14 dcl 1 cseg based (cP), /* control structure */ 2 15 2 file_set_lock bit (1) aligned, /* "1"b if file set in use */ 2 16 2 invalid bit (1) aligned, /* invalid cseg - delete at detach time bit */ 2 17 2 standard fixed bin, /* label standard */ 2 18 /* 1 - ANSI standard */ 2 19 /* 2 - IBM/OS-VS */ 2 20 /* 3 - IBM/DOS-VM */ 2 21 2 attach_description, /* iox_ attach description */ 2 22 3 length fixed bin (17), /* actual length of string */ 2 23 3 string char (256), /* maximum is 256 characters */ 2 24 2 open_description, /* iox_ open description */ 2 25 3 length fixed bin (17), /* actual length of string */ 2 26 3 string char (32), /* maximum is 32 */ 2 27 2 module char (12) varying, /* IO module name */ 2 28 2 ndrives fixed bin, /* maximum number of drives to be used */ 2 29 2 nactive fixed bin, /* number of drives actually in use */ 2 30 2 write_ring bit (1) aligned, /* volumes mounted with write rings */ 2 31 2 protect bit (1) aligned, /* volumes have rings, but are hardware protected */ 2 32 2 density fixed bin, /* file set recording density */ 2 33 /* 2 - 800 bpi NRZI */ 2 34 /* 3 - 1600 bpi PE */ 2 35 2 vcN fixed bin, /* number of links in volume chain */ 2 36 2 fcP ptr, /* file chain pointer */ 2 37 2 flP ptr, /* pointer to file link of current file */ 2 38 2 hdw_status, /* hardware status structure */ 2 39 3 bits bit (72) aligned, /* IOM status */ 2 40 3 no_minor fixed bin, /* number of minor status codes */ 2 41 3 major fixed bin (35), /* major status */ 2 42 3 minor (10) fixed bin (35), /* minor status */ 2 43 2 lbl_buf char (80), /* label I/O buffer */ 2 44 2 open_mode fixed bin, /* opening mode */ 2 45 /* 4 - sequential_input */ 2 46 /* 5 - sequential_output */ 2 47 2 close_rewind bit (1) aligned, /* rewind volume at next close */ 2 48 2 force bit (1) aligned, /* force file overwrite switch */ 2 49 2 user_labels bit (1) aligned, /* process user labels switch */ 2 50 2 no_labels bit (1) aligned, /* "1"b if volume has no labels */ 2 51 2 output_mode fixed bin, /* 0 - input */ 2 52 /* 1 - extend */ 2 53 /* 2 - modify */ 2 54 /* 3 - write */ 2 55 /* 4 - create */ 2 56 2 replace_id char (17), /* replace file identifier */ 2 57 2 retain fixed bin, /* 0 - default to rcp_ defaults */ 2 58 /* 1 - unassign drives and volumes */ 2 59 /* 2 - retain drives, unassign volumes */ 2 60 /* 3 - unassign drives, retain volumes */ 2 61 /* 4 - retain drives and volumes */ 2 62 2 lrec, /* logical record IO control data */ 2 63 3 bufP ptr, /* pointer to current processing buffer */ 2 64 3 nc_buf fixed bin, /* number of characters in buffer */ 2 65 3 offset fixed bin, /* current processing offset within buffer */ 2 66 3 saveP ptr, /* pointer to current D/V format RCW/RDW */ 2 67 3 file_lock bit (1) aligned, /* "1"b if file in use */ 2 68 3 blkcnt fixed bin (35), /* physical block count */ 2 69 3 reccnt fixed bin (35), /* logical record count (not presently used) */ 2 70 3 code fixed bin (35), /* lrec_io_ non-restartable error code */ 2 71 2 read_length, /* read_length control data */ 2 72 3 rlP ptr, /* pointer to read_length segment */ 2 73 3 rlN fixed bin (21), /* number of characters in segment */ 2 74 2 user_label_routine (6) variable entry (char (80), bit (1)), 2 75 /* 1 - read UHL */ 2 76 /* 2 - write UHL */ 2 77 /* 3 - read UTL */ 2 78 /* 4 - write UTL */ 2 79 /* 5 - read UVL */ 2 80 /* 6 - write UVL */ 2 81 /* THE FOLLOWING IS NEEDED ONLY WHILE TAPEIO_ / TDCM IS THE IO PROCEDURE */ 2 82 2 syncP ptr, /* pointer to synchronous IO buffer */ 2 83 2 mode fixed bin, /* 0 = binary -- 1 = 9 mode */ 2 84 2 soft_status, /* software status structure */ 2 85 3 nbuf fixed bin, /* number of suspended buffers */ 2 86 3 buf (2), 2 87 4 bufP ptr, /* pointer to buffer */ 2 88 4 count fixed bin, /* buffer character count */ 2 89 2 ( 2 90 free_list, 2 91 busy_list, 2 92 chain (3), 2 93 bufct (3) 2 94 ) fixed bin, /* buffer management variables */ 2 95 2 wait_switch (1:63) bit (1) unaligned, /* per-drive event wait switches */ 2 96 2 buf_size fixed bin, /* size of each tseg buffer in chars (bytes) */ 2 97 2 tseg aligned, 2 98 3 version_num fixed bin, 2 99 3 areap ptr, /* pointer to DSM area */ 2 100 3 ev_chan fixed bin (71), /* event channel number */ 2 101 3 write_sw fixed bin (1), /* 0 = read, 1 = write */ 2 102 3 sync fixed bin (1), /* non-zero for synchronous i/o */ 2 103 3 get_size fixed bin (1), /* ON for record sizes to be returned */ 2 104 3 ws_segno bit (18), /* rcp_ kluge */ 2 105 3 drive_name char (32), 2 106 3 tracks fixed bin, 2 107 3 density bit (36), 2 108 3 speed bit (36), /* bits are 75, 125, 200 ips respectively */ 2 109 3 pad99 bit (36), /* see tseg.incl.pl1 */ 2 110 3 buffer_offset fixed bin (12), /* offset of first buffer to be processed */ 2 111 3 buffer_count fixed bin (12), /* number of buffers to be processed */ 2 112 3 completion_status 2 113 fixed bin (2), /* 0 = no pending i/o or no status */ 2 114 /* 1 = normal termination of i/o */ 2 115 /* 2 = non-zero major status from previous i/o */ 2 116 3 hardware_status bit (36) aligned, /* major and sub-status */ 2 117 3 error_buffer fixed bin (12), /* buffer in which i/o error occurred */ 2 118 3 command_count fixed bin (12), /* number of non-data commands to execute */ 2 119 3 command_queue (10) fixed bin (6) aligned, /* non-data-transfer commands */ 2 120 3 bufferptr (12) fixed bin (18) aligned,/* relative ptrs to buffers */ 2 121 3 buffer_size (12) fixed bin (18) aligned,/* size of buffer */ 2 122 3 mode (12) fixed bin (2) aligned, /* 0 = bin, 1 = bcd, 2 = 9 track */ 2 123 3 buffer (4) char (cseg.buf_size) aligned, 2 124 /* data buffers */ 2 125 /* END OF TAPEIO_ / TDCM DATA */ 2 126 2 vl (63), /* volume chain link */ 2 127 3 position, /* volume position */ 2 128 4 fflX fixed bin unal, /* index of first file link on volume */ 2 129 4 cflX fixed bin unal, /* index of current file link */ 2 130 4 pos fixed bin unal, /* intra-file position code */ 2 131 /* 0 = in HDR group */ 2 132 /* 1 - in data / passed HDR TM */ 2 133 /* 2 = in EOx group / passed data TM */ 2 134 4 lflX fixed bin unal, /* index of last file link on volume */ 2 135 3 vol_data, 2 136 4 volname char (32), /* volume name */ 2 137 4 canonical_volname 2 138 char (6), /* volume name as appears on label */ 2 139 4 comment char (64) varying, /* mount comment */ 2 140 4 auth_code char (3) aligned, /* authentication code for this volume */ 2 141 4 rcp_id fixed bin (6), /* TDCM DUMMY - CHANGE TO BIT (36) ALIGNED */ 2 142 4 event_chan fixed bin (71), /* rcp_ attach event channel */ 2 143 4 tape_drive char (32), /* name of tape drive */ 2 144 4 ws_segno bit (18), /* segno of IOI workspace (per drive) */ 2 145 4 write_VOL1 fixed bin, /* 0 - correct VOL1 label */ 2 146 /* 1 - blank tape */ 2 147 /* 2 - can't read 1st block */ 2 148 /* 3 - 1st block not VOL1 label */ 2 149 /* 4 - valid VOL1 label but wrong volume ID (Obsolete) */ 2 150 /* 5 - correct VOL1 label, but wrong density */ 2 151 /* 6 - invalid file-set format (Obsolete) */ 2 152 /* -1 - correct VOL1 label of an earlier format */ 2 153 /* (no authentication code) */ 2 154 4 ioi_index fixed bin, /* ioi_ index for IO */ 2 155 3 reg_data, /* registration data */ 2 156 4 tracks fixed bin unal, /* number of tracks */ 2 157 4 density fixed bin unal, /* density code */ 2 158 4 label_type fixed bin unal, /* volume format */ 2 159 4 usage_count fixed bin unal, /* number of attachment to this volume */ 2 160 4 read_errors fixed bin unal, /* number of read errors */ 2 161 4 write_errors fixed bin unal, /* number of write errors */ 2 162 2 chain_area area; /* file chain allocation area */ 2 163 2 164 /* END INCLUDE FILE: tape_ansi_cseg.incl.pl1 */ 167 168 3 1 /* BEGIN INCLUDE FILE: tape_ansi_fd.incl.pl1 */ 3 2 3 3 dcl 1 fd aligned based (cseg.fcP), /* first file chain link */ 3 4 2 backP ptr init (null), /* no previous links (ever) */ 3 5 2 nextP ptr init (null), /* pointer to next link; null if only */ 3 6 2 flX fixed bin init (0), /* link index is 0 */ 3 7 2 vlX fixed bin init (0), /* start file chain on 1st volume */ 3 8 /* in conjunction with eov, below, which */ 3 9 2 dummy_HDR2 bit (1), /* "1"b if file has dummy_HDR2 label */ 3 10 2 eox fixed bin init (2), /* 2 forces volume switch on first real file link */ 3 11 3 12 2 hdr1, /* HDR1 data */ 3 13 3 file_id char (17), /* file identifier */ 3 14 3 set_id char (32), /* reel id of 1st volume of multi-volume set */ 3 15 3 canonical_set_id char (6), /* in canonical format */ 3 16 3 dummy_section fixed bin, 3 17 3 sequence fixed bin, /* file sequence number (inter-file) */ 3 18 3 dummy_generation fixed bin, 3 19 3 dummy_version fixed bin, 3 20 3 creation char (5), /* holds today's date in Julian form */ 3 21 3 expiration char (5), /* Julian expiration date */ 3 22 3 access char (1), 3 23 3 dummy_blkcnt fixed bin (35), 3 24 3 system char (13), /* holds system code for labels */ 3 25 3 26 2 hdr2, /* HDR2 data */ 3 27 3 format fixed bin, /* logical record format code */ 3 28 /* 1 - U format */ 3 29 /* 2 - F format */ 3 30 /* 3 - D format (ANSI) / V format (IBM) */ 3 31 /* 4 - S format (ANSI) / V spanned (IBM) */ 3 32 3 blklen fixed bin, /* actual/maximum physical block length */ 3 33 3 reclen fixed bin (21), /* actual/maximum logical record length */ 3 34 3 dummy_next_volname char (32), 3 35 3 canonical_dummy_next_volname char (6), 3 36 3 blocked bit (1), /* "0"b - unblocked / "1"b - blocked */ 3 37 3 mode fixed bin, /* file data recording mode */ 3 38 /* 1 - ASCII, 9 mode */ 3 39 /* 2 - EBCDIC, 9mode */ 3 40 /* 3 - binary */ 3 41 3 bo fixed bin, /* ANSI buffer offset: # of chars preceding each block */ 3 42 3 cc char (1); /* IBM HDR2 control characters code */ 3 43 3 44 /* END INCLUDE FILE: tape_ansi_fd.incl.pl1 */ 169 170 4 1 /* BEGIN INCLUDE FILE: tape_ansi_fl.incl.pl1 */ 4 2 4 3 dcl 1 fl aligned based (cseg.flP), /* file chain link */ 4 4 2 backP ptr init (null), /* pointer to previous link in chain, or null if 1st */ 4 5 2 nextP ptr init (null), /* pointer to next link in chain, or null if last */ 4 6 2 flX fixed bin init (0), /* index of this link within file chain */ 4 7 2 vlX fixed bin init (0), /* volume link index */ 4 8 4 9 2 HDR2 bit (1) init ("0"b), /* "1"b if file has HDR2 label */ 4 10 2 eox fixed bin init (0), /* 0 - trailer labels not yet processed */ 4 11 /* 1 - trailer labels are EOF */ 4 12 /* 2 - trailer labels are EOV */ 4 13 4 14 2 hdr1, /* HDR1 data */ 4 15 3 file_id char (17), /* file identifier */ 4 16 3 set_id char (32), /* reel id of 1st volume of multi-volume set */ 4 17 3 canonical_set_id char (6) unaligned, /* reel id in canonical format */ 4 18 3 section fixed bin, /* file section number (intra-file) */ 4 19 3 sequence fixed bin, /* file sequence number (inter-file) */ 4 20 3 generation fixed bin, /* file generation number */ 4 21 3 version fixed bin, /* generation version number */ 4 22 3 creation char (5), /* Julian creation date "yyddd" */ 4 23 3 expiration char (5), /* Julian expiration date */ 4 24 3 access char (1), /* file accessability code */ 4 25 3 blkcnt fixed bin (35), /* number of data blocks - in EOx1 */ 4 26 3 system char (13), /* system/IO module code */ 4 27 4 28 2 hdr2, /* HDR2 data */ 4 29 3 format fixed bin init (0), /* logical record format code */ 4 30 /* 1 - U format */ 4 31 /* 2 - F format */ 4 32 /* 3 - D format (ANSI) / V format (IBM) */ 4 33 /* 4 - S format (ANSI) / V spanned (IBM) */ 4 34 3 blklen fixed bin init (0), /* actual/maximum physical block length */ 4 35 3 reclen fixed bin (21) init (0), /* actual/maximum logical record length */ 4 36 3 next_volname char (32) init ("") unaligned, /* volume name of next volume */ 4 37 3 canonical_next_volname char (6) init ("") unal, /* in canonical format */ 4 38 3 blocked bit (1) init ("0"b), /* "0"b - unblocked / "1"b - blocked */ 4 39 3 mode fixed bin init (0), /* file data recording mode */ 4 40 /* 1 - ASCII, 9 mode */ 4 41 /* 2 - EBCDIC, 9mode */ 4 42 /* 3 - binary */ 4 43 3 bo fixed bin init (0), /* ANSI buffer offset: # of chars preceding each block */ 4 44 3 cc char (1) init (" "); /* IBM HDR2 control characters code */ 4 45 4 46 /* END INCLUDE FILE: tape_ansi_fl.incl.pl1 */ 171 172 5 1 /* BEGIN INCLUDE FILE: tape_file_status.incl.pl1 */ 5 2 5 3 dcl tfstat_ptr pointer; 5 4 5 5 dcl 1 tape_file_status based (tfstat_ptr), 5 6 2 state fixed bin, /* 0 - no information available */ 5 7 /* 1 - file not open */ 5 8 /* 2 - file open (unlocked) */ 5 9 /* 3 - file open (event locked) */ 5 10 2 event_code fixed bin (35), /* 0 if file_status.state ^= 3 */ 5 11 /* otherwise, an error code */ 5 12 2 file_id char (17), /* file identifier */ 5 13 2 file_seq fixed bin, /* file sequence number */ 5 14 2 cur_section fixed bin, /* file section number of current or */ 5 15 /* last file section processed */ 5 16 2 cur_volume char (6), /* volume name of volume on which current */ 5 17 /* or last file section processed resides */ 5 18 2 generation fixed bin, /* generation number */ 5 19 2 version fixed bin, /* generation version number */ 5 20 2 creation char (5), /* creation date in Julian form (yyddd) */ 5 21 2 expiration char (5), /* expiration date in Julian form */ 5 22 2 format_code fixed bin, /* 1 - undefined records */ 5 23 /* 2 - fixed-length records */ 5 24 /* 3 - variable-length records */ 5 25 /* 4 - spanned records */ 5 26 2 blklen fixed bin, /* actual or maximum block length */ 5 27 2 reclen fixed bin (21), /* actual or maximum record length */ 5 28 2 blocked bit (1), /* "0"b - unblocked records */ 5 29 /* "1"b - blocked records */ 5 30 2 mode fixed bin, /* 1 - ASCII */ 5 31 /* 2 - EBCDIC */ 5 32 /* 3 - binary */ 5 33 2 cur_blkcnt fixed bin (35); /* current or total number of blocks */ 5 34 /* read or written */ 5 35 5 36 /* END INCLUDE FILE: tape_file_status.incl.pl1 */ 173 174 6 1 /* BEGIN INCLUDE FILE: tape_volume_status.incl.pl1 */ 6 2 6 3 dcl tvstat_ptr pointer; 6 4 6 5 dcl 1 tape_volume_status based (tvstat_ptr), 6 6 2 volume_name char (6), /* volume name */ 6 7 2 volume_id char (6), /* volume identifier from VOL1 label */ 6 8 2 volume_seq fixed bin, /* sequence of volume in volume set */ 6 9 2 tape_drive char (32), /* device name */ 6 10 /* "" if volume not mounted */ 6 11 2 read_errors fixed bin, /* read error count */ 6 12 2 write_errors fixed bin; /* write error count */ 6 13 6 14 /* END INCLUDE FILE: tape_volume_status.incl.pl1 */ 175 176 7 1 /* BEGIN INCLUDE FILE: device_status.incl.pl1 */ 7 2 7 3 dcl dstat_ptr pointer; 7 4 7 5 dcl 1 device_status based (dstat_ptr), 7 6 2 IOM_bits bit (72) aligned, /* IOM status bits */ 7 7 2 n_minor fixed bin, /* number of minor status codes */ 7 8 2 major fixed bin (35), /* major status code */ 7 9 2 minor (10) fixed bin (35); /* minor status codes */ 7 10 7 11 /* END INCLUDE FILE: device_status.incl.pl1 */ 177 178 8 1 8 2 /* Begin include file ...... iom_stat.incl.pl1 */ 8 3 /* Last modified on 10/31/74 by Noel I. Morris */ 8 4 8 5 dcl statp ptr; /* pointer to status */ 8 6 8 7 dcl 1 status based (statp) aligned, /* IOM status information */ 8 8 (2 t bit (1), /* set to "1"b by IOM */ 8 9 2 power bit (1), /* non-zero if peripheral absent or power off */ 8 10 2 major bit (4), /* major status */ 8 11 2 sub bit (6), /* substatus */ 8 12 2 eo bit (1), /* even/odd bit */ 8 13 2 marker bit (1), /* non-zero if marker status */ 8 14 2 soft bit (2), /* software status */ 8 15 2 initiate bit (1), /* initiate bit */ 8 16 2 abort bit (1), /* software abort bit */ 8 17 2 channel_stat bit (3), /* IOM channel status */ 8 18 2 central_stat bit (3), /* IOM central status */ 8 19 2 mbz bit (6), 8 20 2 rcount bit (6), /* record count residue */ 8 21 2 address bit (18), /* DCW address residue */ 8 22 2 char_pos bit (3), /* character position residue */ 8 23 2 r bit (1), /* non-zero if reading */ 8 24 2 type bit (2), /* type of last DCW */ 8 25 2 tally bit (12)) unal; /* DCW tally residue */ 8 26 8 27 dcl 1 faultword based (statp) aligned, /* system fault word */ 8 28 (2 mbz1 bit (9), 8 29 2 channel bit (9), /* channel number */ 8 30 2 serv_req bit (5), /* service request */ 8 31 2 mbz2 bit (3), 8 32 2 controller_fault bit (4), /* system controller fault code */ 8 33 2 io_fault bit (6)) unal; /* I/O fault code */ 8 34 8 35 dcl 1 special_status based (statp) aligned, /* special status from PSIA */ 8 36 (2 t bit (1), /* entry present bit */ 8 37 2 channel bit (8), /* channel number */ 8 38 2 pad1 bit (3), 8 39 2 device bit (6), /* device address */ 8 40 2 pad2 bit (1), 8 41 2 byte2 bit (8), /* device dependent information */ 8 42 2 pad3 bit (1), 8 43 2 byte3 bit (8)) unal; /* device dependent information */ 8 44 8 45 /* End of include file iom_stat.incl.pl1 */ 8 46 179 180 9 1 /* Begin include file ..... io_call_info.incl.pl1 */ 9 2 9 3 /* This include file defines the info_structure used by an I/O module to perform an "io_call" order 9 4* on behalf of the io_call command. */ 9 5 /* Coded April 1976 by Larry Johnson */ 9 6 /* Changed June 1977 by Larry Johnson for "io_call_af" order */ 9 7 9 8 dcl io_call_infop ptr; 9 9 9 10 dcl 1 io_call_info aligned based (io_call_infop), 9 11 2 version fixed bin, 9 12 2 caller_name char (32), /* Caller name for error messages */ 9 13 2 order_name char (32), /* Actual name of the order to be performed */ 9 14 2 report entry variable options (variable), 9 15 /* Entry to ioa_ like procedure to report results */ 9 16 2 error entry variable options (variable), 9 17 /* Entry to com_err_ like procedure to report results */ 9 18 2 af_returnp ptr, /* Pointer to return string if "io_call_af" order */ 9 19 2 af_returnl fixed bin, /* Length of string */ 9 20 2 fill (5) bit (36) aligned, 9 21 2 nargs fixed bin, /* Number of additional command arguments provided */ 9 22 2 max_arglen fixed bin, /* Length of longest argument (used to define array) */ 9 23 2 args (0 refer (io_call_info.nargs)) char (0 refer (io_call_info.max_arglen)) varying; 9 24 9 25 dcl io_call_af_ret char (io_call_info.af_returnl) based (io_call_info.af_returnp) varying; 9 26 /* Return string for active function */ 9 27 9 28 /* End include file ..... io_call_info.incl.pl1 */ 181 182 183 do i = 1 to hbound (order_list, 1); /* determine which order to execute */ 184 if order = order_list.name (i) then do; /* got it - now check it */ 185 if order_list.must_be_open (i) then do; 186 if iocbP -> iocb.actual_iocb_ptr -> iocb.open_descrip_ptr = null () then do; 187 code = error_table_$not_open; 188 return; 189 end; 190 end; 191 if order_list.non_null_ptr (i) then do; 192 if infoP = null then do; 193 code = error_table_$bad_arg; 194 return; 195 end; 196 end; 197 go to START; 198 end; 199 end; 200 code = error_table_$no_operation; /* invalid order */ 201 return; 202 203 204 START: cP = iocbP -> iocb.actual_iocb_ptr -> iocb.attach_data_ptr; /* all ok - get cseg pointer */ 205 206 if cseg.invalid then do; 207 code = error_table_$invalid_cseg; 208 return; 209 end; 210 211 if cseg.file_lock then do; 212 code = error_table_$file_busy; 213 return; 214 end; 215 else do; 216 on cleanup cseg.file_lock = "0"b; 217 cseg.file_lock = "1"b; 218 end; 219 220 code = 0; /* initialize error code */ 221 go to act (i); /* transfer to perform appropriate processing */ 222 223 act (1): /* hardware_status */ 224 225 hardware_status = cseg.hdw_status.bits; /* give 72 bit IOM status */ 226 go to exit; 227 228 act (2): /* status */ 229 230 dstat_ptr = infoP; /* set pointer to structure */ 231 device_status = cseg.hdw_status; /* give entire status structure */ 232 go to exit; 233 234 act (3): /* volume_status */ 235 236 tvstat_ptr = infoP; /* set pointer to structure */ 237 call setup_for_vol_status; 238 239 tape_volume_status.volume_name = vl (i).canonical_volname; /* fill status structure */ 240 tape_volume_status.volume_id = substr (vl (i).volname, 1, 6); 241 tape_volume_status.volume_seq = i; 242 if vl (i).rcp_id = 0 then tape_volume_status.tape_drive = ""; 243 else tape_volume_status.tape_drive = vl (i).tape_drive; 244 tape_volume_status.read_errors = vl (i).read_errors; 245 tape_volume_status.write_errors = vl (i).write_errors; 246 go to exit; 247 248 act (4): /* feov */ 249 250 if cseg.open_mode ^= 5 then do; /* opening must be sequential_output */ 251 code = error_table_$action_not_performed; 252 go to exit; 253 end; 254 255 call force_eov; 256 go to exit; 257 258 act (5): /* close_rewind */ 259 260 cseg.close_rewind = "1"b; /* set the switch for next close operation */ 261 go to exit; 262 263 act (6): /* retention */ 264 265 if retain_code < 0 | retain_code > 4 then do; /* check validity */ 266 code = error_table_$bad_arg; 267 go to exit; 268 end; 269 270 cseg.retain = retain_code; /* set the new retention */ 271 go to exit; 272 273 act (7): /* file_status */ 274 275 tfstat_ptr = infoP; /* set pointer to structure */ 276 call setup_for_file_status; /* sets state and event code */ 277 278 tape_file_status.state = state; 279 tape_file_status.event_code = event_code; 280 281 if cseg.no_labels then do; /* no file chain */ 282 tape_file_status.file_id = ""; 283 tape_file_status.file_seq = fd.sequence; 284 tape_file_status.cur_section = fd.vlX; 285 tape_file_status.cur_volume = vl (fd.vlX).canonical_volname; 286 tape_file_status.generation = 0; 287 tape_file_status.version = 0; 288 tape_file_status.creation = "00000"; 289 tape_file_status.expiration = "00000"; 290 tape_file_status.format_code = fd.format; 291 tape_file_status.blklen = fd.blklen; 292 tape_file_status.reclen = fd.reclen; 293 tape_file_status.blocked = fd.blocked; 294 tape_file_status.mode = fd.mode; 295 end; 296 else do; /* file chain exists */ 297 tape_file_status.file_id = fl.file_id; 298 tape_file_status.file_seq = fl.sequence; 299 tape_file_status.cur_section = fl.section; 300 tape_file_status.cur_volume = vl (fl.vlX).canonical_volname; 301 tape_file_status.generation = fl.generation; 302 tape_file_status.version = fl.version; 303 tape_file_status.creation = fl.creation; 304 tape_file_status.expiration = fl.expiration; 305 tape_file_status.format_code = fl.format; 306 tape_file_status.blklen = fl.blklen; 307 tape_file_status.reclen = fl.reclen; 308 tape_file_status.blocked = fl.blocked; 309 tape_file_status.mode = fl.mode; 310 end; 311 312 tape_file_status.cur_blkcnt = cseg.lrec.blkcnt; 313 go to exit; 314 315 act (8): /* retain_none */ 316 317 cseg.retain = 1; 318 go to exit; 319 320 act (9): /* retain_all */ 321 322 cseg.retain = 4; 323 go to exit; 324 325 act (10): /* reset_error_lock */ 326 327 call reset_error_lock; 328 go to exit; 329 330 act (11): /* volume_density temp for ltc */ 331 332 volume_density_ptr = infoP; /* set pointer to variable */ 333 volume_density = cseg.density; /* copy info */ 334 goto exit; 335 336 act (12): /* io_call orders */ 337 338 io_call_infop = infoP; 339 340 if cseg.standard = 1 then io_mod = 1; /* tape_ansi_ io mod */ 341 else io_mod = 2; /* tape_ibm_ io mod */ 342 343 do i = 1 to hbound (io_order_list, 1); /* determine which order to execute */ 344 io_order = io_call_info.order_name; 345 if io_order = io_order_list.long_name (i) | 346 io_order = io_order_list.short_name (i) then do; /* got it - now check it */ 347 if io_order_list.must_be_open (i) then do; 348 if iocbP -> iocb.actual_iocb_ptr -> iocb.open_descrip_ptr = null () then do; 349 call io_call_info.error (error_table_$not_open, 350 io_call_info.caller_name, 351 "^/The ^a control operation requires that the I/O switch be open.", 352 io_order_list.long_name (i)); 353 go to exit; 354 end; 355 end; 356 if io_call_info.nargs > 0 then do; /* some orders take args */ 357 if io_order_list.arguments (i) then do; 358 if io_call_info.nargs = 1 then ; 359 else do; 360 wrong_no_args: call io_call_info.error (error_table_$wrong_no_of_args, 361 io_call_info.caller_name, 362 "^/Usage: io control SWITCH ^a", 363 io_order_user_msg.msgs (i)); 364 go to exit; 365 end; 366 end; 367 else go to wrong_no_args; 368 end; 369 go to ord (i); 370 371 end; 372 end; 373 374 call io_call_info.error (error_table_$undefined_order_request, io_call_info.caller_name, "^a", io_order); 375 go to exit; 376 377 ord (1): /* hardware_status call */ 378 379 call print_hardware_status; 380 go to exit; 381 382 ord (2): /* status order call */ 383 384 if io_call_info.nargs = 0 then do; 385 file_status_sw = "0"b; 386 call print_device_status; 387 end; 388 else if io_call_info.args (1) = "-all" 389 | io_call_info.args (1) = "-a" then do; 390 file_status_sw = "1"b; 391 call print_device_status; 392 call print_hardware_status; 393 call setup_for_vol_status; 394 call print_volume_status; 395 call setup_for_file_status; 396 call print_file_status; 397 end; 398 else do; 399 call io_call_info.error (error_table_$bad_arg, 400 io_call_info.caller_name, 401 "^a^/Usage: io control SWITCH ^a", 402 io_call_info.args (1), 403 io_order_user_msg.msgs (i)); 404 go to exit; 405 end; 406 407 go to exit; 408 409 ord (3): /* volume_status order call */ 410 411 call setup_for_vol_status; 412 call print_volume_status; 413 go to exit; 414 415 ord (4): /* feov order call */ 416 417 if cseg.open_mode ^= 5 then do; 418 call io_call_info.error (error_table_$action_not_performed, 419 io_call_info.caller_name, 420 "^/I/O switch must be open for sequential_output."); 421 end; 422 else do; 423 call force_eov; 424 if code ^= 0 then 425 call io_call_info.error (code, 426 io_call_info.caller_name, 427 "^/Unable to force volume switching."); 428 end; 429 go to exit; 430 431 ord (5): /* close_rewind order call */ 432 433 cseg.close_rewind = "1"b; 434 go to exit; 435 436 ord (6): /* retention order call */ 437 438 if io_call_info.nargs = 0 439 then goto wrong_no_args; 440 441 if io_call_info.args (1) = "-all" 442 | io_call_info.args (1) = "-a" 443 then ret_code = 4; 444 else if io_call_info.args (1) = "-none" 445 then ret_code = 1; 446 else if io_call_info.args (1) = "-volume" 447 | io_call_info.args (1) = "-vol" 448 then ret_code = 2; 449 else if io_call_info.args (1) = "-device" 450 | io_call_info.args (1) = "-dv" 451 then ret_code = 3; 452 else do; 453 bad_arg: call io_call_info.error (error_table_$bad_arg, 454 io_call_info.caller_name, 455 "^/Bad retention specification. ^a", 456 io_call_info.args (1)); 457 go to exit; 458 end; 459 460 cseg.retain = ret_code; /* set the new retention */ 461 go to exit; 462 463 ord (7): /* file_status order call */ 464 465 call setup_for_file_status; 466 if cseg.no_labels 467 then call print_nl_file_status (); 468 else call print_file_status (); 469 go to exit; 470 471 ord (8): /* retain_none order call */ 472 473 cseg.retain = 1; 474 go to exit; 475 476 ord (9): /* retain_all order call */ 477 478 cseg.retain = 4; 479 go to exit; 480 481 ord (10): /* reset_error_lock order call */ 482 483 call reset_error_lock; 484 if code ^= 0 then 485 call io_call_info.error (code, 486 io_call_info.caller_name, 487 "^/Unable to reset lock. I/O switch must be open for sequential_input."); 488 489 exit: cseg.file_lock = "0"b; 490 return; 491 492 print_hardware_status: procedure; 493 494 statp = addr (cseg.hdw_status.bits); /* set ptr to status structure */ 495 if status.power then errmsg = "off or device disconnected"; 496 else errmsg = "on"; 497 call io_call_info.report ("Power:^2-^a", errmsg); 498 call io_call_info.report ("Major status:^-""^4b""b", status.major); 499 call io_call_info.report ("Substatus:^-""^6b""b", status.sub); 500 call io_call_info.report ("Even/Odd:^2-""^1b""b", status.eo); 501 if status.marker then errmsg = "yes"; 502 else errmsg = "no, terminate status"; 503 call io_call_info.report ("Marker status:^-^a", errmsg); 504 call io_call_info.report ("Software status:^-""^2b""b", status.soft); 505 call io_call_info.report ("Initiate:^2-""^1b""b", status.initiate); 506 call io_call_info.report ("Software abort:^-""^1b""b", status.abort); 507 call io_call_info.report ("IOM channel:^-^a", channel_msg (binary (status.channel_stat))); 508 call io_call_info.report ("IOM central:^-^a", central_msg (binary (status.central_stat))); 509 call io_call_info.report ("Rec count residue:^-^d (decimal)", binary (status.rcount)); 510 call io_call_info.report ("DCW address:^-^6w (octal)", binary (status.address), 35); 511 call io_call_info.report ("Character position:^-^d (decimal)", binary (status.char_pos)); 512 if status.r then errmsg = "yes"; 513 else errmsg = "no"; 514 call io_call_info.report ("Reading:^2-^a", errmsg); 515 call io_call_info.report ("Last DCW type:^-""^2b""b", status.type); 516 call io_call_info.report ("DCW tally:^-^d (decimal)^/", binary (status.tally)); 517 return; 518 519 end print_hardware_status; 520 521 print_device_status: procedure; 522 523 errmsg = "Device status"; 524 if cseg.hdw_status.no_minor = 0 then do; /* no minor status entered */ 525 call convert_status_code_ (cseg.hdw_status.major, short, long); 526 call io_call_info.report ("^a:^-^a", errmsg, long); 527 end; 528 else do i = 1 to cseg.hdw_status.no_minor; 529 call convert_status_code_ (cseg.hdw_status.minor (i), short, long); 530 call io_call_info.report ("^a:^-^a", errmsg, long); 531 errmsg = " and:"; 532 end; 533 if ^file_status_sw then /* only for not file_status */ 534 call io_call_info.report ("Blocks processed:^-^d^/", cseg.lrec.blkcnt); 535 else call io_call_info.report (""); 536 return; 537 538 end print_device_status; 539 540 print_volume_status: procedure; 541 542 /* prints info from cseg: i = current volume number of volume set. */ 543 544 call io_call_info.report ("Volume name:^-^a", vl (i).volname); 545 call io_call_info.report ("Label ID:^-^a", vl (i).canonical_volname); 546 call io_call_info.report ("Volume sequence no:^-^d", i); 547 if vl (i).rcp_id = 0 then 548 call io_call_info.report ("Tape drive:^-(Volume Not Mounted)"); 549 else call io_call_info.report ("Tape drive:^-^a", vl (i).tape_drive); 550 if vl (i).read_errors > 0 then 551 call io_call_info.report ("Read errors:^-^d", vl (i).read_errors); 552 if vl (i).write_errors > 0 then 553 call io_call_info.report ("Write errors:^-^d", vl (i).write_errors); 554 call io_call_info.report (""); 555 return; 556 557 end print_volume_status; 558 559 print_file_status: procedure; 560 561 562 call io_call_info.report ("File state:^-^a", State (state)); 563 if state = 0 then do; 564 call io_call_info.report (""); 565 return; 566 end; 567 if state = 3 then do; 568 call convert_status_code_ (cseg.lrec.code, short, long); 569 call io_call_info.report ("I/O inhibited because:^-^a", long); 570 end; 571 call io_call_info.report ("File name:^-^a", fl.file_id); 572 call io_call_info.report ("File number:^-^d", fl.sequence); 573 call io_call_info.report ("File section no:^-^d", fl.section); 574 call io_call_info.report ("Current volume:^-^a", vl (fl.vlX).canonical_volname); 575 call io_call_info.report ("File generation:^-^d", fl.generation); 576 call io_call_info.report ("File version:^-^d", fl.version); 577 if fl.creation ^= "00000" then 578 call io_call_info.report ("Created on:^-^a", cv_date ((fl.creation))); 579 if fl.expiration ^= "00000" then 580 call io_call_info.report ("Expires on:^-^a", cv_date ((fl.expiration))); 581 call io_call_info.report ("Format:^2-^a", format (io_mod, fl.format 582 + (binary (fl.blocked, 1) * 4))); 583 if fl.format ^= 1 then 584 call io_call_info.report ("Record length:^-^d", fl.reclen); 585 call io_call_info.report ("Block length:^-^d", fl.blklen); 586 call io_call_info.report ("Encoding mode:^-^a", mode (fl.mode)); 587 call io_call_info.report ("Blocks processed:^-^d^/", cseg.lrec.blkcnt); 588 return; 589 590 end print_file_status; 591 592 print_nl_file_status: procedure; 593 594 595 call io_call_info.report ("File state:^-^a", State (state)); 596 if state = 0 then do; 597 call io_call_info.report (""); 598 return; 599 end; 600 if state = 3 then do; 601 call convert_status_code_ (cseg.lrec.code, short, long); 602 call io_call_info.report ("I/O inhibited because:^-^a", long); 603 end; 604 call io_call_info.report ("File number:^-^d", fd.sequence); 605 call io_call_info.report ("File section no:^-^d", fd.vlX); 606 call io_call_info.report ("Current volume:^-^a", vl (fd.vlX).canonical_volname); 607 call io_call_info.report ("Format:^2-^a", format (io_mod, fd.format 608 + (binary (fd.blocked, 1) * 4))); 609 if fd.format ^= 1 then 610 call io_call_info.report ("Record length:^-^d", fd.reclen); 611 call io_call_info.report ("Block length:^-^d", fd.blklen); 612 call io_call_info.report ("Encoding mode:^-^a", mode (fd.mode)); 613 call io_call_info.report ("Blocks processed:^-^d^/", cseg.lrec.blkcnt); 614 return; 615 616 end print_nl_file_status; 617 618 cv_date: proc (julian) returns (char (10) aligned); 619 620 dcl julian char (5); /* date in form: yyddd */ 621 622 dcl clock fixed bin (71), 623 (month, day, year) fixed bin, 624 (Cmonth, Cday, Cyear) pic "99", 625 date_time char (10) aligned, 626 code fixed bin (35); 627 628 dcl decode_clock_value_$date_time entry (fixed bin (71), fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, 629 fixed bin, fixed bin (71), fixed bin, char (3), fixed bin (35)), 630 encode_clock_value_$offsets entry (fixed bin (71), fixed bin, fixed bin, fixed bin, fixed bin, fixed bin, 631 fixed bin, fixed bin (71), fixed bin, char (3), fixed bin (71), fixed bin (35)); 632 633 year = convert (year, substr (julian, 1, 2)); 634 day = convert (day, substr (julian, 3, 3)); 635 call encode_clock_value_$offsets (0, 0, day - 1, year - 1, 0, 0, 0, 0, 0, "gmt", clock, code); 636 if code ^= 0 then return ("unknown"); 637 call decode_clock_value_$date_time (clock, month, day, year, 0, 0, 0, 0, 0, "gmt", code); 638 if code ^= 0 then return ("unknown"); 639 Cmonth = month; 640 Cday = day; 641 Cyear = year - 1900; 642 date_time = Cmonth || "/" || Cday || "/" || Cyear; 643 return (date_time); 644 645 end cv_date; 646 647 setup_for_vol_status: procedure; 648 649 if cseg.no_labels then do; /* no file chain */ 650 if fd.vlX = 0 then i = 1; /* file data not initializeed - use 1st volume */ 651 else i = fd.vlX; 652 end; 653 else do; 654 if cseg.flP = cseg.fcP | cseg.flP = null then i = 1; /* no file links - use 1st volume */ 655 else i = fl.vlX; /* else use current volume */ 656 end; 657 return; /* i = number of current volume */ 658 659 end setup_for_vol_status; 660 661 force_eov: procedure; 662 663 664 code = 0; 665 if cseg.no_labels then call tape_ansi_nl_file_cntl_$data_eot (iocbP, code); 666 else call tape_ansi_file_cntl_$data_eot (iocbP, code); /* force volume switch */ 667 if code ^= 0 then do; /* trouble */ 668 cseg.lrec.code = code; /* lock the logical record IO */ 669 if code = error_table_$no_next_volume then code = 0; /* don't indicate now */ 670 end; 671 return; 672 673 end force_eov; 674 675 setup_for_file_status: procedure; /* determine file state and event code */ 676 677 code = 0; 678 if cseg.no_labels then do; /* no file chain */ 679 if fd.vlX = 0 then go to no_info; /* no information available */ 680 else ; 681 end; 682 else do; 683 if cseg.flP = cseg.fcP | cseg.flP = null then do; /* no file links */ 684 no_info: state = 0; 685 return; 686 end; 687 if fl.file_id ^= fd.file_id & fl.sequence ^= fd.sequence then go to no_info; /* wrong link */ 688 end; 689 690 if iocbP -> iocb.actual_iocb_ptr -> iocb.open_descrip_ptr = null then state = 1; 691 else do; /* file is open */ 692 event_code = cseg.lrec.code; /* set event code */ 693 if cseg.lrec.code = 0 then state = 2; /* no event */ 694 else state = 3; 695 end; 696 return; 697 698 end setup_for_file_status; 699 700 reset_error_lock: procedure; 701 702 code = 0; 703 if cseg.open_mode = 4 then do; /* switch must be open for sequential_input */ 704 if cseg.lrec.code = error_table_$tape_error then cseg.lrec.code = 0; /* unlock the lock */ 705 if cseg.lrec.code = 0 then return; /* lock isn't (or wasn't) locked - we're done */ 706 end; 707 code = error_table_$action_not_performed; /* sequential_output or couldn't unlock */ 708 return; 709 710 end reset_error_lock; 711 712 713 end tape_ansi_control_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/82 1606.0 tape_ansi_control_.pl1 >dumps>old>recomp>tape_ansi_control_.pl1 165 1 07/28/81 1333.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 167 2 06/10/82 1045.3 tape_ansi_cseg.incl.pl1 >ldd>include>tape_ansi_cseg.incl.pl1 169 3 11/20/79 2015.6 tape_ansi_fd.incl.pl1 >ldd>include>tape_ansi_fd.incl.pl1 171 4 11/20/79 2015.6 tape_ansi_fl.incl.pl1 >ldd>include>tape_ansi_fl.incl.pl1 173 5 08/27/75 1703.2 tape_file_status.incl.pl1 >ldd>include>tape_file_status.incl.pl1 175 6 11/29/79 2215.6 tape_volume_status.incl.pl1 >ldd>include>tape_volume_status.incl.pl1 177 7 08/27/75 1703.2 device_status.incl.pl1 >ldd>include>device_status.incl.pl1 179 8 01/10/75 1343.6 iom_stat.incl.pl1 >ldd>include>iom_stat.incl.pl1 181 9 07/19/79 1547.1 io_call_info.incl.pl1 >ldd>include>io_call_info.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. Cday 000274 automatic picture(2) unaligned dcl 622 set ref 640* 642 Cmonth 000273 automatic picture(2) unaligned dcl 622 set ref 639* 642 Cyear 000275 automatic picture(2) unaligned dcl 622 set ref 641* 642 State 000610 constant char(32) initial array unaligned dcl 58 set ref 562* 595* abort 0(17) based bit(1) level 2 packed unaligned dcl 8-7 set ref 506* actual_iocb_ptr 12 based pointer level 2 dcl 1-4 ref 186 204 348 690 addr builtin function dcl 162 ref 494 address 1 based bit(18) level 2 packed unaligned dcl 8-7 ref 510 510 args 44 based varying char array level 2 dcl 9-10 set ref 388 388 399* 441 441 444 446 446 449 449 453* arguments 13(01) 000170 constant bit(1) initial array level 2 packed unaligned dcl 101 ref 357 attach_data_ptr 16 based pointer level 2 dcl 1-4 ref 204 binary builtin function dcl 162 ref 507 508 509 509 510 510 511 511 516 516 581 607 bits 134 based bit(72) level 3 dcl 2-14 set ref 223 494 blkcnt 221 based fixed bin(35,0) level 3 dcl 2-14 set ref 312 533* 587* 613* blklen 46 based fixed bin(17,0) level 3 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" set ref 291 611* blklen 46 based fixed bin(17,0) initial level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" set ref 306 585* blklen 21 based fixed bin(17,0) level 2 in structure "tape_file_status" dcl 5-5 in procedure "tape_ansi_control_" set ref 291* 306* blocked 23 based bit(1) level 2 in structure "tape_file_status" packed unaligned dcl 5-5 in procedure "tape_ansi_control_" set ref 293* 308* blocked 62 based bit(1) initial level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" ref 308 581 blocked 62 based bit(1) level 3 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" ref 293 607 buf_size 310 based fixed bin(17,0) level 2 dcl 2-14 ref 239 240 242 243 244 245 285 300 544 545 547 549 550 550 552 552 574 606 cP 000204 automatic pointer dcl 2-11 set ref 204* 206 211 216 217 223 231 239 239 240 240 242 242 243 243 244 244 245 245 248 258 270 281 283 284 285 285 285 290 291 292 293 294 297 298 299 300 300 300 301 302 303 304 305 306 307 308 309 312 315 320 333 340 415 431 460 466 471 476 489 494 524 525 528 529 533 544 544 545 545 547 547 549 549 550 550 550 550 552 552 552 552 568 571 572 573 574 574 574 575 576 577 577 577 579 579 579 581 581 583 583 585 586 587 601 604 605 606 606 606 607 607 609 609 611 612 613 649 650 651 654 654 654 655 665 668 678 679 683 683 683 687 687 687 687 692 693 703 704 704 705 caller_name 1 based char(32) level 2 dcl 9-10 set ref 349* 360* 374* 399* 418* 424* 453* 484* canonical_volname based char(6) array level 4 packed unaligned dcl 2-14 set ref 239 285 300 545* 574* 606* central_msg 001025 constant char(55) initial array unaligned dcl 58 set ref 508* central_stat 0(21) based bit(3) level 2 packed unaligned dcl 8-7 ref 508 channel_msg 000671 constant char(46) initial array unaligned dcl 58 set ref 507* channel_stat 0(18) based bit(3) level 2 packed unaligned dcl 8-7 ref 507 char_pos 1(18) based bit(3) level 2 packed unaligned dcl 8-7 ref 511 511 cleanup 000176 stack reference condition dcl 162 ref 216 clock 000266 automatic fixed bin(71,0) dcl 622 set ref 635* 637* close_rewind 177 based bit(1) level 2 dcl 2-14 set ref 258* 431* code 000301 automatic fixed bin(35,0) dcl 622 in procedure "cv_date" set ref 635* 636 637* 638 code parameter fixed bin(35,0) dcl 24 in procedure "tape_ansi_control_" set ref 14 187* 193* 200* 207* 212* 220* 251* 266* 424 424* 484 484* 664* 665* 666* 667 668 669 669* 677* 702* 707* code 223 based fixed bin(35,0) level 3 in structure "cseg" dcl 2-14 in procedure "tape_ansi_control_" set ref 568* 601* 668* 692 693 704 704* 705 convert builtin function dcl 162 ref 633 634 convert_status_code_ 000012 constant entry external dcl 144 ref 525 529 568 601 creation 33 based char(5) level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" ref 303 577 577 577 creation 15 based char(5) level 2 in structure "tape_file_status" packed unaligned dcl 5-5 in procedure "tape_ansi_control_" set ref 288* 303* cseg based structure level 1 unaligned dcl 2-14 cur_blkcnt 25 based fixed bin(35,0) level 2 dcl 5-5 set ref 312* cur_section 10 based fixed bin(17,0) level 2 dcl 5-5 set ref 284* 299* cur_volume 11 based char(6) level 2 packed unaligned dcl 5-5 set ref 285* 300* date_time 000276 automatic char(10) dcl 622 set ref 642* 643 day 000271 automatic fixed bin(17,0) dcl 622 set ref 634* 634 635 637* 640 decode_clock_value_$date_time 000042 constant entry external dcl 628 ref 637 density 125 based fixed bin(17,0) level 2 dcl 2-14 ref 333 device_status based structure level 1 unaligned dcl 7-5 set ref 231* dstat_ptr 000212 automatic pointer dcl 7-3 set ref 228* 231 encode_clock_value_$offsets 000044 constant entry external dcl 628 ref 635 eo 0(12) based bit(1) level 2 packed unaligned dcl 8-7 set ref 500* errmsg 000117 automatic char(64) dcl 49 set ref 495* 496* 497* 501* 502* 503* 512* 513* 514* 523* 526* 530* 531* error 26 based entry variable level 2 dcl 9-10 ref 349 360 374 399 418 424 453 484 error_table_$action_not_performed 000016 external static fixed bin(35,0) dcl 149 set ref 251 418* 707 error_table_$bad_arg 000022 external static fixed bin(35,0) dcl 149 set ref 193 266 399* 453* error_table_$file_busy 000026 external static fixed bin(35,0) dcl 149 ref 212 error_table_$invalid_cseg 000030 external static fixed bin(35,0) dcl 149 ref 207 error_table_$no_next_volume 000034 external static fixed bin(35,0) dcl 149 ref 669 error_table_$no_operation 000032 external static fixed bin(35,0) dcl 149 ref 200 error_table_$not_open 000036 external static fixed bin(35,0) dcl 149 set ref 187 349* error_table_$tape_error 000040 external static fixed bin(35,0) dcl 149 ref 704 error_table_$undefined_order_request 000024 external static fixed bin(35,0) dcl 149 set ref 374* error_table_$wrong_no_of_args 000020 external static fixed bin(35,0) dcl 149 set ref 360* event_code 000116 automatic fixed bin(35,0) dcl 46 in procedure "tape_ansi_control_" set ref 279 692* event_code 1 based fixed bin(35,0) level 2 in structure "tape_file_status" dcl 5-5 in procedure "tape_ansi_control_" set ref 279* expiration 16(09) based char(5) level 2 in structure "tape_file_status" packed unaligned dcl 5-5 in procedure "tape_ansi_control_" set ref 289* 304* expiration 35 based char(5) level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" ref 304 579 579 579 fcP 130 based pointer level 2 dcl 2-14 ref 283 284 285 290 291 292 293 294 604 605 606 607 607 609 609 611 612 650 651 654 679 683 687 687 fd based structure level 1 dcl 3-3 file_id 2 based char(17) level 2 in structure "tape_file_status" packed unaligned dcl 5-5 in procedure "tape_ansi_control_" set ref 282* 297* file_id 10 based char(17) level 3 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" ref 687 file_id 10 based char(17) level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" set ref 297 571* 687 file_lock 220 based bit(1) level 3 dcl 2-14 set ref 211 216* 217* 489* file_seq 7 based fixed bin(17,0) level 2 dcl 5-5 set ref 283* 298* file_status_sw 000114 automatic bit(1) unaligned dcl 43 set ref 385* 390* 533 fl based structure level 1 dcl 4-3 flP 132 based pointer level 2 dcl 2-14 ref 297 298 299 300 301 302 303 304 305 306 307 308 309 571 572 573 574 575 576 577 577 577 579 579 579 581 581 583 583 585 586 654 654 655 683 683 687 687 format 000655 constant char(3) initial array unaligned dcl 58 in procedure "tape_ansi_control_" set ref 581* 607* format 45 based fixed bin(17,0) initial level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" ref 305 581 583 format 45 based fixed bin(17,0) level 3 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" ref 290 607 609 format_code 20 based fixed bin(17,0) level 2 dcl 5-5 set ref 290* 305* generation 13 based fixed bin(17,0) level 2 in structure "tape_file_status" dcl 5-5 in procedure "tape_ansi_control_" set ref 286* 301* generation 31 based fixed bin(17,0) level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" set ref 301 575* hardware_status based bit(72) dcl 31 set ref 223* hbound builtin function dcl 162 ref 183 343 hdr1 10 based structure level 2 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" hdr1 10 based structure level 2 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" hdr2 45 based structure level 2 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" hdr2 45 based structure level 2 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" hdw_status 134 based structure level 2 unaligned dcl 2-14 set ref 231 i 000173 automatic fixed bin(17,0) dcl 52 set ref 183* 184 185 191* 221 239 240 241 242 243 244 245 343* 345 345 347 349 357 360 369* 399 528* 529* 544 545 546* 547 549 550 550 552 552 650* 651* 654* 655* infoP parameter pointer dcl 24 ref 14 192 223 228 234 263 263 270 273 330 336 initiate 0(16) based bit(1) level 2 packed unaligned dcl 8-7 set ref 505* invalid 1 based bit(1) level 2 dcl 2-14 ref 206 io_call_info based structure level 1 dcl 9-10 io_call_infop 000216 automatic pointer dcl 9-8 set ref 336* 344 349 349 356 358 360 360 374 374 382 388 388 399 399 399 418 418 424 424 436 441 441 444 446 446 449 449 453 453 453 484 484 497 498 499 500 503 504 505 506 507 508 509 510 511 514 515 516 526 530 533 535 544 545 546 547 549 550 552 554 562 564 569 571 572 573 574 575 576 577 579 581 583 585 586 587 595 597 602 604 605 606 607 609 611 612 613 io_mod 000174 automatic fixed bin(17,0) dcl 53 set ref 340* 341* 581 607 io_order 000101 automatic varying char(32) dcl 39 set ref 344* 345 345 374* io_order_list 000170 constant structure array level 1 unaligned dcl 101 set ref 343 io_order_user_msg 000360 constant structure array level 1 unaligned dcl 128 iocb based structure level 1 dcl 1-4 iocbP parameter pointer dcl 24 set ref 14 186 204 348 665* 666* 690 julian parameter char(5) unaligned dcl 620 ref 618 633 634 long 000142 automatic char(100) dcl 51 set ref 525* 526* 529* 530* 568* 569* 601* 602* long_name 000170 constant varying char(32) initial array level 2 dcl 101 set ref 345 349* lrec 212 based structure level 2 unaligned dcl 2-14 major 137 based fixed bin(35,0) level 3 in structure "cseg" dcl 2-14 in procedure "tape_ansi_control_" set ref 525* major 0(02) based bit(4) level 2 in structure "status" packed unaligned dcl 8-7 in procedure "tape_ansi_control_" set ref 498* marker 0(13) based bit(1) level 2 packed unaligned dcl 8-7 ref 501 max_arglen 43 based fixed bin(17,0) level 2 dcl 9-10 ref 388 388 388 388 399 399 399 441 441 441 441 444 444 446 446 446 446 449 449 449 449 453 453 453 minor 140 based fixed bin(35,0) array level 3 dcl 2-14 set ref 529* mode 63 based fixed bin(17,0) initial level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" ref 309 586 mode 63 based fixed bin(17,0) level 3 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" ref 294 612 mode 24 based fixed bin(17,0) level 2 in structure "tape_file_status" dcl 5-5 in procedure "tape_ansi_control_" set ref 294* 309* mode 000650 constant char(6) initial array unaligned dcl 58 in procedure "tape_ansi_control_" set ref 586* 612* month 000270 automatic fixed bin(17,0) dcl 622 set ref 637* 639 msgs 000360 constant varying char(48) initial array level 2 dcl 128 set ref 360* 399* must_be_open 13 000170 constant bit(1) initial array level 2 in structure "io_order_list" packed unaligned dcl 101 in procedure "tape_ansi_control_" ref 347 must_be_open 11 000000 constant bit(1) initial array level 2 in structure "order_list" packed unaligned dcl 84 in procedure "tape_ansi_control_" ref 185 name 000000 constant varying char(32) initial array level 2 dcl 84 ref 184 nargs 42 based fixed bin(17,0) level 2 dcl 9-10 ref 356 358 382 436 no_labels 202 based bit(1) level 2 dcl 2-14 ref 281 466 649 665 678 no_minor 136 based fixed bin(17,0) level 3 dcl 2-14 ref 524 528 non_null_ptr 11(01) 000000 constant bit(1) initial array level 2 packed unaligned dcl 84 ref 191 null builtin function dcl 162 ref 186 192 348 654 683 690 open_descrip_ptr 20 based pointer level 2 dcl 1-4 ref 186 348 690 open_mode 176 based fixed bin(17,0) level 2 dcl 2-14 ref 248 415 703 order parameter char unaligned dcl 24 ref 14 184 order_list 000000 constant structure array level 1 unaligned dcl 84 ref 183 order_name 11 based char(32) level 2 dcl 9-10 ref 344 power 0(01) based bit(1) level 2 packed unaligned dcl 8-7 ref 495 r 1(21) based bit(1) level 2 packed unaligned dcl 8-7 ref 512 rcount 0(30) based bit(6) level 2 packed unaligned dcl 8-7 ref 509 509 rcp_id based fixed bin(6,0) array level 4 dcl 2-14 ref 242 547 read_errors 14 based fixed bin(17,0) level 2 in structure "tape_volume_status" dcl 6-5 in procedure "tape_ansi_control_" set ref 244* read_errors based fixed bin(17,0) array level 4 in structure "cseg" packed unaligned dcl 2-14 in procedure "tape_ansi_control_" set ref 244 550 550* reclen 22 based fixed bin(21,0) level 2 in structure "tape_file_status" dcl 5-5 in procedure "tape_ansi_control_" set ref 292* 307* reclen 47 based fixed bin(21,0) initial level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" set ref 307 583* reclen 47 based fixed bin(21,0) level 3 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" set ref 292 609* reg_data based structure array level 3 packed unaligned dcl 2-14 report 22 based entry variable level 2 dcl 9-10 ref 497 498 499 500 503 504 505 506 507 508 509 510 511 514 515 516 526 530 533 535 544 545 546 547 549 550 552 554 562 564 569 571 572 573 574 575 576 577 579 581 583 585 586 587 595 597 602 604 605 606 607 609 611 612 613 ret_code 000100 automatic fixed bin(35,0) dcl 38 set ref 441* 444* 446* 449* 460 retain 211 based fixed bin(17,0) level 2 dcl 2-14 set ref 270* 315* 320* 460* 471* 476* retain_code based fixed bin(17,0) dcl 32 ref 263 263 270 section 27 based fixed bin(17,0) level 3 dcl 4-3 set ref 299 573* sequence 30 based fixed bin(17,0) level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" set ref 298 572* 687 sequence 30 based fixed bin(17,0) level 3 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" set ref 283 604* 687 short 000140 automatic char(8) dcl 50 set ref 525* 529* 568* 601* short_name 11 000170 constant varying char(4) initial array level 2 dcl 101 ref 345 soft 0(14) based bit(2) level 2 packed unaligned dcl 8-7 set ref 504* standard 2 based fixed bin(17,0) level 2 dcl 2-14 ref 340 state based fixed bin(17,0) level 2 in structure "tape_file_status" dcl 5-5 in procedure "tape_ansi_control_" set ref 278* state 000115 automatic fixed bin(17,0) dcl 45 in procedure "tape_ansi_control_" set ref 278 562 563 567 595 596 600 684* 690* 693* 694* statp 000214 automatic pointer dcl 8-5 set ref 494* 495 498 499 500 501 504 505 506 507 508 509 509 510 510 511 511 512 515 516 516 status based structure level 1 dcl 8-7 sub 0(06) based bit(6) level 2 packed unaligned dcl 8-7 set ref 499* substr builtin function dcl 162 ref 240 633 634 tally 1(24) based bit(12) level 2 packed unaligned dcl 8-7 ref 516 516 tape_ansi_file_cntl_$data_eot 000010 constant entry external dcl 143 ref 666 tape_ansi_nl_file_cntl_$data_eot 000014 constant entry external dcl 145 ref 665 tape_drive 4 based char(32) level 2 in structure "tape_volume_status" packed unaligned dcl 6-5 in procedure "tape_ansi_control_" set ref 242* 243* tape_drive based char(32) array level 4 in structure "cseg" packed unaligned dcl 2-14 in procedure "tape_ansi_control_" set ref 243 549* tape_file_status based structure level 1 unaligned dcl 5-5 tape_volume_status based structure level 1 unaligned dcl 6-5 tfstat_ptr 000206 automatic pointer dcl 5-3 set ref 273* 278 279 282 283 284 285 286 287 288 289 290 291 292 293 294 297 298 299 300 301 302 303 304 305 306 307 308 309 312 tvstat_ptr 000210 automatic pointer dcl 6-3 set ref 234* 239 240 241 242 243 244 245 type 1(22) based bit(2) level 2 packed unaligned dcl 8-7 set ref 515* version 14 based fixed bin(17,0) level 2 in structure "tape_file_status" dcl 5-5 in procedure "tape_ansi_control_" set ref 287* 302* version 32 based fixed bin(17,0) level 3 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" set ref 302 576* vl based structure array level 2 unaligned dcl 2-14 vlX 5 based fixed bin(17,0) initial level 2 in structure "fl" dcl 4-3 in procedure "tape_ansi_control_" ref 300 574 655 vlX 5 based fixed bin(17,0) initial level 2 in structure "fd" dcl 3-3 in procedure "tape_ansi_control_" set ref 284 285 605* 606 650 651 679 vol_data based structure array level 3 unaligned dcl 2-14 volname based char(32) array level 4 packed unaligned dcl 2-14 set ref 240 544* volume_density based fixed bin(17,0) dcl 41 set ref 333* volume_density_ptr 000112 automatic pointer dcl 40 set ref 330* 333 volume_id 1(18) based char(6) level 2 packed unaligned dcl 6-5 set ref 240* volume_name based char(6) level 2 packed unaligned dcl 6-5 set ref 239* volume_seq 3 based fixed bin(17,0) level 2 dcl 6-5 set ref 241* write_errors based fixed bin(17,0) array level 4 in structure "cseg" packed unaligned dcl 2-14 in procedure "tape_ansi_control_" set ref 245 552 552* write_errors 15 based fixed bin(17,0) level 2 in structure "tape_volume_status" dcl 6-5 in procedure "tape_ansi_control_" set ref 245* year 000272 automatic fixed bin(17,0) dcl 622 set ref 633* 633 635 637* 641 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. cseg_tseg_version_2 internal static fixed bin(17,0) initial dcl 2-12 faultword based structure level 1 dcl 8-27 io_call_af_ret based varying char dcl 9-25 iox_$iocb_version_sentinel external static char(4) dcl 1-43 lbl automatic bit(1) dcl 47 msg_sw automatic bit(1) unaligned dcl 44 special_status based structure level 1 dcl 8-35 NAMES DECLARED BY EXPLICIT CONTEXT. START 002066 constant label dcl 204 ref 197 act 000562 constant label array(12) dcl 223 ref 221 bad_arg 003210 constant label dcl 453 cv_date 006011 constant entry internal dcl 618 ref 577 577 579 579 exit 003317 constant label dcl 489 ref 226 232 246 252 256 261 267 271 313 318 323 328 334 353 364 375 380 404 407 413 429 434 457 461 469 474 479 force_eov 006322 constant entry internal dcl 661 ref 255 423 no_info 006410 constant label dcl 684 ref 679 687 ord 000576 constant label array(10) dcl 377 ref 369 print_device_status 004107 constant entry internal dcl 521 ref 386 391 print_file_status 004633 constant entry internal dcl 559 ref 396 468 print_hardware_status 003322 constant entry internal dcl 492 ref 377 392 print_nl_file_status 005416 constant entry internal dcl 592 ref 466 print_volume_status 004270 constant entry internal dcl 540 ref 394 412 reset_error_lock 006446 constant entry internal dcl 700 ref 325 481 setup_for_file_status 006366 constant entry internal dcl 675 ref 276 395 463 setup_for_vol_status 006267 constant entry internal dcl 647 ref 237 393 409 tape_ansi_control_ 001771 constant entry external dcl 14 wrong_no_args 002650 constant label dcl 360 ref 357 436 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6746 7014 6515 6756 Length 7416 6515 46 365 231 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tape_ansi_control_ 622 external procedure is an external procedure. on unit on line 216 64 on unit print_hardware_status internal procedure shares stack frame of external procedure tape_ansi_control_. print_device_status internal procedure shares stack frame of external procedure tape_ansi_control_. print_volume_status internal procedure shares stack frame of external procedure tape_ansi_control_. print_file_status internal procedure shares stack frame of external procedure tape_ansi_control_. print_nl_file_status internal procedure shares stack frame of external procedure tape_ansi_control_. cv_date internal procedure shares stack frame of external procedure tape_ansi_control_. setup_for_vol_status internal procedure shares stack frame of external procedure tape_ansi_control_. force_eov internal procedure shares stack frame of external procedure tape_ansi_control_. setup_for_file_status internal procedure shares stack frame of external procedure tape_ansi_control_. reset_error_lock internal procedure shares stack frame of external procedure tape_ansi_control_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tape_ansi_control_ 000100 ret_code tape_ansi_control_ 000101 io_order tape_ansi_control_ 000112 volume_density_ptr tape_ansi_control_ 000114 file_status_sw tape_ansi_control_ 000115 state tape_ansi_control_ 000116 event_code tape_ansi_control_ 000117 errmsg tape_ansi_control_ 000140 short tape_ansi_control_ 000142 long tape_ansi_control_ 000173 i tape_ansi_control_ 000174 io_mod tape_ansi_control_ 000204 cP tape_ansi_control_ 000206 tfstat_ptr tape_ansi_control_ 000210 tvstat_ptr tape_ansi_control_ 000212 dstat_ptr tape_ansi_control_ 000214 statp tape_ansi_control_ 000216 io_call_infop tape_ansi_control_ 000266 clock cv_date 000270 month cv_date 000271 day cv_date 000272 year cv_date 000273 Cmonth cv_date 000274 Cday cv_date 000275 Cyear cv_date 000276 date_time cv_date 000301 code cv_date THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_var_desc call_ext_out return mpfx2 enable ext_entry_desc int_entry any_to_any_tr THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_status_code_ decode_clock_value_$date_time encode_clock_value_$offsets tape_ansi_file_cntl_$data_eot tape_ansi_nl_file_cntl_$data_eot THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$bad_arg error_table_$file_busy error_table_$invalid_cseg error_table_$no_next_volume error_table_$no_operation error_table_$not_open error_table_$tape_error error_table_$undefined_order_request error_table_$wrong_no_of_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 001764 183 002004 184 002011 185 002024 186 002027 187 002036 188 002041 191 002042 192 002046 193 002052 194 002055 197 002056 199 002057 200 002061 201 002065 204 002066 206 002074 207 002076 208 002101 211 002102 212 002104 213 002107 216 002110 217 002130 220 002133 221 002135 223 002137 226 002145 228 002146 231 002151 232 002154 234 002155 237 002160 239 002161 240 002205 241 002215 242 002217 243 002241 244 002250 245 002256 246 002303 248 002304 251 002307 252 002312 255 002313 256 002314 258 002315 261 002316 263 002317 266 002324 267 002327 270 002330 271 002331 273 002332 276 002335 278 002336 279 002340 281 002343 282 002346 283 002351 284 002354 285 002356 286 002377 287 002400 288 002401 289 002404 290 002407 291 002411 292 002413 293 002415 294 002417 295 002421 297 002422 298 002426 299 002430 300 002432 301 002453 302 002455 303 002457 304 002463 305 002470 306 002472 307 002474 308 002476 309 002500 312 002502 313 002504 315 002505 318 002507 320 002510 323 002512 325 002513 328 002514 330 002515 333 002520 334 002522 336 002523 340 002526 341 002534 343 002536 344 002543 345 002551 347 002572 348 002575 349 002605 353 002636 356 002637 357 002641 358 002645 360 002650 364 002703 369 002704 372 002706 374 002710 375 002740 377 002741 380 002742 382 002743 385 002745 386 002746 387 002747 388 002750 390 002762 391 002764 392 002765 393 002766 394 002767 395 002770 396 002771 397 002772 399 002773 404 003034 407 003035 409 003036 412 003037 413 003040 415 003041 418 003045 421 003071 423 003072 424 003073 429 003122 431 003123 434 003126 436 003127 441 003131 444 003146 446 003156 449 003173 453 003210 457 003243 460 003244 461 003246 463 003247 466 003250 468 003255 469 003256 471 003257 474 003262 476 003263 479 003266 481 003267 484 003270 489 003317 490 003321 492 003322 494 003323 495 003326 496 003335 497 003340 498 003361 499 003406 500 003430 501 003455 502 003464 503 003467 504 003512 505 003537 506 003561 507 003606 508 003641 509 003674 510 003717 511 003751 512 003776 513 004006 514 004011 515 004034 516 004062 517 004106 521 004107 523 004110 524 004113 525 004116 526 004131 527 004154 528 004155 529 004163 530 004177 531 004222 532 004225 533 004227 535 004256 536 004267 540 004270 544 004271 545 004331 546 004371 547 004414 549 004452 550 004500 552 004545 554 004621 555 004632 559 004633 562 004634 563 004661 564 004663 565 004674 567 004675 568 004677 569 004713 571 004733 572 004760 573 005005 574 005027 575 005070 576 005112 577 005137 579 005175 581 005233 583 005271 585 005316 586 005343 587 005371 588 005415 592 005416 595 005417 596 005444 597 005446 598 005457 600 005460 601 005462 602 005476 604 005516 605 005543 606 005565 607 005626 609 005664 611 005711 612 005736 613 005764 614 006010 618 006011 633 006013 634 006023 635 006036 636 006114 637 006124 638 006167 639 006177 640 006207 641 006217 642 006232 643 006257 647 006267 649 006270 650 006273 651 006301 652 006302 654 006303 655 006316 657 006321 661 006322 664 006323 665 006325 666 006342 667 006353 668 006356 669 006360 671 006365 675 006366 677 006367 678 006371 679 006374 681 006377 683 006400 684 006410 685 006411 687 006412 690 006423 692 006435 693 006437 694 006443 696 006445 700 006446 702 006447 703 006451 704 006455 705 006462 707 006465 708 006470 ----------------------------------------------------------- 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