COMPILATION LISTING OF SEGMENT cv_rtmf Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 03/17/86 1456.6 mst Mon Options: optimize map 1 2 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 4 /* */ 5 /* COMPILED OUTPUT OF SEGMENT cv_rtmf.rd */ 6 /* Compiled by: reduction_compiler, Version 2.5 of Oct 21, 1985 */ 7 /* Compiled on: 03/17/86 1456.6 mst Mon */ 8 /* */ 9 /* * * * * * * * * * * * * * * * * * * * * * * */ 10 11 /* *********************************************************** 12* * * 13* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 14* * * 15* * Copyright (c) 1972 by Massachusetts Institute of * 16* * Technology and Honeywell Information Systems, Inc. * 17* * * 18* *********************************************************** */ 19 20 21 /* CV_RTMF - Compile a Resource Type Master File into a Resource Type Description Table. */ 22 /* Ripp'd untimely from the womb of cv_pmf on 03/10/78 by C. D. Tavares */ 23 /* Modified 04/12/79 by CDT for precanonicalization of resource names */ 24 /* Modified 8/81 by M.R. Jordan for Time: open; and change error 19 severity */ 25 /* Modified January 1982 BIM for author changes. */ 26 /* Modified July 1982 by E. N. Kittlitz for [severity] and rtmf suffix. */ 27 28 /*++ 29* 30*BEGIN 31*1/Device : ; 32* /LEX (2) open [auto_rtde.name = token_value] LEX (2) 33* / stmt \ 34*2/Volume : ; 35* /LEX (2) open [auto_rtde.name = token_value; 36* auto_rtde.is_volume = "1"b] LEX (2) 37* / stmt \ 38*3/ 39* /ERROR (19) 40* / RETURN \ 41*4/ 42* /ERROR (19) 43* / RETURN \ 44* 45*stmt 46*5/end ; 47* /close LEX (2) 48* / RETURN \ 49*6/Device : ; 50* /LEX (2) close open [auto_rtde.name = token_value] LEX (2) 51* / stmt \ 52*7/Volume : ; 53* /LEX (2) close open [auto_rtde.name = token_value; 54* auto_rtde.is_volume = "1"b] LEX (2) 55* / stmt \ 56*8/Attribute_domain : ; 57* / LEX (3) [auto_rtde.n_defined_attributes = 0] 58* / stmt \ 59*9/Attribute_domain : 60* /LEX (2) [attr_type = Defined] PUSH (stmt) 61* / atts \ 62* /Limit : open ; 63* /LEX (4) 64* / stmt \ 65* /Limit : ; 66* /LEX (2) [auto_rtde.process_limit = token.Nvalue] LEX (2) 67* / stmt \ 68* /Time : , ; 69* /LEX (2) [auto_rtde.default_time = token.Nvalue] LEX (2) 70* [auto_rtde.max_time = token.Nvalue] LEX (2) 71* / stmt \ 72* /Time : ; 73* /LEX (2) [auto_rtde.default_time = token.Nvalue] LEX (2) 74* / stmt \ 75*/Time : open ; 76* /LEX (4) [auto_rtde.default_time = FOREVER] 77* / stmt \ 78* /Advance_notice : none ; 79* /LEX (4) [auto_rtde.advance_notice_time = -1] 80* / stmt \ 81* /Advance_notice : ; 82* /LEX (2) [auto_rtde.advance_notice_time = token.Nvalue] LEX (2) 83* / stmt \ 84* /Manual_clear : ; 85* /LEX (2) [auto_rtde.manual_clear = (token_value = "yes")] LEX (2) 86* / stmt \ 87* /Implies : ; 88* /LEX (2) [auto_rtde.n_mates = 1; 89* auto_rtde.mates (1) = token_value] LEX (2) 90* / stmt \ 91* /Accepts : ; 92* /LEX (3) [auto_rtde.n_mates = 0] 93* / stmt \ 94* /Accepts : 95* /LEX (2) [matei = 0] 96* / mates \ 97* /Like : ; 98* /LEX (2) [auto_rtde.is_synonym = "1"b; 99* auto_rtde.n_mates = 0; 100* auto_rtde.syn_to = token_value;] LEX (2) 101* / stmt \ 102* /Canonicalizer : ; 103* /LEX (3) 104* / stmt \ 105* /Canonicalizer : ; 106* /LEX (2) [auto_rtde.precanon_proc = token_value;] LEX (2) 107* / stmt \ 108* /Canonicalizer : 109* /LEX (2) ERROR (4) NEXT_STMT 110* / stmt \ 111* /charge_type : ; 112* /LEX (2) [auto_rtde.registration_defaults.charge_type = find_charge_type (); 113* auto_rtde.registration_defaults.charge_type_given = "1"b] LEX (2) 114* / stmt \ 115* /potential_attributes : ; 116* /LEX (3) [auto_rtde.registration_defaults.potential_attributes_given = "1"b] 117* / stmt \ 118* /potential_attributes : 119* /LEX (2) [attr_type = Main_potential_defaults] PUSH (stmt) 120* [auto_rtde.registration_defaults.potential_attributes_given = "1"b] 121* / atts \ 122* /attributes : ; 123* /LEX (3) [auto_rtde.registration_defaults.attributes_given = "1"b] 124* / stmt \ 125* /attributes : 126* /LEX (2) [attr_type = Main_defaults] PUSH (stmt) 127* [auto_rtde.registration_defaults.attributes_given = "1"b] 128* / atts \ 129* /access_range : ; 130* /LEX (2) [auto_rtde.registration_defaults.aim_range (*) = authorization_values (*); 131* auto_rtde.registration_defaults.aim_range_given = "1"b] LEX (2) 132* / stmt \ 133* /access_range : 134* /LEX (2) ERROR (17) NEXT_STMT 135* / stmt \ 136* /type : ; 137* /LEX (2) [subi, auto_rtde.n_subtypes = auto_rtde.n_subtypes + 1; 138* auto_rtde.subtype_name (subi) = token_value;] LEX (2) 139* / subtype \ 140* / 141* /ERROR (2) NEXT_STMT 142* / stmt \ 143* / 144* /ERROR (1) 145* / RETURN \ 146* 147*subtype 148* /charge_type : ; 149* /LEX (2) [auto_rtde.subtype_defaults (subi).charge_type = find_charge_type (); 150* auto_rtde.subtype_defaults (subi).charge_type_given = "1"b] LEX (2) 151* / subtype \ 152* /potential_attributes : ; 153* /LEX (3) [auto_rtde.subtype_defaults (subi).potential_attributes_given = "1"b] 154* / subtype \ 155* /potential_attributes : 156* /LEX (2) [attr_type = Subtype_potential_defaults] PUSH (subtype) 157* [auto_rtde.subtype_defaults (subi).potential_attributes_given = "1"b] 158* / atts \ 159* /attributes : ; 160* /LEX (3) [auto_rtde.subtype_defaults (subi).attributes_given = "1"b] 161* / subtype \ 162* /attributes : 163* /LEX (2) [attr_type = Subtype_defaults] PUSH (subtype) 164* [auto_rtde.subtype_defaults (subi).attributes_given = "1"b] 165* / atts \ 166* /access_range : ; 167* /LEX (2) [auto_rtde.subtype_defaults (subi).aim_range (*) = authorization_values (*); 168* auto_rtde.subtype_defaults (subi).aim_range_given = "1"b] LEX (2) 169* / subtype \ 170* /access_range : 171* /LEX (2) ERROR (17) NEXT_STMT 172* / stmt \ 173* / 174* / 175* / stmt \ 176* / 177* /ERROR (1) 178* / RETURN \ 179* 180*atts 181* / , 182* /add_attribute LEX (2) 183* / atts \ 184* / ; 185* /add_attribute LEX (2) 186* / STACK_POP \ 187* / 188* /ERROR (3) NEXT_STMT 189* / STACK_POP \ 190* / 191* /ERROR (1) 192* / RETURN \ 193* 194*mates 195* / 196* /[matei, auto_rtde.n_mates = matei + 1; 197* auto_rtde.mates (matei) = token_value] LEX 198* / matepunct \ 199* / 200* /ERROR (4) NEXT_STMT 201* / stmt \ 202* / 203* /ERROR (1) 204* / RETURN \ 205*matepunct 206* /, 207* /LEX 208* / mates \ 209* /; 210* /LEX 211* / stmt \ 212* / 213* /ERROR (5) NEXT_STMT 214* / stmt \ 215* / 216* /ERROR (1) 217* / RETURN \ 218* 219* ++*/ 220 221 /* format: style4 */ 222 cv_rtmf: procedure; 223 224 /* automatic */ 225 226 dcl (APstmt, APtoken, areap, rtmfp) ptr; 227 228 dcl 1 auto_rtde aligned automatic, 229 2 fixed_info like rtde.fixed_info aligned, 230 2 mates (6) char (32) aligned, 231 2 subtypes (32) like rtde.subtypes aligned; 232 233 dcl 1 auto_ctt aligned, 234 2 n_charge_types fixed bin, 235 2 charge_types (100) char (32); 236 237 dcl authorization_values (2) bit (72) aligned, 238 access_ceiling bit (72) aligned; 239 240 dcl attr_type fixed bin, 241 (matei, subi) fixed bin, 242 dn char (168), 243 (supplied_en, rtmf_en, rtdt_en) char (32), 244 entry_active bit (1) aligned, 245 (i, j, k, n) fixed bin, 246 time_now fixed bin (71), 247 bitc fixed bin (24), 248 target_name char (32), 249 volume_ind bit (1), 250 ap ptr, 251 al fixed bin, 252 arg based (ap) char (al), 253 (ec, code) fixed bin (35); 254 dcl created_table_segment bit (1) aligned; 255 dcl (SYSTEM_LOW, SYSTEM_HIGH) bit (72) aligned, 256 last_block_ptr pointer; 257 258 dcl got_mandatory (100) bit (1) unaligned, 259 mytoken char (256), 260 temp_ptr pointer, 261 loop_ptr pointer, 262 found bit (1) aligned; 263 dcl argc fixed bin; 264 dcl argx fixed bin; 265 dcl fb35 fixed bin (35); 266 267 dcl 1 auto_token aligned automatic like token; 268 269 /* based */ 270 271 dcl bchr char (al) unal based (ap); 272 273 /* builtin */ 274 275 declare (addr, binary, collate, clock, dimension, divide, index, length, 276 null, nullo, offset, pointer, rel, reverse, rtrim, 277 size, string, substr, unspec, verify) builtin; 278 279 /* conditions */ 280 281 declare cleanup condition; 282 283 /* entries */ 284 285 dcl translator_temp_$get_segment entry (char (*) aligned, ptr, fixed bin (35)); 286 dcl translator_temp_$release_all_segments entry (ptr, fixed bin (35)); 287 288 dcl define_area_ ext entry (pointer, fixed bin (35)), 289 ioa_$rsnnl ext entry options (variable), 290 convert_authorization_$from_string entry (bit (72) aligned, char (*), fixed bin (35)), 291 convert_authorization_$from_string_range entry ((2) bit (72) aligned, char (*), fixed bin (35)), 292 system_info_$access_ceiling entry (bit (72) aligned), 293 cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 294 cv_entry_ ext entry (char (*), pointer, fixed bin (35)) returns (entry), 295 get_wdir_ entry () returns (char (168) aligned), 296 get_group_id_ entry () returns (char (32) aligned), 297 expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)), 298 com_err_ entry options (variable), 299 lex_string_$init_lex_delims entry (char (*), char (*), char (*), char (*), char (*), bit (*), 300 char (*) var, char (*) var, char (*) var, char (*) var), 301 lex_string_$lex entry (ptr, fixed bin, fixed bin, ptr, bit (*), char (*), char (*), char (*), char (*), char (*), 302 char (*) var, char (*) var, char (*) var, char (*) var, ptr, ptr, fixed bin (35)); 303 304 dcl com_err_$suppress_name entry () options (variable); 305 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 306 dcl hcs_$delentry_seg entry (ptr, fixed bin (35)); 307 dcl hcs_$set_bc_seg entry (ptr, fixed bin (24), fixed bin (35)); 308 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 309 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 310 dcl terminate_file_ entry (ptr, fixed bin (24), bit (*), fixed bin (35)); 311 dcl hcs_$truncate_seg entry (ptr, fixed bin, fixed bin (35)); 312 dcl expand_pathname_$add_suffix entry (char (*), char (*), char (*), char (*), fixed bin (35)); 313 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 314 dcl suffixed_name_$new_suffix entry (char (*), char (*), char (*), char (32), fixed bin (35)); 315 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 316 317 /* internal static */ 318 319 dcl (first bit (1) initial ("1"b), 320 (Defined initial (0), 321 Main_potential_defaults initial (1), 322 Main_defaults initial (2), 323 Subtype_potential_defaults initial (3), 324 Subtype_defaults initial (4)) fixed bin, 325 my_name char (8) aligned initial ("cv_rtmf"), 326 (LEXDLM, LEXCTL) char (128) var, 327 BREAKS char (128) var, 328 IGBREAKS char (128) var) internal static; 329 330 dcl FOREVER fixed bin initial (4880) static options (constant); 331 332 /* external static */ 333 334 dcl (error_table_$translation_failed, 335 error_table_$badopt, 336 error_table_$too_many_args, 337 error_table_$seg_not_found, 338 error_table_$no_ext_sym, 339 error_table_$noentry, 340 error_table_$noarg, 341 error_table_$bad_conversion, 342 error_table_$zero_length_seg) fixed bin (35) external static; 343 dcl sys_info$max_seg_size fixed bin (18) external static; 344 dcl cv_rtmf_severity_ fixed bin (35) external static init (0); 345 346 /* include files */ 347 1 1 /* --------------- BEGIN include file rtdt.incl.pl1 --------------- */ 1 2 1 3 dcl 1 rtdt aligned based (rtdtp), /* resource type description table */ 2 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 2 2 2 3 /* the "author" items must always be the first ones in the table. The 2 4* module which moves the converted table to the System Control process 2 5* fills in these data items and assumes them to be at the head of the segment 2 6* regardless of the specific table's actual declaration. The variables 2 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 2 8* respectively. For tables installed in multiple processes, these 2 9* are to be used to lock out multiple installations. */ 2 10 2 11 /* Lock should be used as a modification lock. Since, in general, 2 12* entries may not be moved in system tables, even by installations, 2 13* it is sufficient for only installers and programs that change threads 2 14* to set or respect the lock. Simply updating data in an entry 2 15* requires no such protection. 2 16* 2 17* Last_install_time is used by readers of system tables to detect 2 18* installations or other serious modifications. By checking it before 2 19* and after copying a block of data, they can be protected against 2 20* modifications. 2 21* 2 22* Modules that set the lock should save proc_group_id, and then 2 23* put their group id there for the time they hold the lock. 2 24* if they do not actually install the, they should restore the group id. 2 25**/ 2 26 2 27 2 author aligned, /* validation data about table's author */ 2 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 2 29 3 lock bit (36), /* installation lock */ 2 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 2 31 3 update_authorization bit (1) unal, /* update only authorizations */ 2 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 2 33 3 pad bit (33) unaligned, 2 34 3 last_install_time fixed bin (71), 2 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 2 36 3 w_dir char (64), /* author's working directory */ 2 37 2 38 /* END INCLUDE FILE author.incl.pl1 */ 1 4 1 5 2 version fixed bin, /* version number */ 1 6 2 installed_under_resource_mgt bit (1) aligned, /* resource mgt. was ON when this was installed */ 1 7 2 charge_type_table_ptr offset, /* points to charge_type_table */ 1 8 2 first_resource offset, /* chain for RTDE's */ 1 9 2 rtdt_area area (RTDT_area_len); /* all following items allocated here */ 1 10 1 11 dcl 1 charge_type_table aligned based (cttp), /* describes charges for resource types */ 1 12 2 n_charge_types fixed bin, /* number of distinct charge types */ 1 13 2 charge_types (N_CHARGE_TYPES refer (charge_type_table.n_charge_types)) aligned char (32), 1 14 2 flagword fixed bin (35) aligned; /* this word simply help us set bitcount properly */ 1 15 1 16 dcl 1 rtde aligned based (rtdep), /* describes one resource type */ 1 17 2 fixed_info aligned, 1 18 3 next_resource offset, /* chains to next type, or nullo */ 1 19 3 name char (32), /* name of resource type, e.g. "tape_drive" */ 1 20 3 syn_to char (32), /* if is_synonym this is master syn */ 1 21 3 precanon_proc char (64), /* name of routine to standardize resource name */ 1 22 3 pad_1 (16) fixed bin (35), 1 23 3 flags unaligned, 1 24 4 (valid, /* resource type hasn't been deleted */ 1 25 is_volume, /* specifies volume or device type */ 1 26 manual_clear, /* volumes of this type to be "degaussed" between owners */ 1 27 addition_pending, /* bookkeeping bit for upd_rtdt_ */ 1 28 deletion_pending, 1 29 is_synonym) bit (1) unaligned, /* ditto */ 1 30 4 pad bit (12) unaligned, 1 31 3 (process_limit, /* how many can you assign at one time */ 1 32 default_time, /* implicit reservations are for how many minutes */ 1 33 max_time, /* how long can you reserve it for */ 1 34 advance_notice_time, /* warn operator to prepare mount ahead of time */ 1 35 pad2, 1 36 n_exclusion_specs, /* number of distinct "name=" fields in attributes */ 1 37 n_mates, /* number of mating devs/vols for this vol/dev */ 1 38 n_subtypes, /* number of registration subtypes */ 1 39 n_defined_attributes) fixed bin (17) unaligned, /* number of defined attributes */ 1 40 3 pad_2 (8) fixed bin (35), 1 41 3 attributes_valid bit (72) aligned, /* "1"b if corresp. attribute undeleted */ 1 42 3 attributes_to_match bit (72) aligned, /* potential mate must possess these attributes */ 1 43 3 attribute_names (72) char (12) aligned, /* all possible attributes for this resource */ 1 44 3 exclusion_specs (36) bit (72) aligned, /* each masks all attrributes of the form "key=val" */ 1 45 3 pad_3 (32) fixed bin (35), 1 46 3 registration_defaults aligned, /* applied at reg. time if none given */ 1 47 4 default_flags aligned, 1 48 5 (potential_attributes_given, /* "1"b = there are default potential_attributes */ 1 49 attributes_given, /* and similarly, etc. */ 1 50 aim_range_given, 1 51 charge_type_given) bit (1) unaligned, 1 52 5 pad bit (31) unaligned, 1 53 4 potential_attributes bit (72) aligned, /* for registration, if given */ 1 54 4 attributes bit (72) aligned, /* for registration and also for runtime "I-don't-care" */ 1 55 4 aim_range (2) bit (72) aligned, /* and similarly, etc. */ 1 56 4 charge_type fixed bin, 1 57 4 pad_4 (8) fixed bin (35) aligned, 1 58 2 mates (N_MATES refer (rtde.n_mates)) char (32) aligned, 1 59 /* the volume type that mounts on this device, or vice versa */ 1 60 2 subtypes (N_SUBTYPES refer (rtde.n_subtypes)) aligned, /* named registration default groups */ 1 61 3 subtype_name char (32), /* name of the group */ 1 62 3 subtype_defaults like rtde.registration_defaults aligned; 1 63 1 64 dcl RTDT_version_3 fixed bin static options (constant) initial (3), 1 65 RTDT_version_2 fixed bin static options (constant) initial (2), 1 66 /* same format, but without precanon_proc */ 1 67 (N_MATES, N_SUBTYPES, N_CHARGE_TYPES) fixed bin, 1 68 RTDT_area_len fixed bin (18); 1 69 1 70 dcl (rtdep, rtdtp, cttp) pointer; 1 71 1 72 /* ---------------- END include file rtdt.incl.pl1 ---------------- */ 348 3 1 /* --------------- BEGIN include file rcp_mandatories.incl.pl1 --------------- */ 3 2 3 3 /* Written by (probably) Tavares in (probably) 1979. */ 3 4 /* Modified by Chris Jones, 03/85, to remove disk models 181 and 191, and tape 3 5* model 400. */ 3 6 3 7 dcl 1 rcp_mandatories (2) aligned static options (constant), 3 8 2 resource_name char (32) initial 3 9 ("disk_drive", "tape_drive"), 3 10 2 attributes (72) char (12) initial 3 11 /* disk drives */ 3 12 (" ", " ", "model=400", "model=451", "model=500", 3 13 "model=501", (66) (1) " ", 3 14 /* tape drives */ 3 15 "track=9", "den=800", "den=1600", " ", "model=500", 3 16 "model=601", "model=610", (65) (1) " "); 3 17 3 18 /* ---------------- END include file rcp_mandatories.incl.pl1 ---------------- */ 349 4 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 4 2 4 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 4 4 4 5 dcl area_infop ptr; 4 6 4 7 dcl 1 area_info aligned based (area_infop), 4 8 2 version fixed bin, /* version number for this structure is 1 */ 4 9 2 control aligned like area_control, /* control bits for the area */ 4 10 2 owner char (32) unal, /* creator of the area */ 4 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 4 12 2 size fixed bin (18), /* size of the area in words */ 4 13 2 version_of_area fixed bin, /* version of area (returned only) */ 4 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 4 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 4 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 4 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 4 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 4 19 4 20 dcl 1 area_control aligned based, 4 21 2 extend bit (1) unal, /* says area is extensible */ 4 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 4 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 4 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 4 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 4 26 2 system bit (1) unal, /* says area is managed by system */ 4 27 2 pad bit (30) unal; 4 28 4 29 /* END INCLUDE FILE area_info.incl.pl1 */ 350 5 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 5 2* 5 3* Values for the "access mode" argument so often used in hardcore 5 4* James R. Davis 26 Jan 81 MCR 4844 5 5* Added constants for SM access 4/28/82 Jay Pattin 5 6* Added text strings 03/19/85 Chris Jones 5 7**/ 5 8 5 9 5 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 5 11 dcl ( 5 12 N_ACCESS init ("000"b), 5 13 R_ACCESS init ("100"b), 5 14 E_ACCESS init ("010"b), 5 15 W_ACCESS init ("001"b), 5 16 RE_ACCESS init ("110"b), 5 17 REW_ACCESS init ("111"b), 5 18 RW_ACCESS init ("101"b), 5 19 S_ACCESS init ("100"b), 5 20 M_ACCESS init ("010"b), 5 21 A_ACCESS init ("001"b), 5 22 SA_ACCESS init ("101"b), 5 23 SM_ACCESS init ("110"b), 5 24 SMA_ACCESS init ("111"b) 5 25 ) bit (3) internal static options (constant); 5 26 5 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 5 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 5 29 5 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 5 31 static options (constant); 5 32 5 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 5 34 static options (constant); 5 35 5 36 dcl ( 5 37 N_ACCESS_BIN init (00000b), 5 38 R_ACCESS_BIN init (01000b), 5 39 E_ACCESS_BIN init (00100b), 5 40 W_ACCESS_BIN init (00010b), 5 41 RW_ACCESS_BIN init (01010b), 5 42 RE_ACCESS_BIN init (01100b), 5 43 REW_ACCESS_BIN init (01110b), 5 44 S_ACCESS_BIN init (01000b), 5 45 M_ACCESS_BIN init (00010b), 5 46 A_ACCESS_BIN init (00001b), 5 47 SA_ACCESS_BIN init (01001b), 5 48 SM_ACCESS_BIN init (01010b), 5 49 SMA_ACCESS_BIN init (01011b) 5 50 ) fixed bin (5) internal static options (constant); 5 51 5 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 351 6 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 6 2 /* format: style2,^inddcls,idind32 */ 6 3 6 4 declare 1 terminate_file_switches based, 6 5 2 truncate bit (1) unaligned, 6 6 2 set_bc bit (1) unaligned, 6 7 2 terminate bit (1) unaligned, 6 8 2 force_write bit (1) unaligned, 6 9 2 delete bit (1) unaligned; 6 10 6 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 6 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 6 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 6 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 6 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 6 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 6 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 6 18 6 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 352 353 dcl 1 auto_area_info automatic like area_info aligned; 354 355 /* program */ 356 357 rtmfp = null; /* Initialize for cleanup handler */ 358 rtdtp = null; /* .. */ 359 areap = null; /* .. */ 360 rtdep = null; 361 dn, supplied_en, rtmf_en, rtdt_en = ""; 362 created_table_segment = ""b; 363 364 on cleanup begin; 365 call clean_up; 366 cv_rtmf_severity_ = 5; 367 end; 368 369 call cu_$arg_count (argc, ec); 370 if ec ^= 0 then do; 371 call com_err_ (ec, my_name); 372 go to severity_5_failure; 373 end; 374 375 if argc = 0 then do; 376 give_usage: call com_err_$suppress_name (ec, my_name, "Usage: cv_rtmf RTMF (-brief|-bf|-long|-lg)"); 377 go to severity_5_failure; 378 end; 379 380 do argx = 1 to argc; 381 call cu_$arg_ptr (argx, ap, al, ec); 382 if character (bchr, 1) ^= "-" 383 then do; 384 if supplied_en ^= "" 385 then do; 386 call com_err_ (error_table_$too_many_args, my_name, "Only one pathname may be given. ^a was the second.", bchr); 387 go to severity_5_failure; 388 end; 389 390 call expand_pathname_ (bchr, dn, supplied_en, ec); 391 if ec ^= 0 then do; 392 path_error: 393 call com_err_ (ec, my_name, "^a", bchr); 394 go to severity_5_failure; 395 end; 396 call expand_pathname_$add_suffix (bchr, "rtmf", dn, rtmf_en, ec); 397 if ec ^= 0 then go to path_error; 398 399 call suffixed_name_$new_suffix (supplied_en, "rtmf", "rtdt", rtdt_en, ec); /* if we get this far, how can we fail? */ 400 if ec ^= 0 /* still, let's have a look */ 401 then go to path_error; 402 403 end; /* Pathname case */ 404 else if bchr = "-bf" then SERROR_CONTROL = "01"b; 405 else if bchr = "-brief" then SERROR_CONTROL = "01"b; 406 else if bchr = "-long" | bchr = "-lg" then SERROR_CONTROL = "10"b; 407 else if bchr = "-severity" | bchr = "-sv" then do; 408 if argx >= argc then do; 409 call com_err_ (error_table_$noarg, my_name, "After ""^a"".", bchr); 410 go to severity_5_failure; 411 end; 412 argx = argx + 1; 413 call cu_$arg_ptr (argx, ap, al, ec); 414 fb35 = cv_dec_check_ (bchr, ec); 415 if ec ^= 0 | fb35 < 0 | fb35 > 5 then do; 416 call com_err_ (error_table_$bad_conversion, my_name, 417 "Severity must be an integer in the range 0 - 5, not ""^a"".", bchr); 418 go to severity_5_failure; 419 end; 420 MIN_PRINT_SEVERITY = fb35; 421 end; 422 else do; 423 call com_err_ (error_table_$badopt, my_name, "^a", bchr); 424 go to severity_5_failure; 425 end; 426 end; /* argument loop */ 427 428 if supplied_en = "" then go to give_usage; 429 430 call system_info_$access_ceiling (access_ceiling); 431 time_now = clock; 432 call initiate_file_ (dn, rtmf_en, R_ACCESS, rtmfp, bitc, ec); 433 if ec = error_table_$noentry 434 then if rtmf_en ^= supplied_en 435 then do; 436 call initiate_file_ (dn, supplied_en, R_ACCESS, rtmfp, bitc, ec); 437 if ec = 0 438 then do; 439 call com_err_ (0, my_name, "Warning: converting ^a. The segment should be named ^a.", 440 pathname_ (dn, supplied_en), rtmf_en); 441 rtmf_en = supplied_en; 442 end; 443 end; 444 if ec ^= 0 445 then do; 446 rtmf_error: 447 call com_err_ (ec, my_name, "^a.", pathname_ (dn, rtmf_en)); 448 go to severity_5_failure; 449 end; 450 451 n = divide (bitc + 8, 9, 24, 0); 452 if n = 0 then do; 453 ec = error_table_$zero_length_seg; 454 go to rtmf_error; 455 end; 456 457 dn = get_wdir_ (); 458 call hcs_$make_seg (dn, rtdt_en, "", 1010b, rtdtp, ec); 459 created_table_segment = (ec = 0); 460 if rtdtp = null then do; 461 rtdt_error: 462 call com_err_ (ec, my_name, "^a", pathname_ (dn, rtdt_en)); 463 go to severity_5_failure; 464 end; 465 466 call hcs_$truncate_seg (rtdtp, 0, ec); 467 if ec ^= 0 then go to rtdt_error; 468 469 rtdt.author.proc_group_id = get_group_id_ (); /* Initialize the header of the new rtdt */ 470 rtdt.author.table = "RTDT"; 471 rtdt.author.w_dir = dn; 472 rtdt.author.lock = ""b; 473 rtdt.author.last_install_time = 0; 474 475 rtdt.version = RTDT_version_3; 476 rtdt.charge_type_table_ptr, rtdt.first_resource = nullo; 477 478 last_block_ptr = null; 479 480 RTDT_area_len = 0; 481 RTDT_area_len = sys_info$max_seg_size - size (rtdt); /* "clever" in the worst sense of the word */ 482 483 unspec (auto_area_info) = ""b; 484 auto_area_info.version = area_info_version_1; 485 auto_area_info.no_freeing, auto_area_info.dont_free = "1"b; 486 auto_area_info.owner = my_name; 487 auto_area_info.size = RTDT_area_len; 488 auto_area_info.areap = addr (rtdt.rtdt_area); 489 490 call define_area_ (addr (auto_area_info), ec); 491 if ec ^= 0 then goto rtdt_error; 492 493 auto_ctt.n_charge_types = 0; 494 495 call convert_authorization_$from_string (SYSTEM_LOW, "system_low", code); 496 if code ^= 0 then goto badacc; 497 call convert_authorization_$from_string (SYSTEM_HIGH, "system_high", code); 498 if code ^= 0 then do; 499 badacc: call com_err_ (code, "cv_rtmf", "While converting canned access classes."); 500 go to severity_5_failure; 501 end; 502 503 call translator_temp_$get_segment (my_name, areap, ec); 504 if ec ^= 0 then do; 505 call com_err_ (ec, my_name, "Getting temporary segment."); 506 go to severity_5_failure; 507 end; 508 509 if first then do; 510 BREAKS = substr (collate (), 1, 8) || substr (collate (), 10, 24) || "(),.:;"; 511 IGBREAKS = substr (collate (), 1, 8) || substr (collate (), 10, 24); 512 call lex_string_$init_lex_delims ("""", """", "/*", "*/", ";", "10"b, BREAKS, IGBREAKS, LEXDLM, LEXCTL); 513 first = "0"b; 514 end; 515 516 entry_active = ""b; 517 518 call lex_string_$lex (rtmfp, n, 0, areap, "100"b, 519 """", """", "/*", "*/", ";", BREAKS, IGBREAKS, 520 LEXDLM, LEXCTL, APstmt, APtoken, ec); 521 522 Pthis_token = APtoken; 523 call SEMANTIC_ANALYSIS (); 524 525 abort: if MERROR_SEVERITY > 2 then do; 526 call com_err_ (error_table_$translation_failed, my_name, rtmf_en); 527 if created_table_segment then bitc = -1; /* delete it it we made the branch */ 528 bitc = 0; /* otherwise just zap it */ 529 end; 530 else do; 531 N_CHARGE_TYPES = auto_ctt.n_charge_types; 532 allocate charge_type_table in (rtdt_area); 533 534 unspec (charge_type_table) = unspec (auto_ctt); 535 rtdt.charge_type_table_ptr = offset (cttp, rtdt.rtdt_area); 536 537 /* Now perform a number of "gullibility checks" on each RTDE. */ 538 539 Ptoken = addr (auto_token); /* hate to diddle with RDC databases, but... */ 540 Pthis_token = Ptoken; 541 Pstmt, token.Pstmt = null; 542 token.line_no = 0; 543 token.Pvalue = addr (mytoken); 544 545 got_mandatory (*) = ""b; 546 547 do loop_ptr = pointer (rtdt.first_resource, rtdt.rtdt_area) 548 repeat (pointer (loop_ptr -> rtde.next_resource, rtdt.rtdt_area)) 549 while (loop_ptr ^= null); 550 551 rtdep = loop_ptr; 552 if rtde.is_synonym then do; 553 mytoken = rtde.name; 554 target_name = rtde.syn_to; 555 volume_ind = rtde.is_volume; 556 found = ""b; 557 558 do rtdep = pointer (rtdt.first_resource, rtdt.rtdt_area) 559 repeat (pointer (rtde.next_resource, rtdt.rtdt_area)) 560 while (rtdep ^= null & ^found); 561 if rtde.name = target_name then do; 562 found = "1"b; 563 if rtde.is_synonym then call ERROR (Syn_chain); 564 if rtde.is_volume ^= volume_ind then 565 call ERROR (Device_syn_volume); 566 end; 567 end; 568 569 if ^found then call ERROR (Syn_undefined); /* fell thru loop, lose. */ 570 end; 571 572 else do; 573 574 /* Check to see if this is a mandatory resource name */ 575 576 do i = 1 to dimension (rcp_mandatories.resource_name, 1) 577 while (rtde.name ^= rcp_mandatories.resource_name (i)); 578 end; 579 580 if i <= dimension (rcp_mandatories.resource_name, 1) then do; 581 582 got_mandatory (i) = "1"b; 583 584 /* Make sure all mandatory attributes for this resource name are defined. */ 585 586 do j = 1 to dimension (rcp_mandatories.attributes, 2) 587 while (rcp_mandatories.attributes (i, j) ^= ""); 588 589 do k = 1 to rtde.n_defined_attributes 590 while (rtde.attribute_names (k) ^= rcp_mandatories.attributes (i, j)); 591 end; 592 593 if k > rtde.n_defined_attributes then do; 594 call ioa_$rsnnl ("""^a"" for ""^a""", mytoken, 595 token.Lvalue, rcp_mandatories.attributes (i, j), rtde.name); 596 call ERROR (Mandatory_attr_missing); 597 end; 598 end; 599 end; 600 601 /* Now make sure the mates for this resource are "consenting". */ 602 603 do i = 1 to rtde.n_mates; 604 605 found = ""b; 606 607 do temp_ptr = pointer (rtdt.first_resource, rtdt.rtdt_area) 608 repeat (pointer (temp_ptr -> rtde.next_resource, rtdt.rtdt_area)) 609 while ((temp_ptr ^= null) & ^found); 610 611 if rtde.mates (i) = temp_ptr -> rtde.name then do; 612 do j = 1 to temp_ptr -> rtde.n_mates 613 while (temp_ptr -> rtde.mates (j) ^= rtde.name); 614 end; 615 616 if j > temp_ptr -> rtde.n_mates then do; 617 call ioa_$rsnnl ("""^a"" and ""^a""", mytoken, 618 token.Lvalue, temp_ptr -> rtde.name, rtde.name); 619 call ERROR (Unrequited_mating); 620 end; 621 622 else if rtde.is_volume = temp_ptr -> rtde.is_volume then do; 623 call ioa_$rsnnl ("""^a"" and ""^a""", mytoken, 624 token.Lvalue, temp_ptr -> rtde.name, rtde.name); 625 call ERROR (Mates_same_type); 626 end; 627 628 else found = "1"b; 629 end; 630 end; 631 632 if ^found then do; 633 call ioa_$rsnnl ("""^a"" for ""^a""", mytoken, 634 token.Lvalue, rtde.mates (i), rtde.name); 635 call ERROR (No_such_mate); 636 end; 637 end; 638 end; 639 end; 640 641 do i = 1 to dimension (rcp_mandatories.resource_name, 1); 642 if ^got_mandatory (i) then do; 643 mytoken = rcp_mandatories.resource_name (i); 644 token.Lvalue = length (rtrim (mytoken, " ")); 645 call ERROR (Mandatory_resource_missing); 646 end; 647 end; 648 649 /* Well, it SEEMS kosher enough, close it out. */ 650 651 bitc = (binary (rel (addr (charge_type_table.flagword))) + 1) * 36; 652 end; 653 654 if bitc >= 0 then do; 655 call terminate_file_ (rtdtp, bitc, TERM_FILE_TRUNC_BC_TERM, ec); 656 if ec ^= 0 then do; 657 call com_err_ (ec, my_name, "Unable to set bitcount on ^a to ^d.", pathname_ (dn, rtdt_en), bitc); 658 go to severity_5_failure; 659 end; 660 end; 661 662 call clean_up; 663 cv_rtmf_severity_ = MERROR_SEVERITY; 664 return; 665 666 severity_5_failure: 667 call clean_up; 668 cv_rtmf_severity_ = 5; 669 return; 670 671 clean_up: 672 procedure; 673 674 if rtmfp ^= null 675 then call terminate_file_ (rtmfp, (0), TERM_FILE_TERM, (0)); 676 677 if areap ^= null 678 then call translator_temp_$release_all_segments (areap, (0)); 679 680 if rtdtp ^= null 681 then if created_table_segment 682 then do; 683 call hcs_$delentry_seg (rtdtp, (0)); 684 rtdtp = null; 685 end; 686 call terminate_file_ (rtdtp, (0), TERM_FILE_TRUNC_BC_TERM, (0)); 687 688 end clean_up; 689 690 /* SYNTAX FUNCTIONS */ 691 692 yes_no: proc returns (bit (1) aligned); 693 694 return (token_value = "yes" | token_value = "no"); 695 end yes_no; 696 697 698 authorization_range: 699 procedure () returns (bit (1) aligned); 700 701 call convert_authorization_$from_string_range (authorization_values, token_value, code); 702 return (code = 0); 703 704 end authorization_range; 705 706 707 canon_virtual_entry: proc () returns (bit (1) aligned); 708 709 dcl entryvar entry variable; 710 711 entryvar = cv_entry_ (rtrim (token_value), null, code); 712 if (code = error_table_$seg_not_found) | (code = error_table_$no_ext_sym) then do; /* not fatal err, but warn him */ 713 call ERROR (Canonicalizer_nonexistent); 714 code = 0; 715 end; 716 717 return (code = 0); 718 719 end canon_virtual_entry; 720 721 /* SEMANTIC FUNCTIONS */ 722 723 open: proc; 724 725 unspec (auto_rtde) = ""b; 726 auto_rtde.name, 727 auto_rtde.precanon_proc, 728 auto_rtde.attribute_names, 729 auto_rtde.mates (*), 730 auto_rtde.subtype_name (*) = ""; 731 732 auto_rtde.n_defined_attributes, 733 auto_rtde.process_limit, 734 auto_rtde.n_mates, 735 auto_rtde.advance_notice_time = -1; 736 737 auto_rtde.default_time, 738 auto_rtde.max_time = FOREVER; /* if that's not enough, hang it up. */ 739 740 entry_active = "1"b; 741 return; 742 end open; 743 744 745 find_charge_type: proc returns (fixed bin); 746 747 dcl i fixed bin; 748 749 do i = 1 to auto_ctt.n_charge_types while (auto_ctt.charge_types (i) ^= token_value); 750 end; 751 752 if i > auto_ctt.n_charge_types then do; 753 auto_ctt.n_charge_types = i; 754 auto_ctt.charge_types (i) = token_value; 755 end; 756 757 return (i); 758 759 end find_charge_type; 760 761 add_attribute: proc; 762 763 dcl implies bit (1) aligned, 764 i fixed bin, 765 copy_token char (12) aligned; 766 767 if substr (token_value, 1, 1) = "^" then do; 768 call ERROR (Negative_attr); 769 return; 770 end; 771 772 if substr (token_value, length (token_value), 1) = "*" then implies = "1"b; 773 else implies = ""b; 774 775 if length (token_value) > 12 + (binary (implies)) then call ERROR (Attr_too_long); 776 777 if implies then copy_token = substr (token_value, 1, length (token_value) - 1); 778 else copy_token = token_value; 779 780 do i = 1 to auto_rtde.n_defined_attributes while (auto_rtde.attribute_names (i) ^= copy_token); 781 end; 782 783 if attr_type ^= Defined then 784 if i > auto_rtde.n_defined_attributes then call ERROR (Undefined_attr); 785 else ; 786 else if i <= auto_rtde.n_defined_attributes then do; 787 call ERROR (Multiply_dcl_attr); 788 return; 789 end; 790 791 if attr_type = Defined then do; 792 auto_rtde.attribute_names (i) = copy_token; 793 if auto_rtde.is_volume then 794 substr (auto_rtde.attributes_to_match, i, 1) = implies; 795 else if implies then call ERROR (Starred_attribute); 796 substr (auto_rtde.attributes_valid, i, 1) = "1"b; 797 auto_rtde.n_defined_attributes = i; 798 return; 799 end; 800 801 else if implies then call ERROR (Starred_attribute); 802 803 if attr_type = Main_potential_defaults then 804 substr (auto_rtde.registration_defaults.potential_attributes, i, 1) = "1"b; 805 else if attr_type = Main_defaults then 806 substr (auto_rtde.registration_defaults.attributes, i, 1) = "1"b; 807 else if attr_type = Subtype_potential_defaults then 808 substr (auto_rtde.subtype_defaults (subi).potential_attributes, i, 1) = "1"b; 809 else substr (auto_rtde.subtype_defaults (subi).attributes, i, 1) = "1"b; 810 return; 811 812 end add_attribute; 813 814 close: proc; 815 816 dcl (j, prefidx) fixed bin; 817 818 dcl save_Lvalue fixed bin (21), 819 save_Pvalue pointer, 820 fake_token_value char (128); 821 822 dcl 1 effective_flags like rtde.registration_defaults.default_flags aligned automatic; 823 dcl error_table_$out_of_sequence fixed bin (35) external static, 824 sub_err_ ext entry options (variable); 825 826 827 if ^entry_active then /* close called before open */ 828 call sub_err_ (error_table_$out_of_sequence, "cv_rtmf", "s", null, 0, 829 "Attempt to use an undefined RTDE."); 830 if auto_rtde.name = "" then call ERROR (No_name); 831 832 save_Lvalue = token.Lvalue; 833 save_Pvalue = token.Pvalue; 834 token.Pvalue = addr (auto_rtde.name); 835 token.Lvalue = length (rtrim (auto_rtde.name, " ")); 836 /* so error messages make sense */ 837 838 if ^auto_rtde.is_synonym then do; /* don't bother checking syns */ 839 if auto_rtde.n_mates = -1 then do; 840 call ERROR (No_mates); 841 auto_rtde.n_mates = 0; 842 end; 843 if auto_rtde.n_defined_attributes = -1 then call ERROR (No_Domain_stmt); 844 if auto_rtde.n_defined_attributes = 0 then 845 auto_rtde.registration_defaults.potential_attributes_given = "1"b; 846 847 effective_flags = auto_rtde.registration_defaults.default_flags; 848 849 if auto_rtde.n_subtypes = 0 then call validate_type (auto_rtde.registration_defaults, effective_flags); 850 851 else do i = 1 to auto_rtde.n_subtypes; 852 853 call ioa_$rsnnl ("""^a"" in ""^a""", fake_token_value, 0, 854 auto_rtde.subtypes (i).subtype_name, auto_rtde.name); 855 token.Pvalue = addr (fake_token_value); 856 token.Lvalue = length (rtrim (fake_token_value, " ")); 857 858 call validate_type (auto_rtde.subtype_defaults (i), effective_flags); 859 end; 860 861 /* Now construct the exclusion specs for all attributes of the type "name=". */ 862 863 auto_rtde.n_exclusion_specs = 0; 864 865 do i = 1 to auto_rtde.n_defined_attributes; 866 867 prefidx = index (auto_rtde.attribute_names (i), "="); 868 869 if prefidx > 0 then do; 870 871 do j = 1 to auto_rtde.n_exclusion_specs 872 while (substr (auto_rtde.exclusion_specs (j), i, 1) = ""b); 873 end; 874 875 if j > auto_rtde.n_exclusion_specs then do; 876 auto_rtde.n_exclusion_specs = auto_rtde.n_exclusion_specs + 1; 877 878 do j = i to auto_rtde.n_defined_attributes; 879 if substr (auto_rtde.attribute_names (i), 1, prefidx) 880 = substr (auto_rtde.attribute_names (j), 1, prefidx) then 881 substr (auto_rtde.exclusion_specs (auto_rtde.n_exclusion_specs), j, 1) = "1"b; 882 end; 883 end; 884 end; 885 end; 886 end; 887 888 N_MATES = auto_rtde.n_mates; 889 N_SUBTYPES = auto_rtde.n_subtypes; 890 891 allocate rtde in (rtdt.rtdt_area); 892 893 unspec (rtde.fixed_info) = unspec (auto_rtde.fixed_info); 894 unspec (rtde.mates) = unspec (auto_rtde.mates); 895 unspec (rtde.subtypes) = unspec (auto_rtde.subtypes); 896 897 rtde.next_resource = nullo; 898 rtde.valid = "1"b; 899 900 if last_block_ptr = null then rtdt.first_resource = offset (rtdep, rtdt.rtdt_area); 901 else last_block_ptr -> rtde.next_resource = offset (rtdep, rtdt.rtdt_area); 902 903 last_block_ptr = rtdep; 904 905 token.Pvalue = save_Pvalue; 906 token.Lvalue = save_Lvalue; 907 908 rtdep = null; /* catches bugs */ 909 910 return; 911 912 validate_type: proc (arg_struc, flag_struc); 913 914 dcl 1 arg_struc parameter like rtde.registration_defaults aligned; 915 916 dcl 1 flag_struc parameter like rtde.registration_defaults.default_flags aligned; 917 918 dcl 1 temp_flags like rtde.registration_defaults.default_flags aligned automatic; 919 920 temp_flags = effective_flags | arg_struc.default_flags; 921 922 if ^string (temp_flags) = ""b then return; /* all are given */ 923 924 if auto_rtde.n_defined_attributes > 0 then do; 925 if ^temp_flags.potential_attributes_given then 926 call ERROR (No_potential_attributes); 927 if ^temp_flags.attributes_given then 928 call ERROR (No_attributes); 929 end; 930 if ^temp_flags.aim_range_given then do; 931 call ERROR (No_aim_range); 932 arg_struc.aim_range = SYSTEM_LOW; 933 end; 934 if ^temp_flags.charge_type_given then call ERROR (No_charge_type); 935 936 end validate_type; 937 end close; 938 939 dcl (Premature_EOF initial (1), 940 Unrecognized initial (2), 941 Bad_attribute_syntax initial (3), 942 Bad_identifier initial (4), 943 Bad_syntax initial (5), 944 No_name initial (6), 945 No_potential_attributes initial (7), 946 No_mates initial (8), 947 No_attributes initial (9), 948 No_aim_range initial (10), 949 Canonicalizer_nonexistent initial (11), 950 No_charge_type initial (12), 951 Undefined_attr initial (13), 952 Multiply_dcl_attr initial (14), 953 Negative_attr initial (15), 954 Attr_too_long initial (16), 955 Bad_access_class initial (17), 956 No_Domain_stmt initial (18), 957 Bad_first_stmt initial (19), 958 Starred_attribute initial (20), 959 Mandatory_attr_missing initial (21), 960 Mandatory_resource_missing initial (22), 961 Unrequited_mating initial (23), 962 Mates_same_type initial (24), 963 No_such_mate initial (25), 964 Syn_undefined initial (26), 965 Syn_chain initial (27), 966 Device_syn_volume initial (28)) fixed bin static options (constant); 967 968 dcl 1 error_control_table (28) aligned internal static options (constant), 969 2 severity fixed bin (17) unal init (4, (5) 3, (3) 1, 3, 1, (2) 3, 1, 3, (3) 3, 4, 1, (8) 3), 970 2 Soutput_stmt bit (1) unaligned initial 971 ("0"b, (5) (1)"1"b, (4) (1)"0"b, "1"b, "0"b, (5) (1)"1"b, "0"b, (2) (1)"1"b, (8) (1)"0"b), 972 2 message char (100) var init 973 ("Premature end of RTMF encountered.", /* 1 */ 974 "Unrecognized keyword or invalid punctuation in recognized statement.", /* 2 */ 975 "Improper syntax in attribute string.", /* 3 */ 976 "Improper identifier ""^a"" in statement.", /* 4 */ 977 "Improper syntax in statement.", /* 5 */ 978 "No resource name supplied.", /* 6 */ 979 "No potential attributes supplied for ^a.", /* 7 */ 980 "No Implies or Accepts statement for ^a.", /* 8 */ 981 "No attributes statement supplied for ^a; assuming null list.", /* 9 */ 982 "No access range supplied for ^a-- assuming ""system_low : system_low"".", /* 10 */ 983 "Specified canonicalization procedure does not seem to exist.", /* 11 */ 984 "No charge type supplied for ^a.", /* 12 */ 985 "Default attribute ""^a"" not defined in ""Attributes"" statement.", /* 13 */ 986 "Attribute ""^a"" has been multiply declared.", /* 14 */ 987 "Negated attributes such as ""^a"" serve no useful purpose.", /* 15 */ 988 "Attribute name ""^a"" is too long.", /* 16 */ 989 "Unrecognized access class ""^a"".", /* 17 */ 990 "No Attribute_domain statement for ^a.", /* 18 */ 991 "First statement is not Volume or Device statement.", /* 19 */ 992 "Asterisk is only meaningful in volume potential attribute list.", /* 20 */ 993 "Mandatory attribute ^a not defined.", /* 21 */ 994 "Mandatory resource ^a not defined.", /* 22 */ 995 "Resources ^a mate in one direction but not in the other.", /* 23 */ 996 "Mating resources ^a are both devices or both volumes.", /* 24 */ 997 998 "Undefined mate ^a.", /* 25 */ 999 "Synonym reference for ^a is undefined.", /* 26 */ 1000 "Synonym ^a refers to another synonym.", /* 27 */ 1001 "Device and volume cannot be synonymous-- ^a"), /* 28 */ 1002 2 brief_message char (30) var init 1003 ("Premature EOF.", /* 1 */ 1004 "Unrecognizable.", /* 2 */ 1005 "Syntax.", /* 3 */ 1006 "", /* 4 */ 1007 "Syntax.", /* 5 */ 1008 "No resource name.", /* 6 */ 1009 (12) (1)"^a.", /* 7-18 */ 1010 "No Device/Volume stmt.", /* 19 */ 1011 "Meaningless asterisk.", /* 20 */ 1012 (8) (1)"^a."); /* 21-28 */ 1013 1014 /* ======================================================== */ 1015 1016 1017 dcl TRACING bit(1) aligned int static init("0"b); 1018 1019 7 1 /* START OF: rdc_start_.incl.pl1 * * * * * * */ 7 2 7 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 7 4 /* */ 7 5 /* N__a_m_e: rdc_start_.incl.pl1 */ 7 6 /* */ 7 7 /* This include segment is used by compilers generated by the */ 7 8 /* reduction_compiler. Such compilers include a SEMANTIC_ANALYSIS */ 7 9 /* subroutine generated by the reduction_compiler. This subroutine */ 7 10 /* compares a chain of input tokens with token requirements */ 7 11 /* specified in reductions. This include segment declares the */ 7 12 /* structure of the input tokens (which are generated by lex_string_),*/ 7 13 /* defines the beginning of the SEMANTIC_ANALYSIS procedure, and */ 7 14 /* declares Pthis_token, a global pointer variable which points to */ 7 15 /* the "current" token being referenced by SEMANTIC_ANALYSIS. */ 7 16 /* */ 7 17 /* S__t_a_t_u_s */ 7 18 /* */ 7 19 /* 0) Created: April, 1974 by G. C. Dixon */ 7 20 /* */ 7 21 /* * * * * * * * * * * * * * * * * * * * * * * */ 7 22 7 23 dcl Pthis_token ptr; /* ptr to the "current" token being acted upon. */ 7 24 8 1 /* START OF: lex_descriptors_.incl.pl1 * * * * * * */ 8 2 8 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 8 4 /* */ 8 5 /* Name: lex_descriptors_.incl.pl1 */ 8 6 /* */ 8 7 /* This include segment defines the structure of the token */ 8 8 /* descriptor, statement descriptor, and comment descriptor created */ 8 9 /* by the lex_string_ program. */ 8 10 /* */ 8 11 /* Status: */ 8 12 /* */ 8 13 /* 0) Created: Dec, 1973 by G. C. Dixon */ 8 14 /* */ 8 15 /* * * * * * * * * * * * * * * * * * * * * * * */ 8 16 8 17 8 18 8 19 8 20 dcl 8 21 1 comment aligned based (Pcomment), 8 22 /* descriptor for a comment. */ 8 23 2 group1 unaligned, 8 24 3 version fixed bin(17), /* comment descriptor version. */ 8 25 3 size fixed bin(17), /* comment descriptor size (in words). */ 8 26 2 Pnext ptr unal, /* ptr to next comment descriptor. */ 8 27 2 Plast ptr unal, /* ptr to last comment descriptor. */ 8 28 2 Pvalue ptr unal, /* ptr to comment. */ 8 29 2 Lvalue fixed bin(18), /* length of comment. */ 8 30 2 group2 unaligned, 8 31 3 line_no fixed bin(17), /* line no of line containing comment. */ 8 32 3 S, /* switches: */ 8 33 4 before_stmt bit(1), /* comment is before 1st token of stmt. */ 8 34 4 contiguous bit(1), /* no tokens between this and last comment. */ 8 35 4 pad bit(16), 8 36 comment_value char(comment.Lvalue) based (comment.Pvalue), 8 37 /* body of comment. */ 8 38 Pcomment ptr; /* ptr to comment descriptor. */ 8 39 8 40 dcl 8 41 1 stmt aligned based (Pstmt), 8 42 /* descriptor for a statement. */ 8 43 2 group1 unaligned, 8 44 3 version fixed bin(17), /* statement descriptor version. */ 8 45 3 size fixed bin(17), /* statement descriptor size (in words). */ 8 46 2 Pnext ptr unal, /* ptr to next statement descriptor. */ 8 47 2 Plast ptr unal, /* ptr to last statement descriptor. */ 8 48 2 Pvalue ptr unal, /* ptr to statement. */ 8 49 2 Lvalue fixed bin(18), /* length of statement. */ 8 50 2 Pfirst_token ptr unal, /* ptr to 1st token of statement. */ 8 51 2 Plast_token ptr unal, /* ptr to last token of statement. */ 8 52 2 Pcomments ptr unal, /* ptr to comments in statement. */ 8 53 2 Puser ptr unal, /* user-defined ptr. */ 8 54 2 group2 unaligned, 8 55 3 Ntokens fixed bin(17), /* number of tokens in statement. */ 8 56 3 line_no fixed bin(17), /* line no of line on which statement begins. */ 8 57 3 Istmt_in_line fixed bin(17), /* number of stmts in line containing this stmt. */ 8 58 /* (the number includes this stmt.) */ 8 59 3 semant_type fixed bin(17), /* semantic type of the statement. */ 8 60 3 S, /* switches: */ 8 61 4 error_in_stmt bit(1), /* stmt contains a syntactic error. */ 8 62 4 output_in_err_msg bit(1), /* stmt has been output in previous error message.*/ 8 63 4 pad bit(34), 8 64 stmt_value char(stmt.Lvalue) based (stmt.Pvalue), 8 65 /* text of the statement. */ 8 66 Pstmt ptr; /* ptr to a stmt descriptor. */ 8 67 8 68 dcl 8 69 1 token aligned based (Ptoken), 8 70 /* descriptor for a token. */ 8 71 2 group1 unaligned, 8 72 3 version fixed bin(17), /* token descriptor version. */ 8 73 3 size fixed bin(17), /* token descriptor size (in words). */ 8 74 2 Pnext ptr unal, /* ptr to next token descriptor. */ 8 75 2 Plast ptr unal, /* ptr to last token descriptor. */ 8 76 2 Pvalue ptr unal, /* ptr to token. */ 8 77 2 Lvalue fixed bin(18), /* length of token. */ 8 78 2 Pstmt ptr unal, /* ptr to descriptor of stmt containing token. */ 8 79 2 Psemant ptr unal, /* ptr to descriptor(s) of token's semantic value.*/ 8 80 2 group2 unaligned, 8 81 3 Itoken_in_stmt fixed bin(17), /* position of token within its statement. */ 8 82 3 line_no fixed bin(17), /* line number of the line containing the token. */ 8 83 3 Nvalue fixed bin(35), /* numeric value of decimal-integer tokens. */ 8 84 3 S, /* switches: */ 8 85 4 end_of_stmt bit(1), /* token is an end-of-stmt token. */ 8 86 4 quoted_string bit(1), /* token is a quoted string. */ 8 87 4 quotes_in_string bit(1), /* on if quote-close delimiters appear in quoted */ 8 88 /* string (as doubled quotes on input.) */ 8 89 4 quotes_doubled bit(1), /* on if quotes in the string are doubled after */ 8 90 /* string has been lexed into a token. */ 8 91 4 pad2 bit(32), 8 92 token_value char(token.Lvalue) based (token.Pvalue), 8 93 /* value of the token. */ 8 94 Ptoken ptr; /* ptr to a token descriptor. */ 8 95 8 96 /* END OF: lex_descriptors_.incl.pl1 * * * * * * */ 7 25 7 26 7 27 /* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * */ 7 28 7 29 7 30 SEMANTIC_ANALYSIS: procedure; /* procedure which analyzes the syntax and */ 7 31 /* semantics of the tokens in the input list. */ 7 32 7 33 dcl /* automatic variables */ 7 34 LTOKEN_REQD_VALUE fixed bin(18), /* length of a token requirement. */ 7 35 NRED fixed bin, /* number of the reduction tokens are being */ 7 36 /* compared to. */ 7 37 PRED ptr, /* ptr to the reduction tokens are being */ 7 38 /* compared to. */ 7 39 PTOKEN_REQD ptr, /* ptr to token requirement descriptor associated */ 7 40 /* with reduction tokens are being compared to. */ 7 41 PTOKEN_REQD_VALUE ptr, /* ptr to a token requirement. */ 7 42 STOKEN_FCN bit(1) aligned, /* return value from a relative syntax function. */ 7 43 CODE fixed bin(35), /* an error code. */ 7 44 I fixed bin, /* a do-group index. */ 7 45 NUMBER fixed bin(35); /* fixed binary representation of a decimal */ 7 46 /* number character string. */ 7 47 7 48 dcl /* based variables */ 7 49 1 RED aligned based (PRED), 7 50 /* descriptor for reduction tokens are being */ 7 51 /* compared to. */ 7 52 2 TOKEN_REQD unaligned, 7 53 3 IFIRST fixed bin(17) unal, /* index of first token requirement. */ 7 54 3 ILAST fixed bin(17) unal, /* index of last token requirement associated */ 7 55 /* with this reduction. */ 7 56 1 TOKEN_REQD aligned based (PTOKEN_REQD), 7 57 /* a token requirement descriptor. */ 7 58 2 FORM fixed bin(17) unal, /* form of the token requirement: */ 7 59 /* -1 = relative token requirement function; */ 7 60 /* TYPE = index of the particular token */ 7 61 /* function in the token_fcn array. */ 7 62 /* 0 = built-in token requirement function; */ 7 63 /* TYPE = as defined below. */ 7 64 /* >0 = absolute token requirement: */ 7 65 /* FORM = index(TOKEN_STRINGS,TOKEN_REQD); */ 7 66 /* TYPE = length(TOKEN_REQD); */ 7 67 2 TYPE fixed bin(17) unal, /* TYPE of built-in token requirement function: */ 7 68 /* 1 = compile test to see if input token */ 7 69 /* chain is exhausted (). */ 7 70 /* 2 = compile test for any token value */ 7 71 /* (). */ 7 72 /* 3 = compile test for a PL/I identifier */ 7 73 /* () of 32 or fewer characters. */ 7 74 /* 4 = compile test for token which is a */ 7 75 /* . */ 7 76 /* 5 = compile test for token which is a single */ 7 77 /* backspace character (). */ 7 78 /* 6 = compile test for a token which is a */ 7 79 /* . */ 7 80 7 81 1 TOKEN_REQD_STRING aligned based (PTOKEN_REQD), 7 82 /* overlay for an absolute token requirement */ 7 83 /* descriptor. */ 7 84 2 I fixed bin(17) unal, /* index into list of token strings of the */ 7 85 /* absolute token string assoc w/ descriptor. */ 7 86 2 L fixed bin(17) unal, /* length of the absolute token string. */ 7 87 TOKEN_REQD_VALUE char(LTOKEN_REQD_VALUE) based (PTOKEN_REQD_VALUE); 7 88 /* absolute token string which token is reqd */ 7 89 /* to match in order for tokens which are */ 7 90 /* "current" on the list to match the reduction. */ 7 91 7 92 dcl /* builtin functions */ 7 93 (addr, max, null, search, substr, verify) 7 94 builtin; 7 95 7 96 dcl /* entries */ 7 97 cv_dec_check_ entry (char(*), fixed bin(35)) returns (fixed bin(35)); 7 98 7 99 dcl /* static variables */ 7 100 BACKSPACE char(1) aligned int static init (""); 7 101 7 102 /* END OF: rdc_start_.incl.pl1 * * * * * * */ 1020 1021 1022 dcl DIRECTION fixed bin init(+1); /* direction in which tokens compared. */ 1023 dcl STACK (10) fixed bin, /* reduction label stack. */ 1024 STACK_DEPTH fixed bin init (0); /* index into STACK. */ 1025 1026 1027 dcl 1 REDUCTION (54) unaligned based (addr (REDUCTIONS)), 1028 /* object reductions. */ 1029 2 TOKEN_REQD, 1030 3 IFIRST fixed bin(17), /* index of first required token. */ 1031 3 ILAST fixed bin(17), /* index of last required token. */ 1032 1033 REDUCTIONS (108) fixed bin(17) unaligned internal static options(constant) initial ( 1034 1, 4, /* 1/ Device : ; */ 1035 5, 8, /* 2/ Volume : ; */ 1036 9, 9, /* 3/ */ 1037 10, 10, /* 4/ */ 1038 11, 12, /* 5/ end ; */ 1039 1, 4, /* 6/ Device : ; */ 1040 5, 8, /* 7/ Volume : ; */ 1041 13, 15, /* 8/ Attribute_domain : ; */ 1042 13, 14, /* 9/ Attribute_domain : */ 1043 16, 19, /* 10/ Limit : open ; */ 1044 20, 23, /* 11/ Limit : ; */ 1045 24, 29, /* 12/ Time : , ; */ 1046 30, 33, /* 13/ Time : ; */ 1047 34, 37, /* 14/ Time : open ; */ 1048 38, 41, /* 15/ Advance_notice : none ; */ 1049 42, 45, /* 16/ Advance_notice : ; */ 1050 46, 49, /* 17/ Manual_clear : ; */ 1051 50, 53, /* 18/ Implies : ; */ 1052 54, 56, /* 19/ Accepts : ; */ 1053 54, 55, /* 20/ Accepts : */ 1054 57, 60, /* 21/ Like : ; */ 1055 61, 63, /* 22/ Canonicalizer : ; */ 1056 64, 67, /* 23/ Canonicalizer : ; */ 1057 68, 70, /* 24/ Canonicalizer : */ 1058 71, 74, /* 25/ charge_type : ; */ 1059 75, 77, /* 26/ potential_attributes : ; */ 1060 75, 76, /* 27/ potential_attributes : */ 1061 78, 80, /* 28/ attributes : ; */ 1062 78, 79, /* 29/ attributes : */ 1063 81, 84, /* 30/ access_range : ; */ 1064 85, 87, /* 31/ access_range : */ 1065 88, 91, /* 32/ type : ; */ 1066 9, 9, /* 33/ */ 1067 10, 10, /* 34/ */ 1068 71, 74, /* 35/ charge_type : ; */ 1069 75, 77, /* 36/ potential_attributes : ; */ 1070 75, 76, /* 37/ potential_attributes : */ 1071 78, 80, /* 38/ attributes : ; */ 1072 78, 79, /* 39/ attributes : */ 1073 81, 84, /* 40/ access_range : ; */ 1074 85, 87, /* 41/ access_range : */ 1075 9, 9, /* 42/ */ 1076 10, 10, /* 43/ */ 1077 92, 93, /* 44/ , */ 1078 94, 95, /* 45/ ; */ 1079 9, 9, /* 46/ */ 1080 10, 10, /* 47/ */ 1081 3, 3, /* 48/ */ 1082 9, 9, /* 49/ */ 1083 10, 10, /* 50/ */ 1084 27, 27, /* 51/ , */ 1085 4, 4, /* 52/ ; */ 1086 9, 9, /* 53/ */ 1087 10, 10); /* 54/ */ 1088 1089 dcl 1 TOKEN_REQUIREMENT (95) unaligned based (addr (TOKEN_REQUIREMENTS)), 1090 /* object token requirements. */ 1091 2 FORM fixed bin(17), /* form of the token requirement: */ 1092 /* -1 = relative token requirement function; */ 1093 /* TYPE = index of the particular token */ 1094 /* function in the token_fcn array. */ 1095 /* 0 = built-in token requirement function; */ 1096 /* TYPE = as defined below. */ 1097 /* >0 = absolute token requirement: */ 1098 /* FORM = index(TOKEN_STRINGS,TOKEN_REQD); */ 1099 /* TYPE = length(TOKEN_REQD); */ 1100 2 TYPE fixed bin(17) unal, /* type of the built-in token requirement */ 1101 /* function: */ 1102 /* 1 = compile test to see if input token */ 1103 /* chain is exhausted (). */ 1104 /* 2 = compile test for any token value */ 1105 /* (). */ 1106 /* 3 = compile test for a PL/I identifier */ 1107 /* () of 32 or fewer characters. */ 1108 /* 4 = compile test for token which is a */ 1109 /* . */ 1110 /* 5 = compile test for token which is a single */ 1111 /* backspace character (). */ 1112 /* 6 = compile test for a token which is a */ 1113 /* . */ 1114 1115 TOKEN_REQUIREMENTS (190) fixed bin(17) unaligned internal static options(constant) initial ( 1116 1, 6, 7, 1, 0, 3, 8, 1, 9, 6, 7, 1, 0, 3, 1117 8, 1, 0, 2, 0, 1, 15, 3, 8, 1, 18, 16, 7, 1, 1118 8, 1, 34, 5, 7, 1, 39, 4, 8, 1, 34, 5, 7, 1, 1119 0, 4, 8, 1, 43, 4, 7, 1, 0, 4, 47, 1, 0, 4, 1120 8, 1, 43, 4, 7, 1, 0, 4, 8, 1, 43, 4, 7, 1, 1121 39, 4, 8, 1, 48, 14, 7, 1, 62, 4, 8, 1, 48, 14, 1122 7, 1, 0, 4, 8, 1, 66, 12, 7, 1, -1, 1, 8, 1, 1123 78, 7, 7, 1, 0, 3, 8, 1, 85, 7, 7, 1, 8, 1, 1124 92, 4, 7, 1, 0, 3, 8, 1, 96, 13, 7, 1, 8, 1, 1125 96, 13, 7, 1, -1, 2, 8, 1, 96, 13, 7, 1, 0, 2, 1126 109, 11, 7, 1, 0, 3, 8, 1, 120, 20, 7, 1, 8, 1, 1127 130, 10, 7, 1, 8, 1, 140, 12, 7, 1, -1, 3, 8, 1, 1128 140, 12, 7, 1, 0, 2, 116, 4, 7, 1, 0, 3, 8, 1, 1129 0, 2, 47, 1, 0, 2, 8, 1); 1130 1131 1132 dcl TOKEN_STRINGS char(151) aligned based (addr (TOKEN_STRING_ARRAYS)), 1133 /* object token values. */ 1134 TOKEN_STRING_ARRAYS (2) char(100) aligned internal static options(constant) initial ( 1135 "Device:;VolumeendAttribute_domainLimitopenTime,Advance_noticenoneManual_clearImpliesAcceptsLikeCanon", 1136 "icalizercharge_typepotential_attributesaccess_range"); 1137 1138 /* START OF: rdc_end_.incl.pl1 * * * * * * * * * * * * * * * * */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(86-02-14,GWMay), approve(), audit(), install(): 9 6* old history comments: 9 7* 0) Created: April, 1974 by G. C. Dixon 9 8* 1) Modified: Feb, 1975 by G. C. Dixon 9 9* a) support for Version 2.0 of reduction_compiler. 9 10* 2) Modified: Feb, 1981 by G. C. Dixon 9 11* a) support for Version 2.2 of reduction_compiler 9 12* 3) Modified: Aug, 1983 by G. C. Dixon - support for Version 2.3 of 9 13* reductions command. 9 14* 2) change(86-03-04,GDixon), approve(86-03-04,MCR7362), audit(86-03-17,GWMay), 9 15* install(86-03-17,MR12.0-1032): 9 16* Changed how the PUSH DOWN LANGUAGE (SPDL) definition of is 9 17* implemented to avoid references through a null pointer. The two 9 18* accepted uses are: 9 19* 9 20* / / ... / ... \ 9 21* A 9 22* | 9 23* Pthis_token (points to top of push down stack) 9 24* 9 25* which checks to see if the push down stack is totally exhausted (ie, 9 26* Ptoken = null); and: 9 27* 9 28* / SPEC1 ... SPECN / ... / ... \ 9 29* A 9 30* | 9 31* Pthis_token (points to top of push down stack) 9 32* 9 33* which checks to see whether SPECN is topmost on the push down stack 9 34* AND is the final token in the input list. 9 35* END HISTORY COMMENTS */ 9 36 9 37 9 38 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 39 /* */ 9 40 /* NAME: rdc_end_.incl.pl1 */ 9 41 /* */ 9 42 /* This include segment is used by compilers generated by the reduction_compiler. */ 9 43 /* Such compilers include a SEMANTIC_ANALYSIS subroutine generated by the */ 9 44 /* reduction_compiler. This subroutine compares a chain of input tokens with token */ 9 45 /* requirements specified in reductions. The code in this include segment performs the */ 9 46 /* actual comparisons. This code is the middle part of the SEMANTIC_ANALYSIS procedure. */ 9 47 /* */ 9 48 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 49 9 50 TRACING = TRACING; /* Kludge to prevent pl1 from making TRACING */ 9 51 /* options(constant) because it is never set. */ 9 52 NRED = 1; 9 53 go to RD_TEST_REDUCTION; 9 54 9 55 RD_NEXT_REDUCTION: 9 56 NRED = NRED + 1; 9 57 9 58 RD_TEST_REDUCTION: 9 59 PRED = addr(REDUCTION(NRED)); 9 60 Ptoken = Pthis_token; 9 61 9 62 do I = RED.TOKEN_REQD.IFIRST to RED.TOKEN_REQD.ILAST by DIRECTION; 9 63 PTOKEN_REQD = addr(TOKEN_REQUIREMENT(I)); 9 64 if Ptoken = null then do; 9 65 if TOKEN_REQD.FORM = 0 then /* No more tokens. Only matches spec. */ 9 66 if TOKEN_REQD.TYPE = 1 then 9 67 go to RD_TEST_TOKEN(1); 9 68 go to RD_NEXT_REDUCTION; 9 69 end; 9 70 if TOKEN_REQD.FORM = 0 then do; /* built-in syntax function. */ 9 71 go to RD_TEST_TOKEN(TOKEN_REQD.TYPE); 9 72 9 73 RD_TEST_TOKEN(1): if SPDL then /* */ 9 74 /* In push-down-language, there are 2 */ 9 75 /* interpretations of . */ 9 76 if RED.TOKEN_REQD.IFIRST = RED.TOKEN_REQD.ILAST & 9 77 Ptoken = null then /* When is only spec, the spec asks */ 9 78 go to RD_MATCH_NO_TOKEN; /* "Is push down stack empty (all input gone)?" */ 9 79 else if RED.TOKEN_REQD.IFIRST^= RED.TOKEN_REQD.ILAST & 9 80 RED.TOKEN_REQD.IFIRST = I & 9 81 token.Pnext = null then /* For SPEC1 ... SPECN , the spec asks */ 9 82 go to RD_MATCH_NO_TOKEN; /* "Are the topmost tokens on stack SPEC1 - SPECN,*/ 9 83 /* and is SPECN the final input token?" */ 9 84 else go to RD_NEXT_REDUCTION; /* Those are the only two defs allowed in push */ 9 85 /* down language mode for . */ 9 86 else if Ptoken = null then 9 87 go to RD_MATCH_NO_TOKEN; 9 88 go to RD_NEXT_REDUCTION; 9 89 9 90 RD_TEST_TOKEN(2): go to RD_MATCH; /* */ 9 91 9 92 RD_TEST_TOKEN(3): if token.Lvalue > 0 & /* */ 9 93 token.Lvalue <= 32 & ^token.S.quoted_string then 9 94 if search(substr(token_value,1,1),"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz") 9 95 > 0 then 9 96 if verify(token_value,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_$") 9 97 = 0 then 9 98 go to RD_MATCH; 9 99 go to RD_NEXT_REDUCTION; 9 100 9 101 RD_TEST_TOKEN(4): /* */ 9 102 if token.Nvalue ^= 0 then /* token already determined to be a number. */ 9 103 go to RD_MATCH; 9 104 if token.S.quoted_string then 9 105 go to RD_NEXT_REDUCTION; 9 106 NUMBER = cv_dec_check_ (token_value, CODE); 9 107 if CODE = 0 then do; 9 108 token.Nvalue = NUMBER; 9 109 go to RD_MATCH; 9 110 end; 9 111 go to RD_NEXT_REDUCTION; 9 112 9 113 RD_TEST_TOKEN(5): if token.Lvalue = 1 then /* */ 9 114 if token_value = BACKSPACE & ^token.S.quoted_string then 9 115 go to RD_MATCH; 9 116 go to RD_NEXT_REDUCTION; 9 117 9 118 RD_TEST_TOKEN(6): if token.S.quoted_string then /* */ 9 119 go to RD_MATCH; 9 120 go to RD_NEXT_REDUCTION; 9 121 end; 9 122 9 123 else if TOKEN_REQD.FORM > 0 then do; /* absolute syntax specification. */ 9 124 if token.S.quoted_string then 9 125 go to RD_NEXT_REDUCTION; 9 126 PTOKEN_REQD_VALUE = addr(substr(TOKEN_STRINGS,TOKEN_REQD_STRING.I)); 9 127 LTOKEN_REQD_VALUE = TOKEN_REQD_STRING.L; 9 128 if token_value = TOKEN_REQD_VALUE then 9 129 go to RD_MATCH; 9 130 go to RD_NEXT_REDUCTION; 9 131 end; 9 132 9 133 /* END OF: rdc_end_.incl.pl1 * * * * * * * * * * * * * * * * */ 1138 1139 1140 else do; /* relative syntax function. */ 1141 go to RD_TOKEN_FCN(TOKEN_REQD.TYPE); 1142 1143 RD_TOKEN_FCN(1): STOKEN_FCN = yes_no(); 1144 go to RD_TEST_RESULT; 1145 RD_TOKEN_FCN(2): STOKEN_FCN = canon_virtual_entry(); 1146 go to RD_TEST_RESULT; 1147 RD_TOKEN_FCN(3): STOKEN_FCN = authorization_range(); 1148 go to RD_TEST_RESULT; 1149 1150 RD_TEST_RESULT: if STOKEN_FCN then go to RD_MATCH; 1151 else go to RD_NEXT_REDUCTION; 1152 end; 1153 1154 RD_MATCH: Ptoken = token.Pnext; 1155 RD_MATCH_NO_TOKEN: 1156 end; 1157 Ptoken = Pthis_token; 1158 go to RD_ACTION(NRED); 1159 1160 /* START OF: rdc_stack_fcns_.incl.pl1 * * * * * * */ 10 2 10 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 10 4 /* */ 10 5 /* N__a_m_e: rdc_stack_fcns_.incl.pl1 */ 10 6 /* */ 10 7 /* This include segment is used by compilers generated by the */ 10 8 /* reduction_compiler. It includes code for manipulating the */ 10 9 /* reduction label stack. */ 10 10 /* */ 10 11 /* S__t_a_t_u_s */ 10 12 /* */ 10 13 /* 0) Created: April, 1974 by G. C. Dixon */ 10 14 /* */ 10 15 /* * * * * * * * * * * * * * * * * * * * * * * */ 10 16 10 17 RD_STACK: if STACK_DEPTH > 0 then do; 10 18 NRED = STACK (STACK_DEPTH); 10 19 go to RD_TEST_REDUCTION; 10 20 end; 10 21 else 10 22 go to RD_NEXT_REDUCTION; 10 23 10 24 RD_STACK_POP: 10 25 if STACK_DEPTH > 0 then do; 10 26 NRED = STACK (STACK_DEPTH); 10 27 STACK_DEPTH = max (STACK_DEPTH-1, 0); 10 28 go to RD_TEST_REDUCTION; 10 29 end; 10 30 else 10 31 go to RD_NEXT_REDUCTION; 10 32 10 33 /* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * */ 10 34 10 35 10 36 PUSH: procedure (N); /* invoked to push reduction number 'N' onto */ 10 37 /* the reduction stack. */ 10 38 dcl N fixed bin; 10 39 10 40 dcl (addr, dimension, length, null) 10 41 builtin; 10 42 10 43 dcl cu_$cl entry, 10 44 iox_$put_chars entry (ptr, ptr, fixed bin, fixed bin(35)), 10 45 iox_$error_output ptr ext static, 10 46 lex_error_ entry options(variable); 10 47 10 48 dcl brief_error char(4) varying initial ("") int static, 10 49 long_error char(234) varying int static init( 10 50 "An internal stack (the reduction stack) has overflowed. 10 51 The translation has failed. Contact translator maintenance 10 52 personnel for assistance. 10 53 Processing reduction: ^d 10 54 Reduction being stacked: ^d 10 55 Maximum stack depth: ^d"), 10 56 non_restart_error char(33) int static init ("Translation cannot be restarted. 10 57 "); 10 58 10 59 if STACK_DEPTH >= dimension (STACK, 1) then do; 10 60 call lex_error_ (0, "0"b, 4, 0, null, null, "11"b, long_error, brief_error, NRED, N, 10 61 dimension(STACK,1)); 10 62 get_to_cl: call cu_$cl(); 10 63 call iox_$put_chars (iox_$error_output, addr(non_restart_error), length(non_restart_error), 0); 10 64 go to get_to_cl; 10 65 end; /* stack overflow is a non-recoverable error. */ 10 66 else 10 67 STACK_DEPTH = STACK_DEPTH + 1; 10 68 STACK (STACK_DEPTH) = N; 10 69 10 70 end PUSH; 10 71 10 72 /* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * */ 10 73 10 74 /* END OF: rdc_stack_fcns_.incl.pl1 * * * * * * */ 1160 1161 1162 1163 RD_ACTION(1): /* / */ 1164 call LEX ( 2 ); 1165 call open(); 1166 auto_rtde.name = token_value; 1167 call LEX ( 2 ); 1168 NRED = 5; 1169 go to RD_TEST_REDUCTION; /* / stmt \ */ 1170 1171 RD_ACTION(2): /* / */ 1172 call LEX ( 2 ); 1173 call open(); 1174 auto_rtde.name = token_value; 1175 auto_rtde.is_volume = "1"b; 1176 call LEX ( 2 ); 1177 NRED = 5; 1178 go to RD_TEST_REDUCTION; /* / stmt \ */ 1179 1180 RD_ACTION(3): /* / */ 1181 call ERROR ( 19 ); 1182 return; /* / RETURN \ */ 1183 1184 RD_ACTION(4): /* / */ 1185 call ERROR ( 19 ); 1186 return; /* / RETURN \ */ 1187 1188 RD_ACTION(5): /* / */ 1189 call close(); 1190 call LEX ( 2 ); 1191 return; /* / RETURN \ */ 1192 1193 RD_ACTION(6): /* / */ 1194 call LEX ( 2 ); 1195 call close(); 1196 call open(); 1197 auto_rtde.name = token_value; 1198 call LEX ( 2 ); 1199 NRED = 5; 1200 go to RD_TEST_REDUCTION; /* / stmt \ */ 1201 1202 RD_ACTION(7): /* / */ 1203 call LEX ( 2 ); 1204 call close(); 1205 call open(); 1206 auto_rtde.name = token_value; 1207 auto_rtde.is_volume = "1"b; 1208 call LEX ( 2 ); 1209 NRED = 5; 1210 go to RD_TEST_REDUCTION; /* / stmt \ */ 1211 1212 RD_ACTION(8): /* / */ 1213 call LEX ( 3 ); 1214 auto_rtde.n_defined_attributes = 0; 1215 NRED = 5; 1216 go to RD_TEST_REDUCTION; /* / stmt \ */ 1217 1218 RD_ACTION(9): /* / */ 1219 call LEX ( 2 ); 1220 attr_type = Defined; 1221 call PUSH(5); /* PUSH(stmt) */ 1222 NRED = 44; 1223 go to RD_TEST_REDUCTION; /* / atts \ */ 1224 1225 RD_ACTION(10): /* / */ 1226 call LEX ( 4 ); 1227 NRED = 5; 1228 go to RD_TEST_REDUCTION; /* / stmt \ */ 1229 1230 RD_ACTION(11): /* / */ 1231 call LEX ( 2 ); 1232 auto_rtde.process_limit = token.Nvalue; 1233 call LEX ( 2 ); 1234 NRED = 5; 1235 go to RD_TEST_REDUCTION; /* / stmt \ */ 1236 1237 RD_ACTION(12): /* / */ 1238 call LEX ( 2 ); 1239 auto_rtde.default_time = token.Nvalue; 1240 call LEX ( 2 ); 1241 auto_rtde.max_time = token.Nvalue; 1242 call LEX ( 2 ); 1243 NRED = 5; 1244 go to RD_TEST_REDUCTION; /* / stmt \ */ 1245 1246 RD_ACTION(13): /* / */ 1247 call LEX ( 2 ); 1248 auto_rtde.default_time = token.Nvalue; 1249 call LEX ( 2 ); 1250 NRED = 5; 1251 go to RD_TEST_REDUCTION; /* / stmt \ */ 1252 1253 RD_ACTION(14): /* / */ 1254 call LEX ( 4 ); 1255 auto_rtde.default_time = FOREVER; 1256 NRED = 5; 1257 go to RD_TEST_REDUCTION; /* / stmt \ */ 1258 1259 RD_ACTION(15): /* / */ 1260 call LEX ( 4 ); 1261 auto_rtde.advance_notice_time = -1; 1262 NRED = 5; 1263 go to RD_TEST_REDUCTION; /* / stmt \ */ 1264 1265 RD_ACTION(16): /* / */ 1266 call LEX ( 2 ); 1267 auto_rtde.advance_notice_time = token.Nvalue; 1268 call LEX ( 2 ); 1269 NRED = 5; 1270 go to RD_TEST_REDUCTION; /* / stmt \ */ 1271 1272 RD_ACTION(17): /* / */ 1273 call LEX ( 2 ); 1274 auto_rtde.manual_clear = ( token_value = "yes" ); 1275 call LEX ( 2 ); 1276 NRED = 5; 1277 go to RD_TEST_REDUCTION; /* / stmt \ */ 1278 1279 RD_ACTION(18): /* / */ 1280 call LEX ( 2 ); 1281 auto_rtde.n_mates = 1; 1282 auto_rtde.mates ( 1 ) = token_value; 1283 call LEX ( 2 ); 1284 NRED = 5; 1285 go to RD_TEST_REDUCTION; /* / stmt \ */ 1286 1287 RD_ACTION(19): /* / */ 1288 call LEX ( 3 ); 1289 auto_rtde.n_mates = 0; 1290 NRED = 5; 1291 go to RD_TEST_REDUCTION; /* / stmt \ */ 1292 1293 RD_ACTION(20): /* / */ 1294 call LEX ( 2 ); 1295 matei = 0; 1296 NRED = 48; 1297 go to RD_TEST_REDUCTION; /* / mates \ */ 1298 1299 RD_ACTION(21): /* / */ 1300 call LEX ( 2 ); 1301 auto_rtde.is_synonym = "1"b; 1302 auto_rtde.n_mates = 0; 1303 auto_rtde.syn_to = token_value; 1304 ; 1305 call LEX ( 2 ); 1306 NRED = 5; 1307 go to RD_TEST_REDUCTION; /* / stmt \ */ 1308 1309 RD_ACTION(22): /* / */ 1310 call LEX ( 3 ); 1311 NRED = 5; 1312 go to RD_TEST_REDUCTION; /* / stmt \ */ 1313 1314 RD_ACTION(23): /* / */ 1315 call LEX ( 2 ); 1316 auto_rtde.precanon_proc = token_value; 1317 ; 1318 call LEX ( 2 ); 1319 NRED = 5; 1320 go to RD_TEST_REDUCTION; /* / stmt \ */ 1321 1322 RD_ACTION(24): /* / */ 1323 call LEX ( 2 ); 1324 call ERROR ( 4 ); 1325 call NEXT_STMT(); 1326 NRED = 5; 1327 go to RD_TEST_REDUCTION; /* / stmt \ */ 1328 1329 RD_ACTION(25): /* / */ 1330 call LEX ( 2 ); 1331 auto_rtde.registration_defaults.charge_type = find_charge_type ( ); 1332 auto_rtde.registration_defaults.charge_type_given = "1"b; 1333 call LEX ( 2 ); 1334 NRED = 5; 1335 go to RD_TEST_REDUCTION; /* / stmt \ */ 1336 1337 RD_ACTION(26): /* / */ 1338 call LEX ( 3 ); 1339 auto_rtde.registration_defaults.potential_attributes_given = "1"b; 1340 NRED = 5; 1341 go to RD_TEST_REDUCTION; /* / stmt \ */ 1342 1343 RD_ACTION(27): /* / */ 1344 call LEX ( 2 ); 1345 attr_type = Main_potential_defaults; 1346 call PUSH(5); /* PUSH(stmt) */ 1347 auto_rtde.registration_defaults.potential_attributes_given = "1"b; 1348 NRED = 44; 1349 go to RD_TEST_REDUCTION; /* / atts \ */ 1350 1351 RD_ACTION(28): /* / */ 1352 call LEX ( 3 ); 1353 auto_rtde.registration_defaults.attributes_given = "1"b; 1354 NRED = 5; 1355 go to RD_TEST_REDUCTION; /* / stmt \ */ 1356 1357 RD_ACTION(29): /* / */ 1358 call LEX ( 2 ); 1359 attr_type = Main_defaults; 1360 call PUSH(5); /* PUSH(stmt) */ 1361 auto_rtde.registration_defaults.attributes_given = "1"b; 1362 NRED = 44; 1363 go to RD_TEST_REDUCTION; /* / atts \ */ 1364 1365 RD_ACTION(30): /* / */ 1366 call LEX ( 2 ); 1367 auto_rtde.registration_defaults.aim_range ( * ) = authorization_values ( * ); 1368 auto_rtde.registration_defaults.aim_range_given = "1"b; 1369 call LEX ( 2 ); 1370 NRED = 5; 1371 go to RD_TEST_REDUCTION; /* / stmt \ */ 1372 1373 RD_ACTION(31): /* / */ 1374 call LEX ( 2 ); 1375 call ERROR ( 17 ); 1376 call NEXT_STMT(); 1377 NRED = 5; 1378 go to RD_TEST_REDUCTION; /* / stmt \ */ 1379 1380 RD_ACTION(32): /* / */ 1381 call LEX ( 2 ); 1382 subi , auto_rtde.n_subtypes = auto_rtde.n_subtypes +1; 1383 auto_rtde.subtype_name ( subi ) = token_value; 1384 ; 1385 call LEX ( 2 ); 1386 NRED = 35; 1387 go to RD_TEST_REDUCTION; /* / subtype \ */ 1388 1389 RD_ACTION(33): /* / */ 1390 call ERROR ( 2 ); 1391 call NEXT_STMT(); 1392 NRED = 5; 1393 go to RD_TEST_REDUCTION; /* / stmt \ */ 1394 1395 RD_ACTION(34): /* / */ 1396 call ERROR ( 1 ); 1397 return; /* / RETURN \ */ 1398 1399 RD_ACTION(35): /* / */ 1400 call LEX ( 2 ); 1401 auto_rtde.subtype_defaults ( subi ) .charge_type = find_charge_type ( ); 1402 auto_rtde.subtype_defaults ( subi ) .charge_type_given = "1"b; 1403 call LEX ( 2 ); 1404 NRED = 35; 1405 go to RD_TEST_REDUCTION; /* / subtype \ */ 1406 1407 RD_ACTION(36): /* / */ 1408 call LEX ( 3 ); 1409 auto_rtde.subtype_defaults ( subi ) .potential_attributes_given = "1"b; 1410 NRED = 35; 1411 go to RD_TEST_REDUCTION; /* / subtype \ */ 1412 1413 RD_ACTION(37): /* / */ 1414 call LEX ( 2 ); 1415 attr_type = Subtype_potential_defaults; 1416 call PUSH(35); /* PUSH(subtype) */ 1417 auto_rtde.subtype_defaults ( subi ) .potential_attributes_given = "1"b; 1418 NRED = 44; 1419 go to RD_TEST_REDUCTION; /* / atts \ */ 1420 1421 RD_ACTION(38): /* / */ 1422 call LEX ( 3 ); 1423 auto_rtde.subtype_defaults ( subi ) .attributes_given = "1"b; 1424 NRED = 35; 1425 go to RD_TEST_REDUCTION; /* / subtype \ */ 1426 1427 RD_ACTION(39): /* / */ 1428 call LEX ( 2 ); 1429 attr_type = Subtype_defaults; 1430 call PUSH(35); /* PUSH(subtype) */ 1431 auto_rtde.subtype_defaults ( subi ) .attributes_given = "1"b; 1432 NRED = 44; 1433 go to RD_TEST_REDUCTION; /* / atts \ */ 1434 1435 RD_ACTION(40): /* / */ 1436 call LEX ( 2 ); 1437 auto_rtde.subtype_defaults ( subi ) .aim_range ( * ) = authorization_values ( * ); 1438 auto_rtde.subtype_defaults ( subi ) .aim_range_given = "1"b; 1439 call LEX ( 2 ); 1440 NRED = 35; 1441 go to RD_TEST_REDUCTION; /* / subtype \ */ 1442 1443 RD_ACTION(41): /* / */ 1444 call LEX ( 2 ); 1445 call ERROR ( 17 ); 1446 call NEXT_STMT(); 1447 NRED = 5; 1448 go to RD_TEST_REDUCTION; /* / stmt \ */ 1449 1450 RD_ACTION(42): /* / */ 1451 NRED = 5; 1452 go to RD_TEST_REDUCTION; /* / stmt \ */ 1453 1454 RD_ACTION(43): /* / */ 1455 call ERROR ( 1 ); 1456 return; /* / RETURN \ */ 1457 1458 RD_ACTION(44): /* / */ 1459 call add_attribute(); 1460 call LEX ( 2 ); 1461 NRED = 44; 1462 go to RD_TEST_REDUCTION; /* / atts \ */ 1463 1464 RD_ACTION(45): /* / */ 1465 call add_attribute(); 1466 call LEX ( 2 ); 1467 go to RD_STACK_POP; /* / STACK_POP \ */ 1468 1469 RD_ACTION(46): /* / */ 1470 call ERROR ( 3 ); 1471 call NEXT_STMT(); 1472 go to RD_STACK_POP; /* / STACK_POP \ */ 1473 1474 RD_ACTION(47): /* / */ 1475 call ERROR ( 1 ); 1476 return; /* / RETURN \ */ 1477 1478 RD_ACTION(48): /* / */ 1479 matei , auto_rtde.n_mates = matei +1; 1480 auto_rtde.mates ( matei ) = token_value; 1481 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 1482 NRED = 51; 1483 go to RD_TEST_REDUCTION; /* / matepunct \ */ 1484 1485 RD_ACTION(49): /* / */ 1486 call ERROR ( 4 ); 1487 call NEXT_STMT(); 1488 NRED = 5; 1489 go to RD_TEST_REDUCTION; /* / stmt \ */ 1490 1491 RD_ACTION(50): /* / */ 1492 call ERROR ( 1 ); 1493 return; /* / RETURN \ */ 1494 1495 RD_ACTION(51): /* / */ 1496 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 1497 NRED = 48; 1498 go to RD_TEST_REDUCTION; /* / mates \ */ 1499 1500 RD_ACTION(52): /* / */ 1501 Ptoken, Pthis_token = Pthis_token -> token.Pnext; /* LEX */ 1502 NRED = 5; 1503 go to RD_TEST_REDUCTION; /* / stmt \ */ 1504 1505 RD_ACTION(53): /* / */ 1506 call ERROR ( 5 ); 1507 call NEXT_STMT(); 1508 NRED = 5; 1509 go to RD_TEST_REDUCTION; /* / stmt \ */ 1510 1511 RD_ACTION(54): /* / */ 1512 call ERROR ( 1 ); 1513 return; /* / RETURN \ */ 1514 1515 1516 end SEMANTIC_ANALYSIS; 1517 1518 /* * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * */ 1519 1520 dcl SPDL bit(1) aligned init ("0"b); 1521 /* off: This compiler parses a non-PUSH DOWN */ 1522 /* LANGUAGE. */ 1523 /* START OF: rdc_lex_.incl.pl1 * * * * * * * * * * * * * * * * */ 11 2 11 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 4 /* */ 11 5 /* N__a_m_e: rdc_lex_.incl.pl1 */ 11 6 /* */ 11 7 /* This include segment is used by compilers generated by the reduction_compiler. */ 11 8 /* It contains the LEX subroutine which is used to manipulate the pointer to the */ 11 9 /* "current" token, Pthis_token. */ 11 10 /* */ 11 11 /* E__n_t_r_y: LEX */ 11 12 /* */ 11 13 /* This entry makes the |_nth|-next (or -preceding) token the "current" token, where */ 11 14 /* _n is its positive (or negative) input argument. */ 11 15 /* */ 11 16 /* U__s_a_g_e */ 11 17 /* */ 11 18 /* call LEX(n); */ 11 19 /* */ 11 20 /* 1) n is the number of the token to be made the "current" token, relative to the */ 11 21 /* token identified by Pthis_token (the present "current" token). If n is */ 11 22 /* positive, the nth token following the "current" token made "current". If n */ 11 23 /* is negative, the nth token preceding the "current" token is made "current". */ 11 24 /* */ 11 25 /* S__t_a_t_u_s */ 11 26 /* */ 11 27 /* 0) Created by: G. C. Dixon in February, 1975 */ 11 28 /* */ 11 29 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 30 11 31 LEX: procedure (n); 11 32 11 33 dcl n fixed bin, 11 34 i fixed bin; 11 35 11 36 Ptoken = Pthis_token; /* do everything relative to "current" token. */ 11 37 if Ptoken = null then return; /* can't lex if token list exhausted. */ 11 38 if n >= 0 then do; /* new "current" token will follow present one. */ 11 39 do i = 1 to n while (token.Pnext ^= null); /* find new "current" token, taking care not to */ 11 40 Ptoken = token.Pnext; /* run off end of token list. */ 11 41 end; 11 42 if ^SPDL then if i <= n then Ptoken = null; /* if not in 'PUSH DOWN LANGUAGE' mode, allow */ 11 43 /* running off end of token list. */ 11 44 end; 11 45 else /* new "current" token precedes present one. */ 11 46 do i = -1 to n by -1 while (token.Plast ^= null); 11 47 Ptoken = token.Plast; 11 48 end; 11 49 Pthis_token = Ptoken; /* simple wasn't it. */ 11 50 11 51 end LEX; 11 52 11 53 /* END OF: rdc_lex_.incl.pl1 * * * * * * * * * * * * * * * * */ 1523 1524 1525 /* START OF: rdc_error_.incl.pl1 * * * * * * * * * * * * * * * * */ 12 2 12 3 dcl MERROR_SEVERITY fixed bin init (0), /* Severity of highest-severity error. */ 12 4 SERROR_CONTROL bit(2) init ("00"b),/* Global switches control error message format. */ 12 5 SERROR_PRINTED (dimension (error_control_table,1)) 12 6 bit(1) unaligned init ((dimension (error_control_table,1))(1)"0"b), 12 7 /* Array bit is on if corresponding error message */ 12 8 /* in error_control_table has already been printed*/ 12 9 MIN_PRINT_SEVERITY fixed bin init (0), /* Mimimum severity message that will be printed */ 12 10 PRINT_SEVERITY_CONTROL bit(2) init ("11"b);/* Action if severity < MIN_PRINT_SEVERITY */ 12 11 12 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 13 /* */ 12 14 /* N__a_m_e: rdc_error_.incl.pl1 */ 12 15 /* */ 12 16 /* This include segment is used by compilers generated by the reduction_compiler. */ 12 17 /* It defines a procedure which the compilers can use to print error messages. */ 12 18 /* */ 12 19 /* E__n_t_r_y: ERROR */ 12 20 /* */ 12 21 /* Given an error number, this procedure prints a corresponding error message. */ 12 22 /* The message is stored in a compiler-defined error_control_table, along with an integer */ 12 23 /* which specifies the severity level of the error, and a switch which specifies whether */ 12 24 /* the source statement in which the error occurred (if any) should be printed after the */ 12 25 /* error message. The printing of the error message may be supressed for all messages */ 12 26 /* having a severity less than a specified (MIN_PRINT_SEVERITY) value. The ERROR */ 12 27 /* procedure calls the lex_error_ subroutine to perform the formatting and printing of */ 12 28 /* the error message. */ 12 29 /* */ 12 30 /* U__s_a_g_e */ 12 31 /* */ 12 32 /* call ERROR (error_number); */ 12 33 /* */ 12 34 /* 1) error_number is the index of one of the structures in the error_control_table */ 12 35 /* which defines the error message to be printed. */ 12 36 /* */ 12 37 /* N__o_t_e_s */ 12 38 /* */ 12 39 /* The format of the error_control_table is shown below. */ 12 40 /* */ 12 41 /* dcl 1 error_control_table (2) aligned internal static, */ 12 42 /* 2 severity fixed bin(17) unaligned init (2,3), */ 12 43 /* 2 Soutput_stmt bit(1) unaligned initial ("0"b,"1"b), */ 12 44 /* 2 message char(252) varying initial ( */ 12 45 /* "The reduction source segment does not contain any reductions.", */ 12 46 /* "Reduction label '^a' is invalid."), */ 12 47 /* 2 brief_message char(100) varying initial ( */ 12 48 /* "", "'^a'"); */ 12 49 /* */ 12 50 /* error_control_table is an array of structures, with one array element per error. */ 12 51 /* Each structure contains: a severity level for the error; a switch which specifies */ 12 52 /* whether the source statement being processed should be output after the error message; */ 12 53 /* the long form of the error message text; and the brief form of the error message text.*/ 12 54 /* The dimension of the error_control_table array of structures, and the lengths of */ 12 55 /* message (long message) and brief_message (brief message), are compiler-defined. */ 12 56 /* structures and the lengths of the message and brief_message are compiler-defined. */ 12 57 /* The only requirement is that the messages be 256 characters or less in length. */ 12 58 /* (Remember that the longest character string which can be used in an initial attribute */ 12 59 /* is 254 characters in length.) */ 12 60 /* */ 12 61 /* The severity number causes the error message to be preceded by a herald which */ 12 62 /* includes one of the following prefixes: */ 12 63 /* */ 12 64 /* _s_e_v _p_r_e_f_i_x _e_x_p_l_a_n_a_t_i_o_n */ 12 65 /* 0 = COMMENT - this is a comment. */ 12 66 /* 1 = WARNING - a possible error has been detected. The */ 12 67 /* compiler will still generate an object segment. */ 12 68 /* 2 = ERROR - a probable error has been detected. The */ 12 69 /* compiler will still generate an object segment. */ 12 70 /* 3 = FATAL ERROR - an error has been detected which is so severe */ 12 71 /* that no object segment will be generated. */ 12 72 /* 4 = TRANSLATOR ERROR - an error has been detected in the operation of */ 12 73 /* the compiler or translator. No object segment */ 12 74 /* will be generated. */ 12 75 /* */ 12 76 /* Full error messages are of the form: */ 12 77 /* */ 12 78 /* _p_r_e_f_i_x _e_r_r_o_r__n_u_m_b_e_r, SEVERITY _s_e_v_e_r_i_t_y IN STATEMENT _n OF LINE _m */ 12 79 /* _t_e_x_t__o_f__e_r_r_o_r__m_e_s_s_a_g_e */ 12 80 /* SOURCE: */ 12 81 /* _s_o_u_r_c_e__s_t_a_t_e_m_e_n_t */ 12 82 /* */ 12 83 /* If only one statement appears in line _m, then "STATEMENT _n OF" is omitted. */ 12 84 /* If the source statement has been printed in a previous error message, it is omitted. */ 12 85 /* */ 12 86 /* The reduction compiler declares a bit string, SERROR_CONTROL, which controls the */ 12 87 /* text of an error message. The compiler may set this bit string, as shown below. */ 12 88 /* */ 12 89 /* SERROR_CONTROL _m_e_a_n_i_n_g */ 12 90 /* "00"b the first time a particular error occurs, the long message */ 12 91 /* is printed; the brief message is used in subsequent */ 12 92 /* occurrences of that error. */ 12 93 /* "10"b or "11"b the long error message is always used. */ 12 94 /* "01"b the brief error message is always used. */ 12 95 /* The initial value of SERROR_CONTROL is "00"b. */ 12 96 /* */ 12 97 /* The reduction_compiler creates a declaration for SERROR_PRINTED, an array */ 12 98 /* of switches (one per error). The switch corresponding to a particular error is */ 12 99 /* turned on whenever the error message is printed. This allows lex_error_ to detect */ 12 100 /* subsequent occurrences of that same error. */ 12 101 /* */ 12 102 /* The reduction_compiler creates MERROR_SEVERITY, a fixed bin(17) integer */ 12 103 /* in which the severity of the highest-severity error encountered is maintained. */ 12 104 /* The compiler may reference this integer. */ 12 105 /* */ 12 106 /* The reduction_compiler creates MIN_PRINT_SEVERITY, a fixed bin (17) integer */ 12 107 /* which controls the printing of error messages by the ERROR procedure. */ 12 108 /* Errors having a severity less than MIN_PRINT_SEVERITY will not cause lex_error_ to be */ 12 109 /* and no error will be printed. The behaviour of the ERROR procedure for such errors */ 12 110 /* is controlled by the value of PRINT_SEVERITY_CONTROL, described below. */ 12 111 /* The compiler may set the value of MIN_PRINT_SEVERITY; its initial value is 0. */ 12 112 12 113 /* */ 12 114 /* The reduction_compiler declares a bit string, PRINT_SEVERITY_CONTROL, which */ 12 115 /* controls the updating of MERROR_SEVERITY and SERROR_PRINTED when the severity of an */ 12 116 /* error is less than MIN_PRINT_SEVERITY. In such cases, the lex_error_ procedure is not */ 12 117 /* invoked, and the ERROR procedure must update these values as though lex_error_ were */ 12 118 /* called. The compiler may set this bit string, as shown below. */ 12 119 /* */ 12 120 /* PRINT_SEVERITY_CONTROL _m_e_a_n_i_n_g */ 12 121 /* "00"b update neither SERROR_PRINTED nor MERROR_SEVERITY. */ 12 122 /* "01"b update SERROR_PRINTED to reflect the error. */ 12 123 /* "10"b update MERROR_SEVERITY to reflect the error severity. */ 12 124 /* "11"b update SERROR_PRINTED and MERROR_SEVERITY appropriately. */ 12 125 /*The initial value of PRINT_SEVERITY_CONTROL is "11"b. */ 12 126 /* */ 12 127 /* The ERROR procedure is simple to use, but it does limit the flexibility of the */ 12 128 /* error message. A compiler action routine can output more flexible error messages */ 12 129 /* by calling lex_error_ directly. See lex_error_ documentation for more details. */ 12 130 /* */ 12 131 /* S__t_a_t_u_s */ 12 132 /* */ 12 133 /* 0) Created: April, 1974 by G. C. Dixon */ 12 134 /* 1) Modified: April, 1982 by E. N. Kittlitz. Added MIN_PRINT_SEVERITY, */ 12 135 /* PRINT_SEVERITY_CONTROL. */ 12 136 /* */ 12 137 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 12 138 12 139 ERROR: procedure (Nerror); 12 140 12 141 dcl Nerror fixed bin; /* Number of the error which was detected. (In) */ 12 142 12 143 dcl Pstmt ptr, 12 144 1 erring_token aligned based (Perring_token) like token, 12 145 Perring_token ptr, 12 146 erring_token_value char(erring_token.Lvalue) based (erring_token.Pvalue); 12 147 12 148 dcl (max, null) builtin; 12 149 12 150 dcl lex_error_ entry options (variable); 12 151 12 152 12 153 if error_control_table.severity(Nerror) < MIN_PRINT_SEVERITY then do; /* don't print */ 12 154 if PRINT_SEVERITY_CONTROL & "1"b then /* update MERROR_SEVERITY */ 12 155 MERROR_SEVERITY = max (MERROR_SEVERITY, error_control_table.severity(Nerror)); 12 156 if PRINT_SEVERITY_CONTROL & "01"b then /* update SERROR_PRINTED */ 12 157 SERROR_PRINTED(Nerror) = "1"b; 12 158 return; 12 159 end; 12 160 Perring_token = Pthis_token; /* address the current erring_token. */ 12 161 if error_control_table.Soutput_stmt(Nerror) then 12 162 if Perring_token = null then 12 163 Pstmt = null; 12 164 else 12 165 Pstmt = erring_token.Pstmt; /* address the statement descriptor. */ 12 166 else 12 167 Pstmt = null; 12 168 if Perring_token = null then 12 169 call lex_error_ (Nerror, SERROR_PRINTED(Nerror), (error_control_table.severity(Nerror)), 12 170 MERROR_SEVERITY, Pstmt, Perring_token, SERROR_CONTROL, (error_control_table.message(Nerror)), 12 171 (error_control_table.brief_message(Nerror))); 12 172 else 12 173 call lex_error_ (Nerror, SERROR_PRINTED(Nerror), (error_control_table.severity(Nerror)), 12 174 MERROR_SEVERITY, Pstmt, Perring_token, SERROR_CONTROL, (error_control_table.message(Nerror)), 12 175 (error_control_table.brief_message(Nerror)), erring_token_value, erring_token_value, erring_token_value); 12 176 12 177 end ERROR; 12 178 12 179 /* END OF: rdc_error_.incl.pl1 * * * * * * * * * * * * * * * * */ 1525 1526 1527 /* START OF: rdc_next_stmt_.incl.pl1 * * * * * * */ 13 2 13 3 /* * * * * * * * * * * * * * * * * * * * * * * */ 13 4 /* */ 13 5 /* N__a_m_e: rdc_next_stmt_.incl.pl1 */ 13 6 /* */ 13 7 /* This include segment is used by compilers generated by the */ 13 8 /* reduction_compiler. It includes a procedure which shifts the */ 13 9 /* compilation process to the next source statement. */ 13 10 /* */ 13 11 /* S__t_a_t_u_s */ 13 12 /* */ 13 13 /* 0) Created: April, 1974 by G. C. Dixon */ 13 14 /* */ 13 15 /* * * * * * * * * * * * * * * * * * * * * * * */ 13 16 13 17 13 18 NEXT_STMT: procedure; /* invoked to begin parsing the next statement of */ 13 19 /* the input tokens. */ 13 20 13 21 dcl null builtin, 13 22 Ssearching bit(1) aligned; 13 23 13 24 Ptoken = Pthis_token; /* make sure these pointers are the same. */ 13 25 Pstmt = token.Pstmt; /* address "current" statement's descriptor. */ 13 26 Ssearching = "1"b; /* start scanning forward for next statement. */ 13 27 do while (Ssearching & token.Pnext ^= null); 13 28 Ptoken = token.Pnext; 13 29 if token.Pstmt = Pstmt then; 13 30 else Ssearching = "0"b; 13 31 end; 13 32 if token.Pstmt = Pstmt then /* if there is no next statement, and */ 13 33 if SPDL then /* in PUSH DOWN LANGUAGE mode, can't run off */ 13 34 Ptoken = Ptoken; /* end of input list. */ 13 35 else Ptoken, Pthis_token = null; /* otherwise, input list exhausted. */ 13 36 else Pthis_token = Ptoken; /* normally, next statement exists and Ptoken */ 13 37 /* points to its 1st _n_o_n-__d_e_l_e_t_e_d token. */ 13 38 13 39 end NEXT_STMT; 13 40 13 41 /* END OF: rdc_next_stmt_.incl.pl1 * * * * * * */ 1527 1528 1529 end cv_rtmf; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 03/17/86 1456.6 cv_rtmf.pl1 >spec>install>1032>cv_rtmf.pl1 348 1 11/20/79 2015.6 rtdt.incl.pl1 >ldd>include>rtdt.incl.pl1 1-4 2 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 349 3 04/11/85 1452.5 rcp_mandatories.incl.pl1 >ldd>include>rcp_mandatories.incl.pl1 350 4 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_info.incl.pl1 351 5 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 352 6 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 1020 7 04/18/75 1242.4 rdc_start_.incl.pl1 >ldd>include>rdc_start_.incl.pl1 7-25 8 04/18/75 1242.4 lex_descriptors_.incl.pl1 >ldd>include>lex_descriptors_.incl.pl1 1138 9 03/17/86 1404.9 rdc_end_.incl.pl1 >spec>install>1032>rdc_end_.incl.pl1 1160 10 04/18/75 1242.4 rdc_stack_fcns_.incl.pl1 >ldd>include>rdc_stack_fcns_.incl.pl1 1523 11 04/18/75 1242.4 rdc_lex_.incl.pl1 >ldd>include>rdc_lex_.incl.pl1 1525 12 08/15/83 1511.7 rdc_error_.incl.pl1 >ldd>include>rdc_error_.incl.pl1 1527 13 04/18/75 1242.4 rdc_next_stmt_.incl.pl1 >ldd>include>rdc_next_stmt_.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. APstmt 000100 automatic pointer dcl 226 set ref 518* APtoken 000102 automatic pointer dcl 226 set ref 518* 522 Attr_too_long 003273 constant fixed bin(17,0) initial dcl 939 set ref 775* BACKSPACE 013710 constant char(1) initial dcl 7-99 ref 9-113 BREAKS 000116 internal static varying char(128) dcl 319 set ref 510* 512* 518* CODE 005155 automatic fixed bin(35,0) dcl 7-33 set ref 9-106* 9-107 Canonicalizer_nonexistent 003277 constant fixed bin(17,0) initial dcl 939 set ref 713* DIRECTION 005160 automatic fixed bin(17,0) initial dcl 1022 set ref 9-62 1022* Defined constant fixed bin(17,0) initial dcl 319 ref 783 791 1220 Device_syn_volume constant fixed bin(17,0) initial dcl 939 set ref 564* FOREVER constant fixed bin(17,0) initial dcl 330 ref 737 1255 FORM based fixed bin(17,0) level 2 packed unaligned dcl 7-48 ref 9-65 9-70 9-123 I 005156 automatic fixed bin(17,0) dcl 7-33 in procedure "SEMANTIC_ANALYSIS" set ref 9-62* 9-63 9-79* I based fixed bin(17,0) level 2 in structure "TOKEN_REQD_STRING" packed unaligned dcl 7-48 in procedure "SEMANTIC_ANALYSIS" ref 9-126 IFIRST based fixed bin(17,0) level 3 packed unaligned dcl 7-48 ref 9-62 9-73 9-79 9-79 IGBREAKS 000157 internal static varying char(128) dcl 319 set ref 511* 512* 518* ILAST 0(18) based fixed bin(17,0) level 3 packed unaligned dcl 7-48 ref 9-62 9-73 9-79 L 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 7-48 ref 9-127 LEXCTL 000055 internal static varying char(128) dcl 319 set ref 512* 518* LEXDLM 000014 internal static varying char(128) dcl 319 set ref 512* 518* LTOKEN_REQD_VALUE 005144 automatic fixed bin(18,0) dcl 7-33 set ref 9-127* 9-128 Lvalue 4 based fixed bin(18,0) level 2 in structure "token" dcl 8-68 in procedure "cv_rtmf" set ref 594* 617* 623* 633* 644* 694 694 701 701 711 711 749 754 767 772 772 775 777 777 778 832 835* 856* 906* 9-92 9-92 9-92 9-92 9-106 9-106 9-113 9-113 9-128 1166 1174 1197 1206 1274 1282 1303 1316 1383 1480 Lvalue 4 based fixed bin(18,0) level 2 in structure "erring_token" dcl 12-143 in procedure "ERROR" ref 12-172 12-172 12-172 12-172 12-172 12-172 MERROR_SEVERITY 004527 automatic fixed bin(17,0) initial dcl 12-3 set ref 525 663 12-3* 12-154* 12-154 12-168* 12-172* MIN_PRINT_SEVERITY 004531 automatic fixed bin(17,0) initial dcl 12-3 set ref 420* 12-3* 12-153 Main_defaults constant fixed bin(17,0) initial dcl 319 ref 805 1359 Main_potential_defaults constant fixed bin(17,0) initial dcl 319 ref 803 1345 Mandatory_attr_missing 003271 constant fixed bin(17,0) initial dcl 939 set ref 596* Mandatory_resource_missing 003270 constant fixed bin(17,0) initial dcl 939 set ref 645* Mates_same_type constant fixed bin(17,0) initial dcl 939 set ref 625* Multiply_dcl_attr 003275 constant fixed bin(17,0) initial dcl 939 set ref 787* N parameter fixed bin(17,0) dcl 10-38 set ref 10-36 10-60* 10-68 NRED 005145 automatic fixed bin(17,0) dcl 7-33 set ref 9-52* 9-55* 9-55 9-58 1158 10-18* 10-26* 1168* 1177* 1199* 1209* 1215* 1222* 1227* 1234* 1243* 1250* 1256* 1262* 1269* 1276* 1284* 1290* 1296* 1306* 1311* 1319* 1326* 1334* 1340* 1348* 1354* 1362* 1370* 1377* 1386* 1392* 1404* 1410* 1418* 1424* 1432* 1440* 1447* 1450* 1461* 1482* 1488* 1497* 1502* 1508* 10-60* NUMBER 005157 automatic fixed bin(35,0) dcl 7-33 set ref 9-106* 9-108 N_CHARGE_TYPES 004464 automatic fixed bin(17,0) dcl 1-64 set ref 531* 532 532 N_MATES 004462 automatic fixed bin(17,0) dcl 1-64 set ref 888* 891 891 N_SUBTYPES 004463 automatic fixed bin(17,0) dcl 1-64 set ref 889* 891 891 Negative_attr 003274 constant fixed bin(17,0) initial dcl 939 set ref 768* Nerror parameter fixed bin(17,0) dcl 12-141 set ref 12-139 12-153 12-154 12-156 12-161 12-168* 12-168 12-168 12-168 12-168 12-172* 12-172 12-172 12-172 12-172 No_Domain_stmt constant fixed bin(17,0) initial dcl 939 set ref 843* No_aim_range constant fixed bin(17,0) initial dcl 939 set ref 931* No_attributes constant fixed bin(17,0) initial dcl 939 set ref 927* No_charge_type constant fixed bin(17,0) initial dcl 939 set ref 934* No_mates constant fixed bin(17,0) initial dcl 939 set ref 840* No_name constant fixed bin(17,0) initial dcl 939 set ref 830* No_potential_attributes 003300 constant fixed bin(17,0) initial dcl 939 set ref 925* No_such_mate constant fixed bin(17,0) initial dcl 939 set ref 635* Nvalue 10 based fixed bin(35,0) level 3 packed unaligned dcl 8-68 set ref 9-101 9-108* 1232 1239 1241 1248 1267 PRED 005146 automatic pointer dcl 7-33 set ref 9-58* 9-62 9-62 9-73 9-73 9-79 9-79 9-79 PRINT_SEVERITY_CONTROL 004532 automatic bit(2) initial unaligned dcl 12-3 set ref 12-3* 12-154 12-156 PTOKEN_REQD 005150 automatic pointer dcl 7-33 set ref 9-63* 9-65 9-65 9-70 9-71 9-123 9-126 9-127 1141 PTOKEN_REQD_VALUE 005152 automatic pointer dcl 7-33 set ref 9-126* 9-128 Perring_token 005250 automatic pointer dcl 12-143 set ref 12-160* 12-161 12-164 12-168 12-168* 12-172* 12-172 12-172 12-172 12-172 12-172 12-172 12-172 12-172 12-172 Plast 2 based pointer level 2 packed unaligned dcl 8-68 ref 11-45 11-47 Pnext 1 based pointer level 2 packed unaligned dcl 8-68 ref 9-79 1154 1481 1495 1500 11-39 11-40 13-27 13-28 Pstmt 5 based pointer level 2 in structure "token" packed unaligned dcl 8-68 in procedure "cv_rtmf" set ref 541* 13-25 13-29 13-32 Pstmt 005246 automatic pointer dcl 12-143 in procedure "ERROR" set ref 12-161* 12-164* 12-166* 12-168* 12-172* Pstmt 004522 automatic pointer dcl 8-40 in procedure "cv_rtmf" set ref 541* 13-25* 13-29 13-32 Pstmt 5 based pointer level 2 in structure "erring_token" packed unaligned dcl 12-143 in procedure "ERROR" ref 12-164 Pthis_token 004520 automatic pointer dcl 7-23 set ref 522* 540* 9-60 1157 1481 1481* 1495 1495* 1500 1500* 11-36 11-49* 12-160 13-24 13-35* 13-36* Ptoken 004524 automatic pointer dcl 8-68 set ref 539* 540 541 542 543 594 617 623 633 644 694 694 694 694 701 701 701 711 711 711 711 749 749 754 754 767 767 772 772 772 772 775 775 777 777 777 777 778 778 832 833 834 835 855 856 905 906 9-60* 9-64 9-73 9-79 9-86 9-92 9-92 9-92 9-92 9-92 9-92 9-92 9-101 9-104 9-106 9-106 9-106 9-108 9-113 9-113 9-113 9-113 9-118 9-124 9-128 9-128 1154* 1154 1157* 1166 1166 1174 1174 1197 1197 1206 1206 1232 1239 1241 1248 1267 1274 1274 1282 1282 1303 1303 1316 1316 1383 1383 1480 1480 1481* 1495* 1500* 11-36* 11-37 11-39 11-40* 11-40 11-42* 11-45 11-47* 11-47 11-49 13-24* 13-25 13-27 13-28* 13-28 13-29 13-32 13-32* 13-32 13-35* 13-36 Pvalue 3 based pointer level 2 in structure "token" packed unaligned dcl 8-68 in procedure "cv_rtmf" set ref 543* 694 694 701 711 711 749 754 767 772 772 775 777 777 778 833 834* 855* 905* 9-92 9-92 9-106 9-113 9-128 1166 1174 1197 1206 1274 1282 1303 1316 1383 1480 Pvalue 3 based pointer level 2 in structure "erring_token" packed unaligned dcl 12-143 in procedure "ERROR" ref 12-172 12-172 12-172 RED based structure level 1 dcl 7-48 REDUCTION based structure array level 1 packed unaligned dcl 1027 set ref 9-58 REDUCTIONS 003200 constant fixed bin(17,0) initial array unaligned dcl 1027 set ref 9-58 RTDT_area_len 004465 automatic fixed bin(18,0) dcl 1-64 set ref 480* 481* 481 487 RTDT_version_3 constant fixed bin(17,0) initial dcl 1-64 ref 475 R_ACCESS 003353 constant bit(3) initial unaligned dcl 5-11 set ref 432* 436* S 11 based structure level 3 packed unaligned dcl 8-68 SERROR_CONTROL 004530 automatic bit(2) initial unaligned dcl 12-3 set ref 404* 405* 406* 12-3* 12-168* 12-172* SERROR_PRINTED 004531 automatic bit(1) initial array unaligned dcl 12-3 set ref 12-3* 12-156* 12-168* 12-172* SPDL 004526 automatic bit(1) initial dcl 1520 set ref 1520* 9-73 11-42 13-32 STACK 005161 automatic fixed bin(17,0) array dcl 1023 set ref 10-18 10-26 10-59 10-60 10-60 10-68* STACK_DEPTH 005173 automatic fixed bin(17,0) initial dcl 1023 set ref 10-17 10-18 10-24 10-26 10-27* 10-27 1023* 10-59 10-66* 10-66 10-68 STOKEN_FCN 005154 automatic bit(1) dcl 7-33 set ref 1143* 1145* 1147* 1150 SYSTEM_HIGH 004322 automatic bit(72) dcl 255 set ref 497* SYSTEM_LOW 004320 automatic bit(72) dcl 255 set ref 495* 932 Soutput_stmt 0(18) 000700 constant bit(1) initial array level 2 packed unaligned dcl 968 ref 12-161 Ssearching 005260 automatic bit(1) dcl 13-21 set ref 13-26* 13-27 13-30* Starred_attribute 003272 constant fixed bin(17,0) initial dcl 939 set ref 795* 801* Subtype_defaults constant fixed bin(17,0) initial dcl 319 ref 1429 Subtype_potential_defaults constant fixed bin(17,0) initial dcl 319 ref 807 1415 Syn_chain 003266 constant fixed bin(17,0) initial dcl 939 set ref 563* Syn_undefined constant fixed bin(17,0) initial dcl 939 set ref 569* TERM_FILE_TERM 003302 constant bit(3) initial unaligned dcl 6-14 set ref 674* TERM_FILE_TRUNC_BC_TERM 003301 constant bit(3) initial unaligned dcl 6-15 set ref 655* 686* TOKEN_REQD based structure level 1 dcl 7-48 in procedure "SEMANTIC_ANALYSIS" TOKEN_REQD based structure level 2 in structure "RED" packed unaligned dcl 7-48 in procedure "SEMANTIC_ANALYSIS" TOKEN_REQD_STRING based structure level 1 dcl 7-48 TOKEN_REQD_VALUE based char unaligned dcl 7-48 ref 9-128 TOKEN_REQUIREMENT based structure array level 1 packed unaligned dcl 1089 set ref 9-63 TOKEN_REQUIREMENTS 003041 constant fixed bin(17,0) initial array unaligned dcl 1089 set ref 9-63 TOKEN_STRINGS based char(151) dcl 1132 set ref 9-126 TOKEN_STRING_ARRAYS 002757 constant char(100) initial array dcl 1132 set ref 9-126 TRACING 000220 internal static bit(1) initial dcl 1017 set ref 9-50* 9-50 TYPE 0(18) based fixed bin(17,0) level 2 packed unaligned dcl 7-48 ref 9-65 9-71 1141 Undefined_attr 003276 constant fixed bin(17,0) initial dcl 939 set ref 783* Unrequited_mating 003267 constant fixed bin(17,0) initial dcl 939 set ref 619* access_ceiling 004162 automatic bit(72) dcl 237 set ref 430* addr builtin function dcl 275 in procedure "cv_rtmf" ref 488 490 490 539 543 651 834 855 addr builtin function dcl 10-40 in procedure "PUSH" ref 10-63 10-63 addr builtin function dcl 7-92 in procedure "SEMANTIC_ANALYSIS" ref 9-58 9-58 9-63 9-63 9-126 9-126 advance_notice_time 63 000110 automatic fixed bin(17,0) level 3 packed unaligned dcl 228 set ref 732* 1261* 1267* aim_range 5 parameter bit(72) array level 2 in structure "arg_struc" dcl 914 in procedure "validate_type" set ref 932* aim_range 607 000110 automatic bit(72) array level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 1367* aim_range 721 000110 automatic bit(72) array level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 1437* aim_range_given 0(02) 005134 automatic bit(1) level 2 in structure "temp_flags" packed unaligned dcl 918 in procedure "validate_type" set ref 930 aim_range_given 714(02) 000110 automatic bit(1) array level 5 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 1438* aim_range_given 602(02) 000110 automatic bit(1) level 5 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 1368* al 004314 automatic fixed bin(17,0) dcl 240 set ref 381* 382 386 386 390 390 392 392 396 396 404 405 406 406 407 407 409 409 413* 414 414 416 416 423 423 ap 004312 automatic pointer dcl 240 set ref 381* 382 386 390 392 396 404 405 406 406 407 407 409 413* 414 416 423 area_control based structure level 1 dcl 4-20 area_info based structure level 1 dcl 4-7 area_info_version_1 constant fixed bin(17,0) initial dcl 4-3 ref 484 areap 000104 automatic pointer dcl 226 in procedure "cv_rtmf" set ref 359* 503* 518* 677 677* areap 16 004474 automatic pointer level 2 in structure "auto_area_info" dcl 353 in procedure "cv_rtmf" set ref 488* arg_struc parameter structure level 1 dcl 914 set ref 912 argc 004437 automatic fixed bin(17,0) dcl 263 set ref 369* 375 380 408 argx 004440 automatic fixed bin(17,0) dcl 264 set ref 380* 381* 408 412* 412 413* attr_type 004164 automatic fixed bin(17,0) dcl 240 set ref 783 791 803 805 807 1220* 1345* 1359* 1415* 1429* attribute_names 102 based char(12) array level 3 in structure "rtde" dcl 1-16 in procedure "cv_rtmf" set ref 589 attribute_names 102 000110 automatic char(12) array level 3 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 726* 780 792* 867 879 879 attributes 10 000000 constant char(12) initial array level 2 in structure "rcp_mandatories" dcl 3-7 in procedure "cv_rtmf" set ref 586 586 589 594* attributes 605 000110 automatic bit(72) level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 805* attributes 717 000110 automatic bit(72) array level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 809* attributes_given 602(01) 000110 automatic bit(1) level 5 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 1353* 1361* attributes_given 714(01) 000110 automatic bit(1) array level 5 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 1423* 1431* attributes_given 0(01) 005134 automatic bit(1) level 2 in structure "temp_flags" packed unaligned dcl 918 in procedure "validate_type" set ref 927 attributes_to_match 100 000110 automatic bit(72) level 3 dcl 228 set ref 793* attributes_valid 76 000110 automatic bit(72) level 3 dcl 228 set ref 796* author based structure level 2 dcl 1-3 authorization_values 004155 automatic bit(72) array dcl 237 set ref 701* 1367 1437 auto_area_info 004474 automatic structure level 1 dcl 353 set ref 483* 490 490 auto_ctt 002514 automatic structure level 1 dcl 233 set ref 534 auto_rtde 000110 automatic structure level 1 dcl 228 set ref 725* auto_token 004442 automatic structure level 1 dcl 267 set ref 539 bchr based char unaligned dcl 271 set ref 382 386* 390* 392* 396* 404 405 406 406 407 407 409* 414* 416* 423* binary builtin function dcl 275 ref 651 775 bitc 004300 automatic fixed bin(24,0) dcl 240 set ref 432* 436* 451 527* 528* 651* 654 655* 657* brief_error 000222 internal static varying char(4) initial dcl 10-48 set ref 10-60* brief_message 33 000700 constant varying char(30) initial array level 2 dcl 968 ref 12-168 12-172 charge_type 725 000110 automatic fixed bin(17,0) array level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 1401* charge_type 613 000110 automatic fixed bin(17,0) level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 1331* charge_type_given 0(03) 005134 automatic bit(1) level 2 in structure "temp_flags" packed unaligned dcl 918 in procedure "validate_type" set ref 934 charge_type_given 602(03) 000110 automatic bit(1) level 5 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 1332* charge_type_given 714(03) 000110 automatic bit(1) array level 5 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 1402* charge_type_table based structure level 1 dcl 1-11 set ref 532 534* charge_type_table_ptr 37 based offset level 2 dcl 1-3 set ref 476* 535* charge_types 1 002514 automatic char(32) array level 2 dcl 233 set ref 749 754* cleanup 004454 stack reference condition dcl 281 ref 364 clock builtin function dcl 275 ref 431 code 004316 automatic fixed bin(35,0) dcl 240 set ref 495* 496 497* 498 499* 701* 702 711* 712 712 714* 717 collate builtin function dcl 275 ref 510 510 511 511 com_err_ 000362 constant entry external dcl 288 ref 371 386 392 409 416 423 439 446 461 499 505 526 657 com_err_$suppress_name 000370 constant entry external dcl 304 ref 376 control 1 004474 automatic structure level 2 dcl 353 convert_authorization_$from_string 000342 constant entry external dcl 288 ref 495 497 convert_authorization_$from_string_range 000344 constant entry external dcl 288 ref 701 copy_token 004712 automatic char(12) dcl 763 set ref 777* 778* 780 792 created_table_segment 004317 automatic bit(1) dcl 254 set ref 362* 459* 527 680 cttp 004472 automatic pointer dcl 1-70 set ref 532* 534 535 651 cu_$arg_count 000414 constant entry external dcl 315 ref 369 cu_$arg_ptr 000350 constant entry external dcl 288 ref 381 413 cu_$cl 000452 constant entry external dcl 10-43 ref 10-62 cv_dec_check_ 000450 constant entry external dcl 7-96 in procedure "SEMANTIC_ANALYSIS" ref 9-106 cv_dec_check_ 000372 constant entry external dcl 305 in procedure "cv_rtmf" ref 414 cv_entry_ 000352 constant entry external dcl 288 ref 711 cv_rtmf_severity_ 000442 external static fixed bin(35,0) initial dcl 344 set ref 366* 663* 668* default_flags 714 000110 automatic structure array level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" default_flags 602 000110 automatic structure level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 847 default_flags based structure array level 4 in structure "rtde" dcl 1-16 in procedure "cv_rtmf" default_flags 602 based structure level 4 in structure "rtde" dcl 1-16 in procedure "cv_rtmf" default_flags parameter structure level 2 in structure "arg_struc" dcl 914 in procedure "validate_type" ref 920 default_time 62 000110 automatic fixed bin(17,0) level 3 packed unaligned dcl 228 set ref 737* 1239* 1248* 1255* define_area_ 000336 constant entry external dcl 288 ref 490 dimension builtin function dcl 275 in procedure "cv_rtmf" ref 576 580 586 641 12-3 12-3 dimension builtin function dcl 10-40 in procedure "PUSH" ref 10-59 10-60 10-60 divide builtin function dcl 275 ref 451 dn 004167 automatic char(168) unaligned dcl 240 set ref 361* 390* 396* 432* 436* 439* 439* 446* 446* 457* 458* 461* 461* 471 657* 657* dont_free 1(03) 004474 automatic bit(1) level 3 packed unaligned dcl 353 set ref 485* ec 004315 automatic fixed bin(35,0) dcl 240 set ref 369* 370 371* 376* 381* 390* 391 392* 396* 397 399* 400 413* 414* 415 432* 433 436* 437 444 446* 453* 458* 459 461* 466* 467 490* 491 503* 504 505* 518* 655* 656 657* effective_flags 005014 automatic structure level 1 dcl 822 set ref 847* 849* 858* 920 entry_active 004271 automatic bit(1) dcl 240 set ref 516* 740* 827 entryvar 004656 automatic entry variable dcl 709 set ref 711* erring_token based structure level 1 dcl 12-143 erring_token_value based char unaligned dcl 12-143 set ref 12-172* 12-172* 12-172* error_control_table 000700 constant structure array level 1 dcl 968 ref 12-3 12-3 error_table_$bad_conversion 000434 external static fixed bin(35,0) dcl 334 set ref 416* error_table_$badopt 000420 external static fixed bin(35,0) dcl 334 set ref 423* error_table_$no_ext_sym 000426 external static fixed bin(35,0) dcl 334 ref 712 error_table_$noarg 000432 external static fixed bin(35,0) dcl 334 set ref 409* error_table_$noentry 000430 external static fixed bin(35,0) dcl 334 ref 433 error_table_$out_of_sequence 000444 external static fixed bin(35,0) dcl 823 set ref 827* error_table_$seg_not_found 000424 external static fixed bin(35,0) dcl 334 ref 712 error_table_$too_many_args 000422 external static fixed bin(35,0) dcl 334 set ref 386* error_table_$translation_failed 000416 external static fixed bin(35,0) dcl 334 set ref 526* error_table_$zero_length_seg 000436 external static fixed bin(35,0) dcl 334 ref 453 exclusion_specs 432 000110 automatic bit(72) array level 3 dcl 228 set ref 871 879* expand_pathname_ 000360 constant entry external dcl 288 ref 390 expand_pathname_$add_suffix 000406 constant entry external dcl 312 ref 396 fake_token_value 004754 automatic char(128) unaligned dcl 818 set ref 853* 855 856 fb35 004441 automatic fixed bin(35,0) dcl 265 set ref 414* 415 415 420 first 000010 internal static bit(1) initial unaligned dcl 319 set ref 509 513* first_resource 40 based offset level 2 dcl 1-3 set ref 476* 547 558 607 900* fixed_info based structure level 2 in structure "rtde" dcl 1-16 in procedure "cv_rtmf" set ref 893* fixed_info 000110 automatic structure level 2 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 893 flag_struc parameter structure level 1 dcl 916 ref 912 flags 61 based structure level 3 in structure "rtde" packed unaligned dcl 1-16 in procedure "cv_rtmf" flags 61 000110 automatic structure level 3 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" flagword based fixed bin(35,0) level 2 dcl 1-11 set ref 651 found 004436 automatic bit(1) dcl 258 set ref 556* 558 562* 569 605* 607 628* 632 get_group_id_ 000356 constant entry external dcl 288 ref 469 get_wdir_ 000354 constant entry external dcl 288 ref 457 got_mandatory 004326 automatic bit(1) array unaligned dcl 258 set ref 545* 582* 642 group2 7 based structure level 2 packed unaligned dcl 8-68 hcs_$delentry_seg 000374 constant entry external dcl 306 ref 683 hcs_$make_seg 000400 constant entry external dcl 309 ref 458 hcs_$truncate_seg 000404 constant entry external dcl 311 ref 466 i 005234 automatic fixed bin(17,0) dcl 11-33 in procedure "LEX" set ref 11-39* 11-42 11-45* i 004700 automatic fixed bin(17,0) dcl 747 in procedure "find_charge_type" set ref 749* 749* 752 753 754 757 i 004711 automatic fixed bin(17,0) dcl 763 in procedure "add_attribute" set ref 780* 780* 783 786 792 793 796 797 803 805 807 809 i 004272 automatic fixed bin(17,0) dcl 240 in procedure "cv_rtmf" set ref 576* 576* 580 582 586 589 594 603* 611 633* 641* 642 643* 851* 853 858* 865* 867 871 878 879* implies 004710 automatic bit(1) dcl 763 set ref 772* 773* 775 777 793 795 801 index builtin function dcl 275 ref 867 initiate_file_ 000376 constant entry external dcl 308 ref 432 436 ioa_$rsnnl 000340 constant entry external dcl 288 ref 594 617 623 633 853 iox_$error_output 000456 external static pointer dcl 10-43 set ref 10-63* iox_$put_chars 000454 constant entry external dcl 10-43 ref 10-63 is_synonym 61(05) 000110 automatic bit(1) level 4 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 838 1301* is_synonym 61(05) based bit(1) level 4 in structure "rtde" packed unaligned dcl 1-16 in procedure "cv_rtmf" set ref 552 563 is_volume 61(01) based bit(1) level 4 in structure "rtde" packed unaligned dcl 1-16 in procedure "cv_rtmf" set ref 555 564 622 622 is_volume 61(01) 000110 automatic bit(1) level 4 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 793 1175* 1207* j 004746 automatic fixed bin(17,0) dcl 816 in procedure "close" set ref 871* 871* 875 878* 879 879* j 004273 automatic fixed bin(17,0) dcl 240 in procedure "cv_rtmf" set ref 586* 586* 589 594* 612* 612* 616 k 004274 automatic fixed bin(17,0) dcl 240 set ref 589* 589* 593 last_block_ptr 004324 automatic pointer dcl 255 set ref 478* 900 901 903* last_install_time 12 based fixed bin(71,0) level 3 dcl 1-3 set ref 473* length builtin function dcl 10-40 in procedure "PUSH" ref 10-63 10-63 length builtin function dcl 275 in procedure "cv_rtmf" ref 644 772 775 777 835 856 lex_error_ 000460 constant entry external dcl 10-43 in procedure "PUSH" ref 10-60 lex_error_ 000462 constant entry external dcl 12-150 in procedure "ERROR" ref 12-168 12-172 lex_string_$init_lex_delims 000364 constant entry external dcl 288 ref 512 lex_string_$lex 000366 constant entry external dcl 288 ref 518 line_no 7(18) based fixed bin(17,0) level 3 packed unaligned dcl 8-68 set ref 542* lock 10 based bit(36) level 3 dcl 1-3 set ref 472* long_error 000224 internal static varying char(234) initial dcl 10-48 set ref 10-60* loop_ptr 004434 automatic pointer dcl 258 set ref 547* 547* 551* 639 manual_clear 61(02) 000110 automatic bit(1) level 4 packed unaligned dcl 228 set ref 1274* matei 004165 automatic fixed bin(17,0) dcl 240 set ref 1295* 1478 1478* 1480 mates 624 000110 automatic char(32) array level 2 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 726* 894 1282* 1480* mates 624 based char(32) array level 2 in structure "rtde" dcl 1-16 in procedure "cv_rtmf" set ref 611 612 633* 894* max builtin function dcl 7-92 in procedure "SEMANTIC_ANALYSIS" ref 10-27 max builtin function dcl 12-148 in procedure "ERROR" ref 12-154 max_time 62(18) 000110 automatic fixed bin(17,0) level 3 packed unaligned dcl 228 set ref 737* 1241* message 1 000700 constant varying char(100) initial array level 2 dcl 968 ref 12-168 12-172 my_name 000012 internal static char(8) initial dcl 319 set ref 371* 376* 386* 392* 409* 416* 423* 439* 446* 461* 486 503* 505* 526* 657* mytoken 004331 automatic char(256) unaligned dcl 258 set ref 543 553* 594* 617* 623* 633* 643* 644 n parameter fixed bin(17,0) dcl 11-33 in procedure "LEX" ref 11-31 11-38 11-39 11-42 11-45 n 004275 automatic fixed bin(17,0) dcl 240 in procedure "cv_rtmf" set ref 451* 452 518* n_charge_types 002514 automatic fixed bin(17,0) level 2 in structure "auto_ctt" dcl 233 in procedure "cv_rtmf" set ref 493* 531 749 752 753* n_charge_types based fixed bin(17,0) level 2 in structure "charge_type_table" dcl 1-11 in procedure "cv_rtmf" set ref 532* 534 651 n_defined_attributes 65(18) 000110 automatic fixed bin(17,0) level 3 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 732* 780 783 786 797* 843 844 865 878 924 1214* n_defined_attributes 65(18) based fixed bin(17,0) level 3 in structure "rtde" packed unaligned dcl 1-16 in procedure "cv_rtmf" set ref 589 593 n_exclusion_specs 64 000110 automatic fixed bin(17,0) level 3 packed unaligned dcl 228 set ref 863* 871 875 876* 876 879 n_mates 64(18) based fixed bin(17,0) level 3 in structure "rtde" packed unaligned dcl 1-16 in procedure "cv_rtmf" set ref 603 612 616 891* 894 895 n_mates 64(18) 000110 automatic fixed bin(17,0) level 3 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 732* 839 841* 888 1281* 1289* 1302* 1478* n_subtypes 65 based fixed bin(17,0) level 3 in structure "rtde" packed unaligned dcl 1-16 in procedure "cv_rtmf" set ref 891* 895 n_subtypes 65 000110 automatic fixed bin(17,0) level 3 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 849 851 889 1382 1382* name 1 000110 automatic char(32) level 3 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 726* 830 834 835 853* 1166* 1174* 1197* 1206* name 1 based char(32) level 3 in structure "rtde" dcl 1-16 in procedure "cv_rtmf" set ref 553 561 576 594* 611 612 617* 617* 623* 623* 633* next_resource based offset level 3 dcl 1-16 set ref 567 630 639 897* 901* no_freeing 1(04) 004474 automatic bit(1) level 3 packed unaligned dcl 353 set ref 485* non_restart_error 000320 internal static char(33) initial unaligned dcl 10-48 set ref 10-63 10-63 10-63 10-63 null builtin function dcl 12-148 in procedure "ERROR" ref 12-161 12-161 12-166 12-168 null builtin function dcl 10-40 in procedure "PUSH" ref 10-60 10-60 10-60 10-60 null builtin function dcl 7-92 in procedure "SEMANTIC_ANALYSIS" ref 9-64 9-73 9-79 9-86 null builtin function dcl 275 in procedure "cv_rtmf" ref 357 358 359 360 460 478 541 547 558 607 674 677 680 684 711 711 827 827 900 908 11-37 11-39 11-42 11-45 null builtin function dcl 13-21 in procedure "NEXT_STMT" ref 13-27 13-35 nullo builtin function dcl 275 ref 476 897 offset builtin function dcl 275 ref 535 900 901 owner 2 004474 automatic char(32) level 2 packed unaligned dcl 353 set ref 486* pathname_ 000410 constant entry external dcl 313 ref 439 439 446 446 461 461 657 657 pointer builtin function dcl 275 ref 547 558 567 607 630 639 potential_attributes 603 000110 automatic bit(72) level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 803* potential_attributes 715 000110 automatic bit(72) array level 4 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 807* potential_attributes_given 714 000110 automatic bit(1) array level 5 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 1409* 1417* potential_attributes_given 005134 automatic bit(1) level 2 in structure "temp_flags" packed unaligned dcl 918 in procedure "validate_type" set ref 925 potential_attributes_given 602 000110 automatic bit(1) level 5 in structure "auto_rtde" packed unaligned dcl 228 in procedure "cv_rtmf" set ref 844* 1339* 1347* precanon_proc 21 000110 automatic char(64) level 3 dcl 228 set ref 726* 1316* prefidx 004747 automatic fixed bin(17,0) dcl 816 set ref 867* 869 879 879 proc_group_id based char(32) level 3 dcl 1-3 set ref 469* process_limit 61(18) 000110 automatic fixed bin(17,0) level 3 packed unaligned dcl 228 set ref 732* 1232* quoted_string 11(01) based bit(1) level 4 packed unaligned dcl 8-68 ref 9-92 9-104 9-113 9-118 9-124 rcp_mandatories 000000 constant structure array level 1 dcl 3-7 registration_defaults 602 000110 automatic structure level 3 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 849* registration_defaults 602 based structure level 3 in structure "rtde" dcl 1-16 in procedure "cv_rtmf" rel builtin function dcl 275 ref 651 resource_name 000000 constant char(32) initial array level 2 dcl 3-7 ref 576 576 580 641 643 rtde based structure level 1 dcl 1-16 set ref 891 rtdep 004466 automatic pointer dcl 1-70 set ref 360* 551* 552 553 554 555 558* 558* 561 563 564* 567 576 589 589 593 594 603 611 612 617 622 623 633 633 891* 893 894 895 897 898 900 901 903 908* rtdt based structure level 1 dcl 1-3 set ref 481 rtdt_area 42 based area level 2 dcl 1-3 set ref 488 532 535 547 558 567 607 630 639 891 900 901 rtdt_en 004261 automatic char(32) unaligned dcl 240 set ref 361* 399* 458* 461* 461* 657* 657* rtdtp 004470 automatic pointer dcl 1-70 set ref 358* 458* 460 466* 469 470 471 472 473 475 476 476 481 488 532 535 535 547 547 558 558 567 607 607 630 639 655* 680 683* 684* 686* 891 900 900 901 rtmf_en 004251 automatic char(32) unaligned dcl 240 set ref 361* 396* 432* 433 439* 441* 446* 446* 526* rtmfp 000106 automatic pointer dcl 226 set ref 357* 432* 436* 518* 674 674* rtrim builtin function dcl 275 ref 644 711 711 835 856 save_Lvalue 004750 automatic fixed bin(21,0) dcl 818 set ref 832* 906 save_Pvalue 004752 automatic pointer dcl 818 set ref 833* 905 search builtin function dcl 7-92 ref 9-92 severity 000700 constant fixed bin(17,0) initial array level 2 packed unaligned dcl 968 ref 12-153 12-154 12-168 12-172 size 13 004474 automatic fixed bin(18,0) level 2 in structure "auto_area_info" dcl 353 in procedure "cv_rtmf" set ref 487* size builtin function dcl 275 in procedure "cv_rtmf" ref 481 string builtin function dcl 275 ref 922 sub_err_ 000446 constant entry external dcl 823 ref 827 subi 004166 automatic fixed bin(17,0) dcl 240 set ref 807 809 1382* 1383 1401 1402 1409 1417 1423 1431 1437 1438 substr builtin function dcl 275 in procedure "cv_rtmf" set ref 510 510 511 511 767 772 777 793* 796* 803* 805* 807* 809* 871 879 879 879* substr builtin function dcl 7-92 in procedure "SEMANTIC_ANALYSIS" ref 9-92 9-126 subtype_defaults 714 000110 automatic structure array level 3 dcl 228 set ref 858* subtype_name 704 000110 automatic char(32) array level 3 dcl 228 set ref 726* 853* 1383* subtypes based structure array level 2 in structure "rtde" dcl 1-16 in procedure "cv_rtmf" set ref 895* subtypes 704 000110 automatic structure array level 2 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 895 suffixed_name_$new_suffix 000412 constant entry external dcl 314 ref 399 supplied_en 004241 automatic char(32) unaligned dcl 240 set ref 361* 384 390* 399* 428 433 436* 439* 439* 441 syn_to 11 based char(32) level 3 in structure "rtde" dcl 1-16 in procedure "cv_rtmf" set ref 554 syn_to 11 000110 automatic char(32) level 3 in structure "auto_rtde" dcl 228 in procedure "cv_rtmf" set ref 1303* sys_info$max_seg_size 000440 external static fixed bin(18,0) dcl 343 ref 481 system_info_$access_ceiling 000346 constant entry external dcl 288 ref 430 table 14 based char(4) level 3 dcl 1-3 set ref 470* target_name 004301 automatic char(32) unaligned dcl 240 set ref 554* 561 temp_flags 005134 automatic structure level 1 dcl 918 set ref 920* 922 temp_ptr 004432 automatic pointer dcl 258 set ref 607* 607* 611 612 612 616 617 622 623* 630 terminate_file_ 000402 constant entry external dcl 310 ref 655 674 686 time_now 004276 automatic fixed bin(71,0) dcl 240 set ref 431* token based structure level 1 dcl 8-68 token_value based char unaligned dcl 8-68 set ref 694 694 701* 711 711 749 754 767 772 772 775 777 777 778 9-92 9-92 9-106* 9-113 9-128 1166 1174 1197 1206 1274 1282 1303 1316 1383 1480 translator_temp_$get_segment 000332 constant entry external dcl 285 ref 503 translator_temp_$release_all_segments 000334 constant entry external dcl 286 ref 677 unspec builtin function dcl 275 set ref 483* 534* 534 725* 893* 893 894* 894 895* 895 valid 61 based bit(1) level 4 packed unaligned dcl 1-16 set ref 898* verify builtin function dcl 7-92 ref 9-92 version 004474 automatic fixed bin(17,0) level 2 in structure "auto_area_info" dcl 353 in procedure "cv_rtmf" set ref 484* version 35 based fixed bin(17,0) level 2 in structure "rtdt" dcl 1-3 in procedure "cv_rtmf" set ref 475* volume_ind 004311 automatic bit(1) unaligned dcl 240 set ref 555* 564 w_dir 15 based char(64) level 3 dcl 1-3 set ref 471* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 5-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 Bad_access_class internal static fixed bin(17,0) initial dcl 939 Bad_attribute_syntax internal static fixed bin(17,0) initial dcl 939 Bad_first_stmt internal static fixed bin(17,0) initial dcl 939 Bad_identifier internal static fixed bin(17,0) initial dcl 939 Bad_syntax internal static fixed bin(17,0) initial dcl 939 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 5-33 E_ACCESS internal static bit(3) initial unaligned dcl 5-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 M_ACCESS internal static bit(3) initial unaligned dcl 5-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 N_ACCESS internal static bit(3) initial unaligned dcl 5-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 Pcomment automatic pointer dcl 8-20 Premature_EOF internal static fixed bin(17,0) initial dcl 939 REW_ACCESS internal static bit(3) initial unaligned dcl 5-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RE_ACCESS internal static bit(3) initial unaligned dcl 5-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RTDT_version_2 internal static fixed bin(17,0) initial dcl 1-64 RW_ACCESS internal static bit(3) initial unaligned dcl 5-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SA_ACCESS internal static bit(3) initial unaligned dcl 5-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 5-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 5-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SM_ACCESS internal static bit(3) initial unaligned dcl 5-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 S_ACCESS internal static bit(3) initial unaligned dcl 5-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 TERM_FILE_BC internal static bit(2) initial unaligned dcl 6-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 6-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 6-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 6-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 6-13 Unrecognized internal static fixed bin(17,0) initial dcl 939 W_ACCESS internal static bit(3) initial unaligned dcl 5-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 area_infop automatic pointer dcl 4-5 arg based char unaligned dcl 240 comment based structure level 1 dcl 8-20 comment_value based char unaligned dcl 8-20 hcs_$set_bc_seg 000000 constant entry external dcl 307 reverse builtin function dcl 275 stmt based structure level 1 dcl 8-40 stmt_value based char unaligned dcl 8-40 terminate_file_switches based structure level 1 packed unaligned dcl 6-4 verify builtin function dcl 275 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR 012753 constant entry internal dcl 12-139 ref 563 564 569 596 619 625 635 645 713 768 775 783 787 795 801 830 840 843 925 927 931 934 1180 1184 1324 1375 1389 1395 1445 1454 1469 1474 1485 1491 1505 1511 LEX 012666 constant entry internal dcl 11-31 ref 1163 1167 1171 1176 1190 1193 1198 1202 1208 1212 1218 1225 1230 1233 1237 1240 1242 1246 1249 1253 1259 1265 1268 1272 1275 1279 1283 1287 1293 1299 1305 1309 1314 1318 1322 1329 1333 1337 1343 1351 1357 1365 1369 1373 1380 1385 1399 1403 1407 1413 1421 1427 1435 1439 1443 1460 1466 NEXT_STMT 013264 constant entry internal dcl 13-18 ref 1325 1376 1391 1446 1471 1487 1507 PUSH 012525 constant entry internal dcl 10-36 ref 1221 1346 1360 1416 1430 RD_ACTION 002671 constant label array(54) dcl 1163 ref 1158 RD_MATCH 011225 constant label dcl 1154 ref 9-90 9-92 9-101 9-109 9-113 9-118 9-128 1150 RD_MATCH_NO_TOKEN 011230 constant label dcl 1155 ref 9-73 9-79 9-86 RD_NEXT_REDUCTION 010723 constant label dcl 9-55 ref 9-68 9-84 9-88 9-99 9-104 9-111 9-116 9-120 9-124 9-130 1151 10-17 10-24 RD_STACK 011237 constant label dcl 10-17 RD_STACK_POP 011244 constant label dcl 10-24 ref 1467 1472 RD_TEST_REDUCTION 010724 constant label dcl 9-58 ref 9-53 10-19 10-28 1169 1178 1200 1210 1216 1223 1228 1235 1244 1251 1257 1263 1270 1277 1285 1291 1297 1307 1312 1320 1327 1335 1341 1349 1355 1363 1371 1378 1387 1393 1405 1411 1419 1425 1433 1441 1448 1452 1462 1483 1489 1498 1503 1509 RD_TEST_RESULT 011221 constant label dcl 1150 ref 1144 1146 1148 RD_TEST_TOKEN 002660 constant label array(6) dcl 9-73 ref 9-65 9-71 RD_TOKEN_FCN 002666 constant label array(3) dcl 1143 ref 1141 SEMANTIC_ANALYSIS 010712 constant entry internal dcl 7-30 ref 523 abort 006013 constant label dcl 525 add_attribute 007576 constant entry internal dcl 761 ref 1458 1464 authorization_range 007276 constant entry internal dcl 698 ref 1147 badacc 005460 constant label dcl 499 ref 496 canon_virtual_entry 007333 constant entry internal dcl 707 ref 1145 clean_up 007121 constant entry internal dcl 671 ref 365 662 666 close 010033 constant entry internal dcl 814 ref 1188 1195 1204 cv_rtmf 003731 constant entry external dcl 222 find_charge_type 007527 constant entry internal dcl 745 ref 1331 1401 get_to_cl 012631 constant label dcl 10-62 ref 10-64 give_usage 004075 constant label dcl 376 ref 428 open 007427 constant entry internal dcl 723 ref 1165 1173 1196 1205 path_error 004251 constant label dcl 392 ref 397 400 rtdt_error 005217 constant label dcl 461 ref 467 491 rtmf_error 005056 constant label dcl 446 ref 454 severity_5_failure 007110 constant label dcl 666 ref 372 377 387 394 410 418 424 448 463 500 506 658 validate_type 010541 constant entry internal dcl 912 ref 849 858 yes_no 007254 constant entry internal dcl 692 ref 1143 NAME DECLARED BY CONTEXT OR IMPLICATION. character builtin function ref 382 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 14456 15142 13715 14466 Length 15736 13715 464 557 541 322 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME cv_rtmf 3256 external procedure is an external procedure. on unit on line 364 64 on unit clean_up 84 internal procedure is called by several nonquick procedures. yes_no internal procedure shares stack frame of external procedure cv_rtmf. authorization_range internal procedure shares stack frame of external procedure cv_rtmf. canon_virtual_entry internal procedure shares stack frame of external procedure cv_rtmf. open internal procedure shares stack frame of external procedure cv_rtmf. find_charge_type internal procedure shares stack frame of external procedure cv_rtmf. add_attribute internal procedure shares stack frame of external procedure cv_rtmf. close internal procedure shares stack frame of external procedure cv_rtmf. validate_type internal procedure shares stack frame of external procedure cv_rtmf. SEMANTIC_ANALYSIS internal procedure shares stack frame of external procedure cv_rtmf. PUSH internal procedure shares stack frame of external procedure cv_rtmf. LEX internal procedure shares stack frame of external procedure cv_rtmf. ERROR internal procedure shares stack frame of external procedure cv_rtmf. NEXT_STMT internal procedure shares stack frame of external procedure cv_rtmf. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 first cv_rtmf 000012 my_name cv_rtmf 000014 LEXDLM cv_rtmf 000055 LEXCTL cv_rtmf 000116 BREAKS cv_rtmf 000157 IGBREAKS cv_rtmf 000220 TRACING cv_rtmf 000222 brief_error PUSH 000224 long_error PUSH 000320 non_restart_error PUSH STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME cv_rtmf 000100 APstmt cv_rtmf 000102 APtoken cv_rtmf 000104 areap cv_rtmf 000106 rtmfp cv_rtmf 000110 auto_rtde cv_rtmf 002514 auto_ctt cv_rtmf 004155 authorization_values cv_rtmf 004162 access_ceiling cv_rtmf 004164 attr_type cv_rtmf 004165 matei cv_rtmf 004166 subi cv_rtmf 004167 dn cv_rtmf 004241 supplied_en cv_rtmf 004251 rtmf_en cv_rtmf 004261 rtdt_en cv_rtmf 004271 entry_active cv_rtmf 004272 i cv_rtmf 004273 j cv_rtmf 004274 k cv_rtmf 004275 n cv_rtmf 004276 time_now cv_rtmf 004300 bitc cv_rtmf 004301 target_name cv_rtmf 004311 volume_ind cv_rtmf 004312 ap cv_rtmf 004314 al cv_rtmf 004315 ec cv_rtmf 004316 code cv_rtmf 004317 created_table_segment cv_rtmf 004320 SYSTEM_LOW cv_rtmf 004322 SYSTEM_HIGH cv_rtmf 004324 last_block_ptr cv_rtmf 004326 got_mandatory cv_rtmf 004331 mytoken cv_rtmf 004432 temp_ptr cv_rtmf 004434 loop_ptr cv_rtmf 004436 found cv_rtmf 004437 argc cv_rtmf 004440 argx cv_rtmf 004441 fb35 cv_rtmf 004442 auto_token cv_rtmf 004462 N_MATES cv_rtmf 004463 N_SUBTYPES cv_rtmf 004464 N_CHARGE_TYPES cv_rtmf 004465 RTDT_area_len cv_rtmf 004466 rtdep cv_rtmf 004470 rtdtp cv_rtmf 004472 cttp cv_rtmf 004474 auto_area_info cv_rtmf 004520 Pthis_token cv_rtmf 004522 Pstmt cv_rtmf 004524 Ptoken cv_rtmf 004526 SPDL cv_rtmf 004527 MERROR_SEVERITY cv_rtmf 004530 SERROR_CONTROL cv_rtmf 004531 MIN_PRINT_SEVERITY cv_rtmf 004531 SERROR_PRINTED cv_rtmf 004532 PRINT_SEVERITY_CONTROL cv_rtmf 004656 entryvar canon_virtual_entry 004700 i find_charge_type 004710 implies add_attribute 004711 i add_attribute 004712 copy_token add_attribute 004746 j close 004747 prefidx close 004750 save_Lvalue close 004752 save_Pvalue close 004754 fake_token_value close 005014 effective_flags close 005134 temp_flags validate_type 005144 LTOKEN_REQD_VALUE SEMANTIC_ANALYSIS 005145 NRED SEMANTIC_ANALYSIS 005146 PRED SEMANTIC_ANALYSIS 005150 PTOKEN_REQD SEMANTIC_ANALYSIS 005152 PTOKEN_REQD_VALUE SEMANTIC_ANALYSIS 005154 STOKEN_FCN SEMANTIC_ANALYSIS 005155 CODE SEMANTIC_ANALYSIS 005156 I SEMANTIC_ANALYSIS 005157 NUMBER SEMANTIC_ANALYSIS 005160 DIRECTION SEMANTIC_ANALYSIS 005161 STACK SEMANTIC_ANALYSIS 005173 STACK_DEPTH SEMANTIC_ANALYSIS 005234 i LEX 005246 Pstmt ERROR 005250 Perring_token ERROR 005260 Ssearching NEXT_STMT THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_cs unpk_to_pk call_ext_out_desc call_ext_out call_int_this call_int_other return alloc_auto_adj mpfx2 enable shorten_stack ext_entry int_entry pointer_hard offset_hard alloc_based clock THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ com_err_$suppress_name convert_authorization_$from_string convert_authorization_$from_string_range cu_$arg_count cu_$arg_ptr cu_$cl cv_dec_check_ cv_dec_check_ cv_entry_ define_area_ expand_pathname_ expand_pathname_$add_suffix get_group_id_ get_wdir_ hcs_$delentry_seg hcs_$make_seg hcs_$truncate_seg initiate_file_ ioa_$rsnnl iox_$put_chars lex_error_ lex_error_ lex_string_$init_lex_delims lex_string_$lex pathname_ sub_err_ suffixed_name_$new_suffix system_info_$access_ceiling terminate_file_ translator_temp_$get_segment translator_temp_$release_all_segments THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. cv_rtmf_severity_ error_table_$bad_conversion error_table_$badopt error_table_$no_ext_sym error_table_$noarg error_table_$noentry error_table_$out_of_sequence error_table_$seg_not_found error_table_$too_many_args error_table_$translation_failed error_table_$zero_length_seg iox_$error_output sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 222 003730 1520 003736 12 3 003737 12 168 003771 357 003773 358 003775 359 003776 360 003777 361 004000 362 004014 364 004015 365 004031 366 004036 367 004041 369 004042 370 004053 371 004055 372 004072 375 004073 376 004075 377 004121 380 004122 381 004131 382 004146 384 004157 386 004163 387 004216 390 004217 391 004247 392 004251 394 004303 396 004304 397 004342 399 004344 400 004377 403 004401 404 004402 405 004413 406 004424 407 004441 408 004451 409 004454 410 004511 412 004512 413 004513 414 004530 415 004553 416 004561 418 004614 420 004615 421 004616 423 004617 424 004651 426 004652 428 004654 430 004660 431 004667 432 004671 433 004726 436 004736 437 004772 439 004774 441 005051 444 005054 446 005056 448 005125 451 005126 452 005132 453 005133 454 005136 457 005137 458 005151 459 005210 460 005213 461 005217 463 005266 466 005267 467 005303 469 005305 470 005314 471 005317 472 005322 473 005323 475 005325 476 005327 478 005332 480 005334 481 005335 483 005344 484 005347 485 005351 486 005355 487 005360 488 005362 490 005364 491 005376 493 005400 495 005401 496 005426 497 005430 498 005456 499 005460 500 005506 503 005507 504 005530 505 005532 506 005556 509 005557 510 005562 511 005604 512 005612 513 005673 516 005675 518 005676 522 006010 523 006012 525 006013 526 006016 527 006037 528 006043 529 006044 531 006045 532 006047 534 006061 535 006070 539 006075 540 006077 541 006100 542 006103 543 006105 545 006107 547 006122 551 006134 552 006136 553 006142 554 006145 555 006150 556 006154 558 006155 561 006172 562 006177 563 006201 564 006206 567 006216 569 006224 570 006230 576 006231 578 006246 580 006250 582 006253 586 006256 589 006276 591 006330 593 006332 594 006340 596 006406 598 006410 603 006412 605 006425 607 006426 611 006444 612 006455 614 006477 616 006501 617 006507 619 006547 620 006551 622 006552 623 006564 625 006623 626 006625 628 006626 630 006630 632 006636 633 006640 635 006705 637 006707 639 006711 641 006717 642 006725 643 006731 644 006736 645 006751 647 006753 651 006755 652 006771 654 006772 655 006774 656 007021 657 007023 658 007077 662 007100 663 007104 664 007107 666 007110 668 007114 669 007117 671 007120 674 007126 677 007161 680 007200 683 007207 684 007221 686 007224 688 007253 692 007254 694 007256 698 007276 701 007300 702 007326 707 007333 711 007335 712 007410 713 007417 714 007421 717 007422 723 007427 725 007430 726 007434 732 007506 737 007516 740 007524 741 007526 745 007527 749 007531 750 007553 752 007555 753 007560 754 007561 757 007572 761 007576 767 007577 768 007606 769 007610 772 007611 773 007622 775 007623 777 007635 778 007650 780 007657 781 007677 783 007701 785 007712 786 007713 787 007720 788 007722 791 007723 792 007725 793 007735 795 007745 796 007751 797 007755 798 007757 801 007760 803 007764 805 007774 807 010003 809 010020 810 010032 814 010033 827 010034 830 010105 832 010113 833 010116 834 010120 835 010122 838 010134 839 010137 840 010144 841 010147 843 010151 844 010160 847 010166 849 010170 851 010177 853 010205 855 010244 856 010247 858 010261 859 010274 863 010276 865 010300 867 010311 869 010324 871 010325 873 010350 875 010352 876 010356 878 010361 879 010373 882 010422 885 010424 888 010426 889 010432 891 010435 893 010456 894 010461 895 010472 897 010504 898 010506 900 010510 901 010522 903 010527 905 010531 906 010534 908 010536 910 010540 912 010541 920 010543 922 010634 924 010641 925 010645 927 010652 930 010657 931 010662 932 010664 934 010704 936 010711 7 30 010712 1022 010713 1023 010715 9 50 010716 9 52 010721 9 53 010722 9 55 010723 9 58 010724 9 60 010727 9 62 010731 9 63 010754 9 64 010757 9 65 010763 9 68 010773 9 70 010774 9 71 011000 9 73 011002 9 79 011021 9 84 011032 9 86 011033 9 88 011037 9 90 011040 9 92 011041 9 99 011075 9 101 011076 9 104 011101 9 106 011104 9 107 011130 9 108 011132 9 109 011135 9 111 011136 9 113 011137 9 116 011153 9 118 011154 9 120 011160 9 123 011161 9 124 011162 9 126 011166 9 127 011173 9 128 011177 9 130 011205 1141 011206 1143 011210 1144 011212 1145 011213 1146 011215 1147 011216 1148 011220 1150 011221 1151 011224 1154 011225 1155 011230 1157 011233 1158 011235 10 17 011237 10 18 011241 10 19 011243 10 24 011244 10 26 011246 10 27 011250 10 28 011256 1163 011257 1165 011263 1166 011264 1167 011273 1168 011277 1169 011301 1171 011302 1173 011306 1174 011307 1175 011316 1176 011320 1177 011324 1178 011326 1180 011327 1182 011333 1184 011334 1186 011340 1188 011341 1190 011342 1191 011346 1193 011347 1195 011353 1196 011354 1197 011355 1198 011364 1199 011370 1200 011372 1202 011373 1204 011377 1205 011400 1206 011401 1207 011410 1208 011412 1209 011416 1210 011420 1212 011421 1214 011425 1215 011427 1216 011431 1218 011432 1220 011436 1221 011440 1222 011444 1223 011446 1225 011447 1227 011453 1228 011455 1230 011456 1232 011462 1233 011465 1234 011471 1235 011473 1237 011474 1239 011500 1240 011504 1241 011510 1242 011513 1243 011517 1244 011521 1246 011522 1248 011526 1249 011532 1250 011536 1251 011540 1253 011541 1255 011545 1256 011547 1257 011551 1259 011552 1261 011556 1262 011560 1263 011562 1265 011563 1267 011567 1268 011573 1269 011577 1270 011601 1272 011602 1274 011606 1275 011622 1276 011626 1277 011630 1279 011631 1281 011635 1282 011637 1283 011646 1284 011652 1285 011654 1287 011655 1289 011661 1290 011663 1291 011665 1293 011666 1295 011672 1296 011673 1297 011675 1299 011676 1301 011702 1302 011704 1303 011706 1305 011715 1306 011721 1307 011723 1309 011724 1311 011730 1312 011732 1314 011733 1316 011737 1318 011746 1319 011752 1320 011754 1322 011755 1324 011761 1325 011765 1326 011766 1327 011770 1329 011771 1331 011775 1332 011777 1333 012001 1334 012005 1335 012007 1337 012010 1339 012014 1340 012016 1341 012020 1343 012021 1345 012025 1346 012027 1347 012033 1348 012035 1349 012037 1351 012040 1353 012044 1354 012046 1355 012050 1357 012051 1359 012055 1360 012057 1361 012063 1362 012065 1363 012067 1365 012070 1367 012074 1368 012102 1369 012104 1370 012110 1371 012112 1373 012113 1375 012117 1376 012123 1377 012124 1378 012126 1380 012127 1382 012133 1383 012141 1385 012153 1386 012157 1387 012161 1389 012162 1391 012166 1392 012167 1393 012171 1395 012172 1397 012176 1399 012177 1401 012203 1402 012214 1403 012217 1404 012223 1405 012225 1407 012226 1409 012232 1410 012236 1411 012240 1413 012241 1415 012245 1416 012247 1417 012253 1418 012257 1419 012261 1421 012262 1423 012266 1424 012272 1425 012274 1427 012275 1429 012301 1430 012303 1431 012307 1432 012313 1433 012315 1435 012316 1437 012322 1438 012344 1439 012350 1440 012354 1441 012356 1443 012357 1445 012363 1446 012367 1447 012370 1448 012372 1450 012373 1452 012375 1454 012376 1456 012402 1458 012403 1460 012404 1461 012410 1462 012412 1464 012413 1466 012414 1467 012420 1469 012421 1471 012425 1472 012426 1474 012427 1476 012433 1478 012434 1480 012440 1481 012451 1482 012454 1483 012456 1485 012457 1487 012463 1488 012464 1489 012466 1491 012467 1493 012473 1495 012474 1497 012477 1498 012501 1500 012502 1502 012505 1503 012507 1505 012510 1507 012514 1508 012515 1509 012517 1511 012520 1513 012524 10 36 012525 10 59 012527 10 60 012532 10 62 012631 10 63 012636 10 64 012660 10 66 012661 10 68 012662 10 70 012665 11 31 012666 11 36 012670 11 37 012672 11 38 012677 11 39 012701 11 40 012713 11 41 012715 11 42 012717 11 44 012727 11 45 012730 11 47 012743 11 48 012745 11 49 012750 11 51 012752 12 139 012753 12 153 012755 12 154 012765 12 156 012774 12 158 013003 12 160 013004 12 161 013006 12 164 013021 12 166 013025 12 168 013027 12 172 013133 12 177 013262 13 18 013264 13 24 013265 13 25 013267 13 26 013272 13 27 013274 13 28 013302 13 29 013304 13 30 013311 13 31 013312 13 32 013313 13 35 013324 13 36 013330 13 39 013331 ----------------------------------------------------------- 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