COMPILATION LISTING OF SEGMENT linus_store Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1115.97_Tue_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(86-01-13,Dupuis), approve(86-05-23,MCR7404), audit(86-07-23,GWMay), 12* install(86-07-29,MR12.0-1106): 13* Changed code to place the column delimiters between the column 14* values when the tuple is written out in an error situation. 15* 2) change(88-01-27,Dupuis), approve(88-03-03,MCR7844), audit(88-03-14,Blair), 16* install(88-03-15,MR12.2-1036): 17* Implemented the -progress/-no_progress and -warning/-no_warning 18* control arguments. 19* END HISTORY COMMENTS */ 20 21 22 /* format: off */ 23 24 /* This is the main level procedure called by ssu_ to implement the 25* linus store request. Description and usage follows. 26* 27* Description: 28* 29* This request prompts the user for values, takes the values from the 30* request line, or reads the values from a file. It then takes these 31* values and stores them into the specified relation. 32* 33* Usage: "store table_name {column_values} {-control_args}" 34* 35* where table_name is the name of the relation where the data will be 36* stored. 37* 38* {column_values} are one or more values provided on the request line. 39* 40* {-control_args} can be: 41* 42* -brief -- verification of input values isn't performed. 43* 44* -column_delimiter X -- the delimiter used to separate column values. 45* X can be any single ascii character (default is one blank). The old 46* control arg -delimiter is still accepted but not documented. 47* 48* -input_file pathname -- the file where the values should be taken from. 49* 50* -long -- verification of input values is performed. 51* 52* -progress {N} -- prints a progress report every N tuples, where N defaults 53* to linus_data_$trace_every_n_tuples if not specified. 54* 55* -row_delimiter X -- the delimiter used to separate rows. X can be any 56* single ascii character (default is newline character). 57* 58* -warning, -warn, -no_warning, -no_warn -- prints or doesn't print warning 59* messages caused by the storing of duplicate tuples or conversion errors. 60* 61* Both parameters are passed to this request by ssu_. 62* 63* 64* Known Bugs: 65* 66* Other Problems: 67* 68* History: 69* 70* Written - Al Dupuis - September 1983 - complete rewrite of old module. 71* Changed - Al Dupuis - November 4, 1983 - changed code from 72* error_table_$fatal_error to ssu_et_$program_interrupt in call 73* to ssu_$abort_line after user types "no" to verification of 74* values. 75* 76**/ 77 78 linus_store: proc ( 79 80 sci_ptr_parm, /* input: ptr to the subsystem control info structure */ 81 lcb_ptr_parm /* input: ptr to the linus control block info structure */ 82 ); 83 84 dcl sci_ptr_parm ptr parm; 85 dcl lcb_ptr_parm ptr parm; 86 87 /* 88* Mainline Processing Overview: 89* 90* (1) Process control arguments setting flags and collecting values. 91* 92* (2) Get the values from the request line, from the user, or from an input 93* file. 94* 95* (3) Store the row. Repeat 2 and 3 if -input_file was used. 96* 97* (4) Clean up. 98* 99**/ 100 101 call initialize; 102 103 cleanup_signalled = OFF; 104 on cleanup begin; 105 cleanup_signalled = ON; 106 call terminate; 107 end; 108 109 call process_args; 110 call get_values_procedure (get_values_mode); 111 112 call terminate; 113 114 return; 115 116 get_values_from_file: proc; 117 118 dcl gvff_code fixed bin (35); 119 dcl gvff_error_occured bit (1) aligned; 120 dcl gvff_still_storing bit (1) aligned; 121 122 call linus_parse_file$start (lcb_ptr, addr (data_file_info), 123 table_ip, gvff_code); 124 if gvff_code ^= 0 125 then call ssu_$abort_line (sci_ptr, gvff_code); 126 packed_buffer_ptr = buffer_ptr; 127 file_parsing_has_been_started = ON; 128 129 gvff_still_storing = ON; 130 do while (gvff_still_storing); 131 call linus_parse_file$get_row (lcb_ptr, addr (data_file_info), 132 table_ip, buffer_ptr, gvff_code); 133 if gvff_code ^= 0 134 then if gvff_code = error_table_$end_of_info 135 then gvff_still_storing = OFF; 136 else call ssu_$abort_line (sci_ptr, gvff_code); 137 else; 138 if gvff_still_storing 139 then do; 140 call linus_table$store_row (lcb_ptr, table_ip, 141 packed_buffer_ptr, gvff_code); 142 if gvff_code ^= 0 143 then do; 144 if print_warning_messages 145 & (gvff_code = mrds_error_$duplicate_key | gvff_code = mrds_error_$conversion_condition) 146 then call ssu_$print_message (sci_ptr, gvff_code, 147 "^/The error occured on line number ^d while trying to store row number ^d." 148 || PARTIAL_FILE_STORE_MESSAGE, 149 data_file_info.current_line_number - 1, data_file_info.current_row_number - 1, 150 FILE_NAME_FOR_FAILED_STORE, 151 (data_file_info.column_delimiter = BLANK), data_file_info.column_delimiter); 152 call write_partial_file_to_pdir (number_of_columns, 153 EXTEND, gvff_error_occured); 154 if gvff_error_occured 155 then call ssu_$abort_line (sci_ptr, gvff_code); 156 if gvff_code ^= mrds_error_$duplicate_key 157 & gvff_code ^= mrds_error_$conversion_condition 158 then call ssu_$abort_line (sci_ptr, gvff_code, 159 PARTIAL_FILE_STORE_MESSAGE, FILE_NAME_FOR_FAILED_STORE, 160 (data_file_info.column_delimiter = BLANK), data_file_info.column_delimiter); 161 end; 162 else do; 163 number_of_tuples_stored = number_of_tuples_stored + 1; 164 if data_file_info.flags.tracing 165 then if mod (data_file_info.current_row_number - 1, data_file_info.trace_every_n_tuples) = 0 166 then call ioa_ ("^d lines (^d tuples) read from input file. ^d tuples stored.", 167 data_file_info.current_line_number - 1, 168 data_file_info.current_row_number - 1, 169 number_of_tuples_stored); 170 end; 171 end; 172 end; 173 174 if data_file_info.flags.tracing 175 then call ioa_ ("Storing completed. ^d lines (^d tuples) read, ^d tuples stored.", 176 data_file_info.current_line_number - 1, 177 data_file_info.current_row_number - 1, number_of_tuples_stored); 178 179 return; 180 181 end get_values_from_file; 182 183 get_values_from_request_line: proc; 184 185 dcl gvfrl_error_occured bit (1) aligned; 186 dcl gvfrl_index fixed bin (21); 187 dcl gvfrl_length fixed bin (21); 188 dcl gvfrl_loop fixed bin; 189 190 current_arg_number = 2; 191 do gvfrl_loop = 1 to number_of_columns; 192 gvfrl_index = table_info.columns.column_index (gvfrl_loop); 193 gvfrl_length = table_info.columns.column_length (gvfrl_loop); 194 call ssu_$arg_ptr (sci_ptr, current_arg_number, arg_ptr, arg_length); 195 if arg_length > gvfrl_length 196 then do; 197 call ssu_$print_message (sci_ptr, 0, 198 "Warning: the value ""^a"" ^/for the ""^a"" column will be truncated to ^d characters.", 199 arg, table_info.columns.column_name (gvfrl_loop), gvfrl_length); 200 substr (buffer, gvfrl_index, gvfrl_length) = substr (arg, 1, gvfrl_length); 201 end; 202 else substr (buffer, gvfrl_index, gvfrl_length) = arg; 203 current_arg_number = current_arg_number + 1; 204 205 if current_arg_number > number_of_args_supplied 206 then if gvfrl_loop ^= number_of_columns 207 then call too_few_values_supplied; 208 else; 209 else; 210 211 if first_control_arg_has_been_found 212 then if current_arg_number = first_control_arg_number 213 & gvfrl_loop ^= number_of_columns 214 then call too_few_values_supplied; 215 else; 216 else; 217 end; 218 219 call store_the_row; 220 221 return; 222 223 too_few_values_supplied: proc; 224 225 call write_partial_file_to_pdir (gvfrl_loop, TRUNCATE, gvfrl_error_occured); 226 227 if ^gvfrl_error_occured 228 then call ssu_$abort_line (sci_ptr, error_table_$fatal_error, 229 "^/There were ^d column values expected, but only ^d were supplied." 230 || PARTIAL_FILE_STORE_MESSAGE, 231 table_info.column_count, gvfrl_loop, FILE_NAME_FOR_FAILED_STORE, 232 (data_file_info.column_delimiter = BLANK), data_file_info.column_delimiter); 233 else call ssu_$abort_line (sci_ptr, error_table_$fatal_error, 234 "^/There were ^d column values expected, but only ^d were supplied.", 235 table_info.column_count, gvfrl_loop); 236 237 return; 238 239 end too_few_values_supplied; 240 241 end get_values_from_request_line; 242 243 get_values_from_user: proc; 244 245 dcl gvfu_index fixed bin (21); 246 dcl gvfu_length fixed bin (21); 247 dcl gvfu_loop fixed bin; 248 249 do gvfu_loop = 1 to number_of_columns; 250 question_buffer = table_info.columns.column_name (gvfu_loop) 251 || BLANK || QUESTION_MARK || BLANK; 252 gvfu_index = table_info.columns.column_index (gvfu_loop); 253 gvfu_length = table_info.columns.column_length (gvfu_loop); 254 call linus_query (lcb_ptr, answer_buffer, question_buffer); 255 if length (answer_buffer) > gvfu_length 256 then do; 257 call ssu_$print_message (sci_ptr, 0, 258 "Warning: the ^d characters just received will be truncated to ^d.", 259 length (answer_buffer), gvfu_length); 260 substr (buffer, gvfu_index, gvfu_length) = substr (answer_buffer, 1, gvfu_length); 261 end; 262 else substr (buffer, gvfu_index, gvfu_length) = substr (answer_buffer, 1); 263 end; 264 265 call store_the_row; 266 267 return; 268 269 end get_values_from_user; 270 271 initialize: proc; 272 273 sci_ptr = sci_ptr_parm; 274 lcb_ptr = lcb_ptr_parm; 275 work_area_ptr = addr (lcb.static_area); 276 277 unspec (data_file_info) = OFF; 278 data_file_info.flags.process_quotes = ON; 279 data_file_info.flags.process_whitespace = ON; 280 data_file_info.flags.last_column_delimiter_is_optional = ON; 281 data_file_info.column_delimiter = BLANK; 282 data_file_info.row_delimiter = NEWLINE; 283 data_file_info.trace_every_n_tuples = linus_data_$trace_every_n_tuples; 284 brief_mode = OFF; 285 buffer_has_been_allocated = OFF; 286 first_control_arg_has_been_found = OFF; 287 table_info_has_been_allocated = OFF; 288 file_parsing_has_been_started = OFF; 289 print_warning_messages = ON; 290 number_of_tuples_stored = 0; 291 292 call ssu_$arg_count (sci_ptr, number_of_args_supplied); 293 if number_of_args_supplied = 0 294 then call ssu_$abort_line (sci_ptr, error_table_$noarg, 295 "^/Usage: store table_name {column_values} {-control_args}"); 296 return; 297 298 end initialize; 299 300 process_args: proc; 301 302 call ssu_$arg_ptr (sci_ptr, 1, arg_ptr, arg_length); 303 table_name = arg; 304 call linus_table$info_for_store (lcb_ptr, table_name, 305 work_area_ptr, table_ip, code); 306 if code ^= 0 307 then call ssu_$abort_line (sci_ptr, code); 308 number_of_columns = table_info.column_count; 309 table_info_has_been_allocated = ON; 310 buffer_length = table_info.row_value_length; 311 allocate buffer in (work_area) set (buffer_ptr); 312 buffer_has_been_allocated = ON; 313 get_values_mode = GET_VALUES_FROM_USER; 314 315 if number_of_args_supplied = 1 316 then return; 317 318 moved_into_the_values = OFF; 319 moved_into_the_control_args = OFF; 320 call ssu_$arg_ptr (sci_ptr, 2, arg_ptr, arg_length); 321 if arg_length > 0 322 then if substr (arg, 1, 1) = "-" 323 then moved_into_the_control_args = ON; 324 else moved_into_the_values = ON; 325 else moved_into_the_values = ON; 326 327 if moved_into_the_values 328 then do; 329 get_values_mode = GET_VALUES_FROM_REQUEST_LINE; 330 current_arg_number = 2 + number_of_columns; 331 if current_arg_number > number_of_args_supplied 332 then return; 333 else moved_into_the_control_args = ON; 334 end; 335 else current_arg_number = 2; 336 337 first_control_arg_has_been_found = ON; 338 first_control_arg_number = current_arg_number; 339 still_processing_args = ON; 340 341 do while (still_processing_args); 342 call ssu_$arg_ptr (sci_ptr, current_arg_number, arg_ptr, arg_length); 343 344 if arg = "-column_delimiter" | arg = "-cdm" | arg = "-delimiter" | arg = "-dm" 345 | arg = "-row_delimiter" | arg = "-rdm" 346 then do; 347 if current_arg_number + 1 > number_of_args_supplied 348 then call ssu_$abort_line (sci_ptr, error_table_$noarg, 349 "^/^a must be followed by a delimiter.", arg); 350 else; 351 current_arg_number = current_arg_number + 1; 352 if arg = "-row_delimiter" | arg = "-rdm" 353 then row_delimiter_flag = ON; 354 else row_delimiter_flag = OFF; 355 call ssu_$arg_ptr (sci_ptr, current_arg_number, arg_ptr, arg_length); 356 if arg_length ^= 1 357 then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, 358 "The specified delimiter ""^a"" is not a single ascii character.", arg); 359 else; 360 if row_delimiter_flag 361 then data_file_info.row_delimiter = arg; 362 else data_file_info.column_delimiter = arg; 363 data_file_info.flags.process_quotes = OFF; 364 data_file_info.flags.process_whitespace = OFF; 365 end; 366 else if arg = "-input_file" | arg = "-if" | arg = "-file" | arg = "-f" 367 then do; 368 if get_values_mode = GET_VALUES_FROM_REQUEST_LINE 369 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 370 "^/^a and column values can't both be supplied.", arg); 371 if current_arg_number + 1 > number_of_args_supplied 372 then call ssu_$abort_line (sci_ptr, error_table_$noarg, 373 "^/^a must be followed by a pathname.", arg); 374 else; 375 current_arg_number = current_arg_number + 1; 376 call ssu_$arg_ptr (sci_ptr, current_arg_number, arg_ptr, arg_length); 377 data_file_info.output_file_pathname = arg; 378 get_values_mode = GET_VALUES_FROM_FILE; 379 brief_mode = OFF; 380 end; 381 else if arg = "-progress" | arg = "-pg" 382 then do; 383 data_file_info.flags.tracing = ON; 384 if current_arg_number + 1 <= number_of_args_supplied 385 then do; 386 call ssu_$arg_ptr (sci_ptr, current_arg_number + 1, arg_ptr, arg_length); 387 if verify (arg, "01234546789") = 0 388 then do; 389 data_file_info.trace_every_n_tuples = convert (data_file_info.trace_every_n_tuples, arg); 390 current_arg_number = current_arg_number + 1; 391 end; 392 end; 393 end; 394 else if arg = "-no_progress" | arg = "-npg" 395 then do; 396 data_file_info.flags.tracing = OFF; 397 data_file_info.trace_every_n_tuples = linus_data_$trace_every_n_tuples; 398 end; 399 else if arg = "-brief" | arg = "-bf" 400 then brief_mode = ON; 401 else if arg = "-long" | arg = "-lg" 402 then brief_mode = OFF; 403 else if arg = "-warning" | arg = "-warn" 404 then print_warning_messages = ON; 405 else if arg = "-no_warning" | arg = "-no_warn" 406 then print_warning_messages = OFF; 407 else do; 408 if arg_length > 0 409 then if substr (arg, 1, 1) = "-" 410 then code = error_table_$badopt; 411 else code = error_table_$bad_arg; 412 else code = error_table_$bad_arg; 413 call ssu_$abort_line (sci_ptr, code, "^a", arg); 414 end; 415 416 current_arg_number = current_arg_number + 1; 417 if current_arg_number > number_of_args_supplied 418 then still_processing_args = OFF; 419 end; 420 421 return; 422 423 end process_args; 424 425 store_the_row: proc; 426 427 dcl str_code fixed bin (35); 428 dcl str_error_occured bit (1) aligned; 429 430 if ^brief_mode 431 then call verify_user_values; 432 433 packed_buffer_ptr = buffer_ptr; 434 call linus_table$store_row (lcb_ptr, table_ip, packed_buffer_ptr, str_code); 435 if str_code ^= 0 436 then do; 437 call write_partial_file_to_pdir (number_of_columns, TRUNCATE, str_error_occured); 438 if ^str_error_occured 439 then call ssu_$abort_line (sci_ptr, str_code, 440 PARTIAL_FILE_STORE_MESSAGE, FILE_NAME_FOR_FAILED_STORE, 441 (data_file_info.column_delimiter = BLANK), data_file_info.column_delimiter); 442 else call ssu_$abort_line (sci_ptr, str_code); 443 end; 444 445 return; 446 447 end store_the_row; 448 449 terminate: proc; 450 451 if buffer_has_been_allocated 452 then do; 453 free buffer; 454 buffer_has_been_allocated = OFF; 455 end; 456 457 if table_info_has_been_allocated 458 then do; 459 store_ap = table_info.store_args_ptr; 460 free store_args; 461 free table_info; 462 table_info_has_been_allocated = OFF; 463 end; 464 465 if file_parsing_has_been_started 466 then do; 467 call linus_parse_file$stop (lcb_ptr, addr (data_file_info), 468 table_ip, cleanup_signalled, code); 469 file_parsing_has_been_started = OFF; 470 end; 471 472 return; 473 474 end terminate; 475 476 verify_user_values: proc; 477 478 dcl vuv_error_occured bit (1) aligned; 479 dcl vuv_loop fixed bin; 480 dcl vuv_user_wants_to_continue_parm bit (1) aligned; 481 482 call ioa_ (""); 483 do vuv_loop = 1 to number_of_columns; 484 call ioa_$nnl ("^a =^x", table_info.columns.column_name (vuv_loop)); 485 call ioa_ ("^a", substr (buffer, 486 table_info.columns.column_index (vuv_loop), 487 table_info.columns.column_length (vuv_loop))); 488 end; 489 490 call linus_query$yes_no (lcb_ptr, vuv_user_wants_to_continue_parm, 491 NEWLINE || "OK? "); 492 493 if ^vuv_user_wants_to_continue_parm 494 then do; 495 call write_partial_file_to_pdir (number_of_columns, TRUNCATE, vuv_error_occured); 496 if ^vuv_error_occured 497 then call ssu_$abort_line (sci_ptr, ssu_et_$program_interrupt, 498 PARTIAL_FILE_STORE_MESSAGE, FILE_NAME_FOR_FAILED_STORE, 499 (data_file_info.column_delimiter = BLANK), data_file_info.column_delimiter); 500 else call ssu_$abort_line (sci_ptr, 0); 501 return; 502 end; 503 504 return; 505 506 end verify_user_values; 507 508 write_partial_file_to_pdir: proc ( 509 510 wpftp_number_of_columns_written_parm, /* input: how many we sucessfully got */ 511 wpftp_truncate_parm, /* input: on means to truncate file */ 512 wpftp_error_occured_parm /* output: on if error occured */ 513 ); 514 515 dcl wpftp_code fixed bin (35); 516 dcl wpftp_error_occured_parm bit (1) aligned parm; 517 dcl wpftp_loop fixed bin; 518 dcl wpftp_number_of_columns_written_parm fixed bin parm; 519 dcl wpftp_truncate_parm bit (1) aligned parm; 520 521 wpftp_error_occured_parm = ON; 522 switch_name = unique_chars_ ("0"b) || ".linus_store"; 523 if wpftp_truncate_parm 524 then attach_description = "vfile_ " || rtrim (get_pdir_ ()) || ">linus.store.error"; 525 else attach_description = "vfile_ " || rtrim (get_pdir_ ()) || ">linus.store.error -extend"; 526 527 call iox_$attach_name (switch_name, iocb_ptr, attach_description, null (), wpftp_code); 528 if wpftp_code ^= 0 529 then return; 530 531 call iox_$open (iocb_ptr, Stream_output, "0"b, wpftp_code); 532 if wpftp_code ^= 0 533 then return; 534 535 do wpftp_loop = 1 to wpftp_number_of_columns_written_parm; 536 call iox_$put_chars (iocb_ptr, 537 addr (buffer_as_an_array (table_info.columns.column_index (wpftp_loop))), 538 table_info.columns.column_length (wpftp_loop), wpftp_code); 539 call iox_$put_chars (iocb_ptr, addr (data_file_info.column_delimiter), length (data_file_info.column_delimiter), wpftp_code); 540 end; 541 542 call iox_$put_chars (iocb_ptr, addr (NEWLINE), length (NEWLINE), wpftp_code); 543 call iox_$close (iocb_ptr, wpftp_code); 544 call iox_$detach_iocb (iocb_ptr, wpftp_code); 545 call iox_$destroy_iocb (iocb_ptr, wpftp_code); 546 wpftp_error_occured_parm = OFF; 547 548 return; 549 550 end write_partial_file_to_pdir; 551 552 dcl BLANK char (1) static internal options (constant) init (" "); 553 554 dcl EXTEND bit (1) aligned static internal options (constant) init ("0"b); 555 556 dcl FILE_NAME_FOR_FAILED_STORE char (22) static internal options (constant) init ("[pd]>linus.store.error"); 557 558 dcl GET_VALUES_FROM_FILE fixed bin static internal options (constant) init (1); 559 dcl GET_VALUES_FROM_REQUEST_LINE fixed bin static internal options (constant) init (2); 560 dcl GET_VALUES_FROM_USER fixed bin static internal options (constant) init (3); 561 562 dcl QUESTION_MARK char (1) static internal options (constant) init ("?"); 563 564 dcl MAXIMUM_MRDS_ATTRIBUTE_LENGTH fixed bin static internal options (constant) init (4096); 565 566 dcl NEWLINE char (1) static internal options (constant) init (" 567 "); 568 569 dcl OFF bit (1) aligned static internal options (constant) init ("0"b); 570 dcl ON bit (1) aligned static internal options (constant) init ("1"b); 571 dcl PARTIAL_FILE_STORE_MESSAGE char (92) static internal options (constant) init ( 572 "^/The supplied values are in ^a with a ^[blank^;""^a""^]^/separating each column value."); 573 574 dcl TRUNCATE bit (1) aligned static internal options (constant) init ("1"b); 575 576 dcl addr builtin; 577 dcl answer_buffer char (MAXIMUM_MRDS_ATTRIBUTE_LENGTH) varying; 578 dcl arg char (arg_length) based (arg_ptr); 579 dcl arg_length fixed bin (21); 580 dcl arg_ptr ptr; 581 dcl attach_description char (256); 582 583 dcl brief_mode bit (1) aligned; 584 dcl buffer char (buffer_length) based (buffer_ptr); 585 dcl buffer_as_an_array (buffer_length) char (1) based (buffer_ptr); 586 dcl buffer_has_been_allocated bit (1) aligned; 587 dcl buffer_length fixed bin (21); 588 dcl buffer_ptr ptr; 589 590 dcl cleanup condition; 591 dcl cleanup_signalled bit (1) aligned; 592 dcl code fixed bin (35); 593 dcl current_arg_number fixed bin; 594 595 dcl error_table_$bad_arg fixed bin(35) ext static; 596 dcl error_table_$badopt fixed bin(35) ext static; 597 dcl error_table_$end_of_info fixed bin(35) ext static; 598 dcl error_table_$fatal_error fixed bin(35) ext static; 599 dcl error_table_$inconsistent fixed bin(35) ext static; 600 dcl error_table_$noarg fixed bin(35) ext static; 601 602 dcl file_parsing_has_been_started bit (1) aligned; 603 dcl first_control_arg_has_been_found bit (1) aligned; 604 dcl first_control_arg_number fixed bin; 605 dcl fixed builtin; 606 607 dcl get_pdir_ entry() returns(char(168)); 608 dcl get_values_mode fixed bin; 609 dcl get_values_procedure (3) entry init ( 610 get_values_from_file, 611 get_values_from_request_line, 612 get_values_from_user 613 ); 614 615 dcl ioa_ entry() options(variable); 616 dcl ioa_$nnl entry() options(variable); 617 dcl iocb_ptr ptr; 618 619 dcl mrds_error_$conversion_condition fixed bin(35) ext static; 620 dcl mrds_error_$duplicate_key fixed bin(35) ext static; 621 622 dcl length builtin; 623 dcl linus_data_$trace_every_n_tuples fixed bin (35) external static; 624 dcl linus_query entry (ptr, char(*) var, char(*) var); 625 dcl linus_query$yes_no entry (ptr, bit(1) aligned, char(*) var); 626 dcl linus_parse_file$get_row entry (ptr, ptr, ptr, ptr, fixed bin(35)); 627 dcl linus_parse_file$start entry (ptr, ptr, ptr, fixed bin(35)); 628 dcl linus_parse_file$stop entry (ptr, ptr, ptr, bit (1) aligned, fixed bin(35)); 629 dcl linus_table$info_for_store entry (ptr, char(30), ptr, ptr, fixed bin(35)); 630 dcl linus_table$store_row entry (ptr, ptr, ptr unal, fixed bin(35)); 631 632 dcl packed_buffer_ptr ptr unaligned; 633 dcl print_warning_messages bit (1) aligned; 634 635 dcl moved_into_the_control_args bit (1) aligned; 636 dcl moved_into_the_values bit (1) aligned; 637 638 dcl null builtin; 639 dcl number_of_args_supplied fixed bin; 640 dcl number_of_columns fixed bin; 641 dcl number_of_tuples_stored fixed bin (35); 642 643 dcl question_buffer char (80) varying; 644 645 dcl rel builtin; 646 dcl row_delimiter_flag bit (1) aligned; 647 dcl rtrim builtin; 648 649 dcl sci_ptr ptr; 650 dcl ssu_$abort_line entry() options(variable); 651 dcl ssu_$arg_count entry (ptr, fixed bin); 652 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin(21)); 653 dcl ssu_$print_message entry() options(variable); 654 dcl ssu_et_$program_interrupt fixed bin(35) ext static; 655 dcl still_processing_args bit (1) aligned; 656 dcl substr builtin; 657 dcl switch_name char (32); 658 dcl sys_info$max_seg_size fixed bin(35) ext static; 659 660 dcl table_info_has_been_allocated bit (1) aligned; 661 dcl table_name char (30); 662 663 dcl unique_chars_ entry (bit(*)) returns(char(15)); 664 dcl unspec builtin; 665 666 dcl verify builtin; 667 668 dcl work_area area (sys_info$max_seg_size) based (work_area_ptr); 669 dcl work_area_ptr ptr; 670 1 1 /* BEGIN INCLUDE FILE ... arg_descriptor.incl.pl1 1 2* 1 3* James R. Davis 1 Mar 79 */ 1 4 /* Modified June 83 JMAthane for extended arg descriptor format */ 1 5 1 6 dcl 1 arg_descriptor based (arg_descriptor_ptr) aligned, 1 7 2 flag bit (1) unal, 1 8 2 type fixed bin (6) unsigned unal, 1 9 2 packed bit (1) unal, 1 10 2 number_dims fixed bin (4) unsigned unal, 1 11 2 size fixed bin (24) unsigned unal; 1 12 1 13 dcl 1 fixed_arg_descriptor based (arg_descriptor_ptr) aligned, 1 14 2 flag bit (1) unal, 1 15 2 type fixed bin (6) unsigned unal, 1 16 2 packed bit (1) unal, 1 17 2 number_dims fixed bin (4) unsigned unal, 1 18 2 scale fixed bin (11) unal, 1 19 2 precision fixed bin (12) unsigned unal; 1 20 1 21 dcl 1 extended_arg_descriptor based (arg_descriptor_ptr) aligned, 1 22 2 flag bit (1) unal, /* = "1"b */ 1 23 2 type fixed bin (6) unsigned unal, /* = 58 */ 1 24 2 packed bit (1) unal, /* significant if number_dims ^= 0 */ 1 25 2 number_dims fixed (4) unsigned unal,/* number of variable dimensions */ 1 26 2 size bit (24) unal, 1 27 2 dims (0 refer (extended_arg_descriptor.number_dims)), /* part referenced by called generated code */ 1 28 3 low fixed bin (35), 1 29 3 high fixed bin (35), 1 30 3 multiplier fixed bin (35), /* in bits if packed, in words if not */ 1 31 2 real_type fixed bin (18) unsigned unal, 1 32 2 type_offset fixed bin (18) unsigned unal; /* offset rel to symbol tree to symbol node for type, if any */ 1 33 1 34 dcl arg_descriptor_ptr ptr; 1 35 1 36 dcl extended_arg_type fixed bin init (58); 1 37 1 38 /* END INCLUDE file .... arg_descriptor.incl.pl1 */ 671 672 2 1 /* BEGIN INCLUDE FILE ... arg_list.incl.pl1 2 2* 2 3* James R. Davis 10 May 79 */ 2 4 2 5 2 6 2 7 /****^ HISTORY COMMENTS: 2 8* 1) change(86-05-15,DGHowe), approve(86-05-15,MCR7375), 2 9* audit(86-07-15,Schroth): 2 10* added command_name_arglist declaration to allow the storage of the 2 11* command name given to the command processor 2 12* END HISTORY COMMENTS */ 2 13 2 14 dcl 1 arg_list aligned based, 2 15 2 header, 2 16 3 arg_count fixed bin (17) unsigned unal, 2 17 3 pad1 bit (1) unal, 2 18 3 call_type fixed bin (18) unsigned unal, 2 19 3 desc_count fixed bin (17) unsigned unal, 2 20 3 pad2 bit (19) unal, 2 21 2 arg_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr, 2 22 2 desc_ptrs (arg_list_arg_count refer (arg_list.arg_count)) ptr; 2 23 2 24 2 25 dcl 1 command_name_arglist aligned based, 2 26 2 header, 2 27 3 arg_count fixed bin (17) unsigned unal, 2 28 3 pad1 bit (1) unal, 2 29 3 call_type fixed bin (18) unsigned unal, 2 30 3 desc_count fixed bin (17) unsigned unal, 2 31 3 mbz bit(1) unal, 2 32 3 has_command_name bit(1) unal, 2 33 3 pad2 bit (17) unal, 2 34 2 arg_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 2 35 2 desc_ptrs (arg_list_arg_count refer (command_name_arglist.arg_count)) ptr, 2 36 2 name, 2 37 3 command_name_ptr pointer, 2 38 3 command_name_length fixed bin (21); 2 39 2 40 2 41 2 42 dcl 1 arg_list_with_envptr aligned based, /* used with non-quick int and entry-var calls */ 2 43 2 header, 2 44 3 arg_count fixed bin (17) unsigned unal, 2 45 3 pad1 bit (1) unal, 2 46 3 call_type fixed bin (18) unsigned unal, 2 47 3 desc_count fixed bin (17) unsigned unal, 2 48 3 pad2 bit (19) unal, 2 49 2 arg_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr, 2 50 2 envptr ptr, 2 51 2 desc_ptrs (arg_list_arg_count refer (arg_list_with_envptr.arg_count)) ptr; 2 52 2 53 2 54 dcl ( 2 55 Quick_call_type init (0), 2 56 Interseg_call_type init (4), 2 57 Envptr_supplied_call_type 2 58 init (8) 2 59 ) fixed bin (18) unsigned unal int static options (constant); 2 60 2 61 /* The user must declare arg_list_arg_count - if an adjustable automatic structure 2 62* is being "liked" then arg_list_arg_count may be a parameter, in order to allocate 2 63* an argument list of the proper size in the user's stack 2 64* 2 65**/ 2 66 /* END INCLUDE FILE ... arg_list.incl.pl1 */ 673 674 3 1 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 3 2 3 3 /* Written 05/04/78 by C. D. Tavares */ 3 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 3 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 3 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 3 7 3 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 3 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 3 10 iox_$close entry (pointer, fixed bin (35)), 3 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 3 12 iox_$delete_record entry (pointer, fixed bin (35)), 3 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 3 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 3 15 iox_$err_not_attached entry options (variable), 3 16 iox_$err_not_closed entry options (variable), 3 17 iox_$err_no_operation entry options (variable), 3 18 iox_$err_not_open entry options (variable), 3 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 3 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 3 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 3 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 3 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 3 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 3 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 3 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 3 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 3 28 iox_$propagate entry (pointer), 3 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 3 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 3 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 3 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 3 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 3 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 3 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 3 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 3 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 3 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 3 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 3 40 3 41 dcl (iox_$user_output, 3 42 iox_$user_input, 3 43 iox_$user_io, 3 44 iox_$error_output) external static pointer; 3 45 3 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 675 676 4 1 /* Begin include file ..... iox_modes.incl.pl1 */ 4 2 4 3 /* Written by C. D. Tavares, 03/17/75 */ 4 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 4 5 4 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 4 7 ("stream_input", "stream_output", "stream_input_output", 4 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 4 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 4 10 "direct_input", "direct_output", "direct_update"); 4 11 4 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 4 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 4 14 4 15 dcl (Stream_input initial (1), 4 16 Stream_output initial (2), 4 17 Stream_input_output initial (3), 4 18 Sequential_input initial (4), 4 19 Sequential_output initial (5), 4 20 Sequential_input_output initial (6), 4 21 Sequential_update initial (7), 4 22 Keyed_sequential_input initial (8), 4 23 Keyed_sequential_output initial (9), 4 24 Keyed_sequential_update initial (10), 4 25 Direct_input initial (11), 4 26 Direct_output initial (12), 4 27 Direct_update initial (13)) fixed bin int static options (constant); 4 28 4 29 /* End include file ..... iox_modes.incl.pl1 */ 677 678 5 1 /* BEGIN INCLUDE FILE linus_data_file_info.incl.pl1 5 2* 5 3* Written - Al Dupuis - September 1983 5 4**/ 5 5 5 6 /****^ HISTORY COMMENTS: 5 7* 1) change(88-01-27,Dupuis), approve(88-03-03,MCR7844), 5 8* audit(88-03-14,Blair), install(88-03-15,MR12.2-1036): 5 9* Added the trace_every_n_tuples field and the tracing flag. 5 10* END HISTORY COMMENTS */ 5 11 5 12 /* format: off */ 5 13 5 14 dcl 1 create_columns_map aligned based (create_cm_ptr), 5 15 2 number_of_columns fixed bin, 5 16 2 column_numbers (create_columns_map_init_number_of_columns refer (create_columns_map.number_of_columns)) fixed bin; 5 17 dcl create_columns_map_init_number_of_columns fixed bin; 5 18 dcl create_cm_ptr ptr; 5 19 5 20 dcl 1 data_file_info aligned, 5 21 2 flags, 5 22 3 truncate_file bit (1) unaligned, /* ON means truncate */ 5 23 3 check_values_for_delimiters bit (1) unaligned, /* ON means to check */ 5 24 3 process_quotes bit (1) unaligned, /* ON means process quotes */ 5 25 3 process_whitespace bit (1) unaligned, /* ON means treat all whitespace as one blank */ 5 26 3 last_column_delimiter_is_optional bit (1) unaligned, /* ON means last column delimiter is optional */ 5 27 3 create_new_columns bit (1) unaligned, /* ON means create new columns */ 5 28 3 file_is_opened bit (1) unaligned, /* ON means file is opened */ 5 29 3 file_is_attached bit (1) unaligned, /* ON means file is attached */ 5 30 3 end_of_file_has_been_hit bit (1) unaligned, /* ON means we've already hit EOF */ 5 31 3 tracing bit (1) unaligned, /* ON means we need to give progress reports */ 5 32 3 available bit (26) unaligned, 5 33 2 current_row_number fixed bin (35), /* current row number in table */ 5 34 2 current_line_number fixed bin (35), /* current line number of file */ 5 35 2 current_char_in_buffer fixed bin (35), /* index of where we're about to start */ 5 36 2 current_char_in_previous_buffer fixed bin (35), /* index of where we left off in previous buffer */ 5 37 2 file_buffer_length fixed bin (21), /* length of file buffer in chars */ 5 38 2 trace_every_n_tuples fixed bin (35), /* print a progress report every n */ 5 39 2 create_columns_map_ptr ptr, /* points to create_columns_map structure */ 5 40 2 file_iocb_ptr ptr, /* points to iocb for file */ 5 41 2 file_buffer_ptr ptr, /* points to buffer for file */ 5 42 2 column_delimiter char (1) unaligned, /* a single ascii character */ 5 43 2 row_delimiter char (1) unaligned, /* a single ascii character */ 5 44 2 output_file_pathname char (168) unaligned, /* path of output file */ 5 45 2 entry_name char (32) unaligned, /* dir name where file is located */ 5 46 2 directory_name char (168) unaligned; /* entry name of file */ 5 47 5 48 /* END INCLUDE FILE linus_data_file_info.incl.pl1 */ 679 680 6 1 /* BEGIN INCLUDE FILE linus_lcb.incl.pl1 -- jaw 8/30/77 */ 6 2 6 3 6 4 6 5 /****^ HISTORY COMMENTS: 6 6* 1) change(86-04-23,Dupuis), approve(86-05-23,MCR7188), audit(86-07-23,GWMay), 6 7* install(86-07-29,MR12.0-1106): 6 8* Added general_work_area_ptr and renamed sfr_ptr to 6 9* force_retrieve_scope_ptr. 6 10* END HISTORY COMMENTS */ 6 11 6 12 6 13 /* HISTORY: 6 14* 6 15* 78-09-29 J. C. C. Jagernauth: Modified for MR7.0. 6 16* 6 17* 81-05-11 Rickie E. Brinegar: added security bit and andministrator bit as 6 18* a part of the attribute level control work. 6 19* 6 20* 81-06-17 Rickie E. Brinegar: deleted the sd_ptr as a part of removing the 6 21* scope_data structure from LINUS. LINUS now depends totally on MRDS for 6 22* scope information. 6 23* 6 24* 81-11-11 Rickie E. Brinegar: added the timing bit and three fields for 6 25* retaining various vcpu times to be collected when in timing mode. The 6 26* times to be collected are: LINUS parsing time, LINUS processing time, and 6 27* MRDS processing time. 6 28* 6 29* 82-01-15 DJ Schimke: Added the build_increment and build_start fields as 6 30* part of the line numbering implementation. This allows for possible later 6 31* LINUS control of the build defaults. 6 32* 6 33* 82-03-01 Paul W. Benjamin: Removed linus_prompt_chars_ptr, as that 6 34* information is now retained by ssu_. Removed parse_timer as no longer 6 35* meaningful. Added linus_version. Added iteration bit. Added 6 entry 6 36* variables for ssu_ replaceable procedures. Added actual_input_iocbp. 6 37* 6 38* 82-06-23 Al Dupuis: Added subsystem_control_info_ptr, 6 39* subsystem_invocation_level, and selection_expression_identifier. 6 40* 6 41* 82-08-26 DJ Schimke: Added report_control_info_ptr, and 6 42* table_control_info_ptr. 6 43* 6 44* 82-10-19 DJ Schimke: Added ssu_abort_line. 6 45* 6 46* 83-06-06 Bert Moberg: Added print_search_order (pso) and no_optimize (no_ot) 6 47* 6 48* 83-04-07 DJ Schimke: Added temp_seg_info_ptr. 6 49* 6 50* 83-08-26 Al Dupuis: Added query_temp_segment_ptr. 6 51**/ 6 52 6 53 dcl 1 lcb aligned based (lcb_ptr), /* LINUS control block */ 6 54 2 db_index fixed bin (35), /* index of open data base, or 0 */ 6 55 2 rb_len fixed bin (21), /* length of request buffer */ 6 56 2 lila_count fixed bin (35), /* number of LILA text lines */ 6 57 2 lila_chars fixed bin (35), /* number of LILA source test chars */ 6 58 2 trans_id fixed bin (35), /* used by checkpoint and rollback facilities (MR7.0) */ 6 59 2 lila_fn char (32) unal, /* entry name of lila data file */ 6 60 2 prompt_flag bit (1) unal, /* on if in prompt mode */ 6 61 2 test_flag bit (1) unal, /* on if in test mode */ 6 62 2 new_version bit (1) unal init (1), /* on for new version data base (MR7.0) */ 6 63 2 secured_db bit (1) unal, /* on if the db is in a secure state */ 6 64 2 administrator bit (1) unal, /* on if the user is a db administrator */ 6 65 2 timing_mode bit (1) unal, /* on if timing is to be done */ 6 66 2 iteration bit (1) unal, /* interpret parens as iteration sets */ 6 67 2 pso_flag bit (1) unal, /* add print_search_order to select */ 6 68 2 no_ot_flag bit (1) unal, /* add no_optimize to select */ 6 69 2 reserved bit (27) unal, 6 70 2 liocb_ptr ptr, /* iocb ptr for lila file */ 6 71 2 rb_ptr ptr, /* ptr to request buffer */ 6 72 2 is_ptr ptr, /* iocb ptr for currentinput stream switch */ 6 73 2 cal_ptr ptr, /* ptr to current arg list for invoke (or null) */ 6 74 2 ttn_ptr ptr, /* pointer to table info structure */ 6 75 2 force_retrieve_scope_info_ptr ptr, /* structure pointer to force retrieve scope operation */ 6 76 2 lv_ptr ptr, /* pointer linus variables */ 6 77 2 si_ptr ptr, /* pointer to select_info structure */ 6 78 2 setfi_ptr ptr, /* pointer to set function information */ 6 79 2 sclfi_ptr ptr, /* pointer to user declared scalar fun. names */ 6 80 2 ivs_ptr ptr, /* pointer to stack of invoke iocb pointers */ 6 81 2 lit_ptr ptr, /* pointer to literal pool */ 6 82 2 lvv_ptr ptr, /* pointer to linus variable alloc. pool */ 6 83 2 rd_ptr ptr, /* point to readied files mode information (MR7.0) */ 6 84 2 rt_ptr ptr, /* point to table of relation names and their readied modes 6 85* (MR7.0) */ 6 86 2 actual_input_iocbp ptr, /* ptr to input while in macros */ 6 87 2 lila_promp_chars_ptr ptr, /* pointer to the prompt characters for lila */ 6 88 2 linus_area_ptr ptr, /* LINUS temporary segment pointer */ 6 89 2 lila_area_ptr ptr, /* LILA temporary segment pointer */ 6 90 2 i_o_area_ptr ptr, /* temporary segment pointer used by write, print, create_list */ 6 91 2 rel_array_ptr ptr, /* ptr to array of names rslt info structure 6 92* for current lila expression */ 6 93 2 unused_timer float bin (63), /* future expansion */ 6 94 2 request_time float bin (63), /* How much request time was spent 6 95* in LINUS. (-1 = user has just enabled 6 96* timing, do not report) */ 6 97 2 mrds_time float bin (63), /* How much time was spent in MRDS */ 6 98 2 build_increment fixed bin, /* default increment for build mode */ 6 99 2 build_start fixed bin, /* default start count for build mode */ 6 100 2 linus_version char (4), /* current version of LINUS */ 6 101 2 subsystem_control_info_ptr ptr, /* the same ptr passed by ssu_ to each request procedure */ 6 102 2 subsystem_invocation_level fixed bin, /* identifies this invocation of LINUS */ 6 103 2 selection_expression_identifier fixed bin, /* identifies the current processed selection expression */ 6 104 2 report_control_info_ptr ptr, /* pointer to linus_report_control_info structure */ 6 105 2 table_control_info_ptr ptr, /* pointer to linus_table control structure */ 6 106 2 temp_seg_info_ptr ptr, /* pointer to linus_temp_seg_mgr control structure */ 6 107 2 query_temp_segment_ptr ptr, /* points to temp seg used for manipulating query */ 6 108 2 general_work_area_ptr ptr, /* a freeing area for general use */ 6 109 2 word_pad (6) bit (36) unal, 6 110 /* procedures that will be optionally */ 6 111 /* replaced by the user. Saved so they */ 6 112 /* can be reinstated if desired. */ 6 113 2 ssu_abort_line entry options (variable), 6 114 2 ssu_post_request_line variable entry (ptr), 6 115 2 ssu_pre_request_line variable entry (ptr), 6 116 6 117 2 curr_lit_offset fixed bin (35), /* index of first free bit in lit. pool */ 6 118 2 curr_lv_val_offset fixed bin (35), /* index of first free bit lv. val. pool */ 6 119 2 static_area area (sys_info$max_seg_size - fixed (rel (addr (lcb.static_area))) + 1); 6 120 6 121 dcl lcb_ptr ptr; 6 122 6 123 /* END INCLUDE FILE linus_lcb.incl.pl1 */ 681 682 7 1 /* BEGIN INCLUDE FILE linus_table_info.incl.pl1 -- Dave Schimke 1/5/83 */ 7 2 /* 7 3*09/28/83 Al Dupuis: Added the store_args_ptr variable and the store_args structure. 7 4**/ 7 5 dcl 1 table_info aligned based (table_ip), /* info on displayable table */ 7 6 2 retrieval_identifier fixed bin , /* current retrieval id */ 7 7 2 row_count fixed bin(35), /* number of rows in table */ 7 8 2 column_count fixed bin, /* number of columns in table */ 7 9 2 maximum_column_name_length fixed bin, 7 10 /* largest column name */ 7 11 2 maximum_column_value_length fixed bin, 7 12 /* largest column length */ 7 13 2 row_value_length fixed bin (21), /* length of entire row */ 7 14 /* (sum of column lengths) */ 7 15 2 row_segs_info_ptr ptr init (null), /* ptr to the row segs info */ 7 16 2 store_args_ptr ptr, /* ptr to the arg list for storing rows */ 7 17 2 columns (ti_init_column_count refer (table_info.column_count)), 7 18 /* column info */ 7 19 3 column_name char (69) var, /* column header name */ 7 20 3 column_data_type bit (36), /* original data descriptor */ 7 21 3 column_length fixed bin (21), /* length of column in chars */ 7 22 3 column_index fixed bin (21); /* index of start of column in */ 7 23 /* row value */ 7 24 7 25 dcl 1 row_segs_info aligned based (row_segs_ip), 7 26 2 max_number_of_seg_ptrs fixed bin, 7 27 2 max_number_of_ptrs_per_seg fixed bin(21), 7 28 2 number_of_seg_ptrs fixed bin, 7 29 2 seg_ptr (rsi_init_max_number_of_seg_ptrs refer (row_segs_info. 7 30 max_number_of_seg_ptrs)) ptr unal; 7 31 7 32 dcl 1 row_ptrs aligned based (row_ptrs_p), 7 33 2 number_of_ptrs_this_seg fixed bin(21), 7 34 2 row_value_ptr (row_ptrs.number_of_ptrs_this_seg) ptr unal; 7 35 7 36 dcl row_value char (table_info.row_value_length) based (row_value_p); 7 37 dcl row_value_p ptr unal; /* ptr to the current row value */ 7 38 7 39 dcl row_segs_ip ptr; /* ptr to the seg of ptrs to */ 7 40 /* the arrays of row_value_ptrs */ 7 41 dcl row_ptrs_p ptr; /* ptr to an array of */ 7 42 /* row_value_ptrs */ 7 43 7 44 dcl 1 store_args aligned based (store_ap), 7 45 2 table_name char (30), 7 46 2 error_code fixed bin (35), 7 47 2 number_of_descriptors fixed bin, 7 48 2 header like arg_list.header, 7 49 2 arg_ptrs (arg_list_arg_count refer (store_args.header.arg_count)) ptr, 7 50 2 desc_ptrs (arg_list_arg_count refer (store_args.header.arg_count)) ptr, 7 51 2 argument_list_descriptors (init_number_of_descriptors refer 7 52 (store_args.number_of_descriptors)) like arg_descriptor; 7 53 7 54 dcl init_number_of_descriptors; 7 55 dcl rsi_init_max_number_of_seg_ptrs fixed bin; 7 56 dcl store_ap ptr; 7 57 dcl table_ip ptr; 7 58 dcl ti_init_column_count fixed bin; 7 59 7 60 /* END INCLUDE FILE linus_table_info.incl.pl1 */ 683 684 685 end linus_store; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1115.9 linus_store.pl1 >udd>sm>ds>w>ml>linus_store.pl1 671 1 11/02/83 1945.0 arg_descriptor.incl.pl1 >ldd>incl>arg_descriptor.incl.pl1 673 2 08/05/86 0956.8 arg_list.incl.pl1 >ldd>incl>arg_list.incl.pl1 675 3 05/23/83 1016.6 iox_dcls.incl.pl1 >ldd>incl>iox_dcls.incl.pl1 677 4 02/02/78 1329.7 iox_modes.incl.pl1 >ldd>incl>iox_modes.incl.pl1 679 5 03/17/88 2248.1 linus_data_file_info.incl.pl1 >ldd>incl>linus_data_file_info.incl.pl1 681 6 07/29/86 1248.4 linus_lcb.incl.pl1 >ldd>incl>linus_lcb.incl.pl1 683 7 10/06/83 1319.0 linus_table_info.incl.pl1 >ldd>incl>linus_table_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. BLANK 004507 constant char(1) initial packed unaligned dcl 552 ref 144 156 227 250 250 281 438 496 EXTEND 000111 constant bit(1) initial dcl 554 set ref 152* FILE_NAME_FOR_FAILED_STORE 000031 constant char(22) initial packed unaligned dcl 556 set ref 144* 156* 227* 438* 496* GET_VALUES_FROM_FILE constant fixed bin(17,0) initial dcl 558 ref 378 GET_VALUES_FROM_REQUEST_LINE constant fixed bin(17,0) initial dcl 559 ref 329 368 GET_VALUES_FROM_USER constant fixed bin(17,0) initial dcl 560 ref 313 MAXIMUM_MRDS_ATTRIBUTE_LENGTH internal static fixed bin(17,0) initial dcl 564 ref 577 NEWLINE 000030 constant char(1) initial packed unaligned dcl 566 set ref 282 490 542 542 542 542 OFF constant bit(1) initial dcl 569 ref 103 133 277 284 285 286 287 288 318 319 354 363 364 379 396 401 405 417 454 462 469 546 ON 000027 constant bit(1) initial dcl 570 ref 105 127 129 278 279 280 289 309 312 321 324 325 333 337 339 352 383 399 403 521 PARTIAL_FILE_STORE_MESSAGE 000000 constant char(92) initial packed unaligned dcl 571 set ref 144 156* 227 438* 496* QUESTION_MARK 004506 constant char(1) initial packed unaligned dcl 562 ref 250 Stream_output 000113 constant fixed bin(17,0) initial dcl 4-15 set ref 531* TRUNCATE 000027 constant bit(1) initial dcl 574 set ref 225* 437* 495* addr builtin function dcl 576 ref 122 122 131 131 275 467 467 536 536 539 539 542 542 answer_buffer 000100 automatic varying char(4096) dcl 577 set ref 254* 255 257 257 260 262 arg based char packed unaligned dcl 578 set ref 197* 200 202 303 321 344 344 344 344 344 344 347* 352 352 356* 360 362 366 366 366 366 368* 371* 377 381 381 387 389 394 394 399 399 401 401 403 403 405 405 408 413* arg_count 12 based fixed bin(17,0) level 3 packed packed unsigned unaligned dcl 7-44 ref 460 460 arg_descriptor based structure level 1 dcl 1-6 arg_length 002101 automatic fixed bin(21,0) dcl 579 set ref 194* 195 197 197 200 202 302* 303 320* 321 321 342* 344 344 344 344 344 344 347 347 352 352 355* 356 356 356 360 362 366 366 366 366 368 368 371 371 376* 377 381 381 386* 387 389 394 394 399 399 401 401 403 403 405 405 408 408 413 413 arg_list based structure level 1 dcl 2-14 arg_ptr 002102 automatic pointer dcl 580 set ref 194* 197 200 202 302* 303 320* 321 342* 344 344 344 344 344 344 347 352 352 355* 356 360 362 366 366 366 366 368 371 376* 377 381 381 386* 387 389 394 394 399 399 401 401 403 403 405 405 408 413 attach_description 002104 automatic char(256) packed unaligned dcl 581 set ref 523* 525* 527* brief_mode 002204 automatic bit(1) dcl 583 set ref 284* 379* 399* 401* 430 buffer based char packed unaligned dcl 584 set ref 200* 202* 260* 262* 311 453 485 485 buffer_as_an_array based char(1) array packed unaligned dcl 585 set ref 536 536 buffer_has_been_allocated 002205 automatic bit(1) dcl 586 set ref 285* 312* 451 454* buffer_length 002206 automatic fixed bin(21,0) dcl 587 set ref 200 202 260 262 310* 311 311 453 453 485 485 buffer_ptr 002210 automatic pointer dcl 588 set ref 126 131* 200 202 260 262 311* 433 453 485 485 536 536 cleanup 002212 stack reference condition dcl 590 ref 104 cleanup_signalled 002220 automatic bit(1) dcl 591 set ref 103* 105* 467* code 002221 automatic fixed bin(35,0) dcl 592 set ref 304* 306 306* 408* 411* 412* 413* 467* column_count 2 based fixed bin(17,0) level 2 dcl 7-5 set ref 227* 233* 308 461 column_delimiter 16 002334 automatic char(1) level 2 packed packed unaligned dcl 5-20 set ref 144 144* 156 156* 227 227* 281* 362* 438 438* 496 496* 539 539 539 539 column_index 37 based fixed bin(21,0) array level 3 dcl 7-5 ref 192 252 485 485 536 536 column_length 36 based fixed bin(21,0) array level 3 dcl 7-5 set ref 193 253 485 485 536* column_name 12 based varying char(69) array level 3 dcl 7-5 set ref 197* 250 484* columns 12 based structure array level 2 dcl 7-5 current_arg_number 002222 automatic fixed bin(17,0) dcl 593 set ref 190* 194* 203* 203 205 211 330* 331 335* 338 342* 347 351* 351 355* 371 375* 375 376* 384 386 390* 390 416* 416 417 current_line_number 2 002334 automatic fixed bin(35,0) level 2 dcl 5-20 set ref 144 164 174 current_row_number 1 002334 automatic fixed bin(35,0) level 2 dcl 5-20 set ref 144 164 164 174 data_file_info 002334 automatic structure level 1 dcl 5-20 set ref 122 122 131 131 277* 467 467 error_table_$bad_arg 000010 external static fixed bin(35,0) dcl 595 set ref 356* 411 412 error_table_$badopt 000012 external static fixed bin(35,0) dcl 596 ref 408 error_table_$end_of_info 000014 external static fixed bin(35,0) dcl 597 ref 133 error_table_$fatal_error 000016 external static fixed bin(35,0) dcl 598 set ref 227* 233* error_table_$inconsistent 000020 external static fixed bin(35,0) dcl 599 set ref 368* error_table_$noarg 000022 external static fixed bin(35,0) dcl 600 set ref 293* 347* 371* extended_arg_type 002332 automatic fixed bin(17,0) initial dcl 1-36 set ref 1-36* file_parsing_has_been_started 002223 automatic bit(1) dcl 602 set ref 127* 288* 465 469* first_control_arg_has_been_found 002224 automatic bit(1) dcl 603 set ref 211 286* 337* first_control_arg_number 002225 automatic fixed bin(17,0) dcl 604 set ref 211 338* flags 002334 automatic structure level 2 dcl 5-20 get_pdir_ 000024 constant entry external dcl 607 ref 523 525 get_values_mode 002226 automatic fixed bin(17,0) dcl 608 set ref 110 313* 329* 368 378* get_values_procedure 002230 automatic entry variable initial array dcl 609 set ref 110 609* 609* 609* gvff_code 000100 automatic fixed bin(35,0) dcl 118 set ref 122* 124 124* 131* 133 133 136* 140* 142 144 144 144* 154* 156 156 156* gvff_error_occured 000101 automatic bit(1) dcl 119 set ref 152* 154 gvff_still_storing 000102 automatic bit(1) dcl 120 set ref 129* 130 133* 138 gvfrl_error_occured 000100 automatic bit(1) dcl 185 set ref 225* 227 gvfrl_index 000101 automatic fixed bin(21,0) dcl 186 set ref 192* 200 202 gvfrl_length 000102 automatic fixed bin(21,0) dcl 187 set ref 193* 195 197* 200 200 202 gvfrl_loop 000103 automatic fixed bin(17,0) dcl 188 set ref 191* 192 193 197 205 211* 225* 227* 233* gvfu_index 000100 automatic fixed bin(21,0) dcl 245 set ref 252* 260 262 gvfu_length 000101 automatic fixed bin(21,0) dcl 246 set ref 253* 255 257* 260 260 262 gvfu_loop 000102 automatic fixed bin(17,0) dcl 247 set ref 249* 250 252 253* header 12 based structure level 2 in structure "store_args" dcl 7-44 in procedure "linus_store" header based structure level 2 in structure "arg_list" dcl 2-14 in procedure "linus_store" ioa_ 000026 constant entry external dcl 615 ref 164 174 482 485 ioa_$nnl 000030 constant entry external dcl 616 ref 484 iocb_ptr 002244 automatic pointer dcl 617 set ref 527* 531* 536* 539* 542* 543* 544* 545* iox_$attach_name 000072 constant entry external dcl 3-8 ref 527 iox_$close 000074 constant entry external dcl 3-8 ref 543 iox_$destroy_iocb 000076 constant entry external dcl 3-8 ref 545 iox_$detach_iocb 000100 constant entry external dcl 3-8 ref 544 iox_$open 000102 constant entry external dcl 3-8 ref 531 iox_$put_chars 000104 constant entry external dcl 3-8 ref 536 539 542 last_column_delimiter_is_optional 0(04) 002334 automatic bit(1) level 3 packed packed unaligned dcl 5-20 set ref 280* lcb based structure level 1 dcl 6-53 lcb_ptr 002510 automatic pointer dcl 6-121 set ref 122* 131* 140* 254* 274* 275 304* 434* 467* 490* lcb_ptr_parm parameter pointer dcl 85 ref 78 274 length builtin function dcl 622 ref 255 257 257 539 539 542 542 linus_data_$trace_every_n_tuples 000036 external static fixed bin(35,0) dcl 623 ref 283 397 linus_parse_file$get_row 000044 constant entry external dcl 626 ref 131 linus_parse_file$start 000046 constant entry external dcl 627 ref 122 linus_parse_file$stop 000050 constant entry external dcl 628 ref 467 linus_query 000040 constant entry external dcl 624 ref 254 linus_query$yes_no 000042 constant entry external dcl 625 ref 490 linus_table$info_for_store 000052 constant entry external dcl 629 ref 304 linus_table$store_row 000054 constant entry external dcl 630 ref 140 434 moved_into_the_control_args 002250 automatic bit(1) dcl 635 set ref 319* 321* 333* moved_into_the_values 002251 automatic bit(1) dcl 636 set ref 318* 324* 325* 327 mrds_error_$conversion_condition 000032 external static fixed bin(35,0) dcl 619 ref 144 156 mrds_error_$duplicate_key 000034 external static fixed bin(35,0) dcl 620 ref 144 156 null builtin function dcl 638 ref 527 527 number_of_args_supplied 002252 automatic fixed bin(17,0) dcl 639 set ref 205 292* 293 315 331 347 371 384 417 number_of_columns 002253 automatic fixed bin(17,0) dcl 640 set ref 152* 191 205 211 249 308* 330 437* 483 495* number_of_descriptors 11 based fixed bin(17,0) level 2 dcl 7-44 ref 460 number_of_tuples_stored 002254 automatic fixed bin(35,0) dcl 641 set ref 163* 163 164* 174* 290* output_file_pathname 16(18) 002334 automatic char(168) level 2 packed packed unaligned dcl 5-20 set ref 377* packed_buffer_ptr 002246 automatic pointer packed unaligned dcl 632 set ref 126* 140* 433* 434* print_warning_messages 002247 automatic bit(1) dcl 633 set ref 144 289* 403* 405* process_quotes 0(02) 002334 automatic bit(1) level 3 packed packed unaligned dcl 5-20 set ref 278* 363* process_whitespace 0(03) 002334 automatic bit(1) level 3 packed packed unaligned dcl 5-20 set ref 279* 364* question_buffer 002255 automatic varying char(80) dcl 643 set ref 250* 254* row_delimiter 16(09) 002334 automatic char(1) level 2 packed packed unaligned dcl 5-20 set ref 282* 360* row_delimiter_flag 002302 automatic bit(1) dcl 646 set ref 352* 354* 360 row_value_length 5 based fixed bin(21,0) level 2 dcl 7-5 ref 310 rtrim builtin function dcl 647 ref 523 525 sci_ptr 002304 automatic pointer dcl 649 set ref 124* 136* 144* 154* 156* 194* 197* 227* 233* 257* 273* 292* 293* 302* 306* 320* 342* 347* 355* 356* 368* 371* 376* 386* 413* 438* 442* 496* 500* sci_ptr_parm parameter pointer dcl 84 ref 78 273 ssu_$abort_line 000056 constant entry external dcl 650 ref 124 136 154 156 227 233 293 306 347 356 368 371 413 438 442 496 500 ssu_$arg_count 000060 constant entry external dcl 651 ref 292 ssu_$arg_ptr 000062 constant entry external dcl 652 ref 194 302 320 342 355 376 386 ssu_$print_message 000064 constant entry external dcl 653 ref 144 197 257 ssu_et_$program_interrupt 000066 external static fixed bin(35,0) dcl 654 set ref 496* static_area 144 based area level 2 dcl 6-53 set ref 275 still_processing_args 002306 automatic bit(1) dcl 655 set ref 339* 341 417* store_ap 002512 automatic pointer dcl 7-56 set ref 459* 460 store_args based structure level 1 dcl 7-44 ref 460 store_args_ptr 10 based pointer level 2 dcl 7-5 ref 459 str_code 000100 automatic fixed bin(35,0) dcl 427 set ref 434* 435 438* 442* str_error_occured 000101 automatic bit(1) dcl 428 set ref 437* 438 substr builtin function dcl 656 set ref 200* 200 202* 260* 260 262* 262 321 408 485 485 switch_name 002307 automatic char(32) packed unaligned dcl 657 set ref 522* 527* table_info based structure level 1 dcl 7-5 set ref 461 table_info_has_been_allocated 002317 automatic bit(1) dcl 660 set ref 287* 309* 457 462* table_ip 002514 automatic pointer dcl 7-57 set ref 122* 131* 140* 192 193 197 227 233 250 252 253 304* 308 310 434* 459 461 467* 484 485 485 485 485 536 536 536 table_name 002320 automatic char(30) packed unaligned dcl 661 set ref 303* 304* trace_every_n_tuples 6 002334 automatic fixed bin(35,0) level 2 dcl 5-20 set ref 164 283* 389* 389 397* tracing 0(09) 002334 automatic bit(1) level 3 packed packed unaligned dcl 5-20 set ref 164 174 383* 396* unique_chars_ 000070 constant entry external dcl 663 ref 522 unspec builtin function dcl 664 set ref 277* verify builtin function dcl 666 ref 387 vuv_error_occured 000110 automatic bit(1) dcl 478 set ref 495* 496 vuv_loop 000111 automatic fixed bin(17,0) dcl 479 set ref 483* 484 485 485 485 485* vuv_user_wants_to_continue_parm 000112 automatic bit(1) dcl 480 set ref 490* 493 work_area based area dcl 668 ref 311 work_area_ptr 002330 automatic pointer dcl 669 set ref 275* 304* 311 wpftp_code 000100 automatic fixed bin(35,0) dcl 515 set ref 527* 528 531* 532 536* 539* 542* 543* 544* 545* wpftp_error_occured_parm parameter bit(1) dcl 516 set ref 508 521* 546* wpftp_loop 000101 automatic fixed bin(17,0) dcl 517 set ref 535* 536 536 536* wpftp_number_of_columns_written_parm parameter fixed bin(17,0) dcl 518 ref 508 535 wpftp_truncate_parm parameter bit(1) dcl 519 ref 508 523 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Direct_input internal static fixed bin(17,0) initial dcl 4-15 Direct_output internal static fixed bin(17,0) initial dcl 4-15 Direct_update internal static fixed bin(17,0) initial dcl 4-15 Envptr_supplied_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 2-54 Interseg_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 2-54 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 4-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 4-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 4-15 Quick_call_type internal static fixed bin(18,0) initial packed unsigned unaligned dcl 2-54 Sequential_input internal static fixed bin(17,0) initial dcl 4-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 4-15 Sequential_output internal static fixed bin(17,0) initial dcl 4-15 Sequential_update internal static fixed bin(17,0) initial dcl 4-15 Stream_input internal static fixed bin(17,0) initial dcl 4-15 Stream_input_output internal static fixed bin(17,0) initial dcl 4-15 arg_descriptor_ptr automatic pointer dcl 1-34 arg_list_with_envptr based structure level 1 dcl 2-42 command_name_arglist based structure level 1 dcl 2-25 create_cm_ptr automatic pointer dcl 5-18 create_columns_map based structure level 1 dcl 5-14 create_columns_map_init_number_of_columns automatic fixed bin(17,0) dcl 5-17 extended_arg_descriptor based structure level 1 dcl 1-21 fixed builtin function dcl 605 fixed_arg_descriptor based structure level 1 dcl 1-13 init_number_of_descriptors automatic fixed bin(17,0) dcl 7-54 iox_$attach_loud 000000 constant entry external dcl 3-8 iox_$attach_ptr 000000 constant entry external dcl 3-8 iox_$close_file 000000 constant entry external dcl 3-8 iox_$control 000000 constant entry external dcl 3-8 iox_$delete_record 000000 constant entry external dcl 3-8 iox_$detach 000000 constant entry external dcl 3-8 iox_$err_no_operation 000000 constant entry external dcl 3-8 iox_$err_not_attached 000000 constant entry external dcl 3-8 iox_$err_not_closed 000000 constant entry external dcl 3-8 iox_$err_not_open 000000 constant entry external dcl 3-8 iox_$error_output external static pointer dcl 3-41 iox_$find_iocb 000000 constant entry external dcl 3-8 iox_$find_iocb_n 000000 constant entry external dcl 3-8 iox_$get_chars 000000 constant entry external dcl 3-8 iox_$get_line 000000 constant entry external dcl 3-8 iox_$look_iocb 000000 constant entry external dcl 3-8 iox_$modes 000000 constant entry external dcl 3-8 iox_$move_attach 000000 constant entry external dcl 3-8 iox_$open_file 000000 constant entry external dcl 3-8 iox_$position 000000 constant entry external dcl 3-8 iox_$propagate 000000 constant entry external dcl 3-8 iox_$read_key 000000 constant entry external dcl 3-8 iox_$read_length 000000 constant entry external dcl 3-8 iox_$read_record 000000 constant entry external dcl 3-8 iox_$rewrite_record 000000 constant entry external dcl 3-8 iox_$seek_key 000000 constant entry external dcl 3-8 iox_$user_input external static pointer dcl 3-41 iox_$user_io external static pointer dcl 3-41 iox_$user_output external static pointer dcl 3-41 iox_$write_record 000000 constant entry external dcl 3-8 iox_modes internal static char(24) initial array dcl 4-6 rel builtin function dcl 645 row_ptrs based structure level 1 dcl 7-32 row_ptrs_p automatic pointer dcl 7-41 row_segs_info based structure level 1 dcl 7-25 row_segs_ip automatic pointer dcl 7-39 row_value based char packed unaligned dcl 7-36 row_value_p automatic pointer packed unaligned dcl 7-37 rsi_init_max_number_of_seg_ptrs automatic fixed bin(17,0) dcl 7-55 short_iox_modes internal static char(4) initial array dcl 4-12 sys_info$max_seg_size external static fixed bin(35,0) dcl 658 ti_init_column_count automatic fixed bin(17,0) dcl 7-58 NAMES DECLARED BY EXPLICIT CONTEXT. get_values_from_file 000564 constant entry internal dcl 116 ref 609 get_values_from_request_line 001300 constant entry internal dcl 183 ref 609 get_values_from_user 001636 constant entry internal dcl 243 ref 609 initialize 002041 constant entry internal dcl 271 ref 101 linus_store 000465 constant entry external dcl 78 process_args 002142 constant entry internal dcl 300 ref 109 store_the_row 003163 constant entry internal dcl 425 ref 219 265 terminate 003322 constant entry internal dcl 449 ref 106 112 too_few_values_supplied 001476 constant entry internal dcl 223 ref 205 211 verify_user_values 003416 constant entry internal dcl 476 ref 430 write_partial_file_to_pdir 003667 constant entry internal dcl 508 ref 152 225 437 495 NAMES DECLARED BY CONTEXT OR IMPLICATION. convert builtin function ref 389 mod builtin function ref 164 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5154 5262 4512 5164 Length 5664 4512 106 365 441 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_store 1628 external procedure is an external procedure. on unit on line 104 64 on unit get_values_from_file 170 internal procedure is assigned to an entry variable. get_values_from_request_line 224 internal procedure is assigned to an entry variable. too_few_values_supplied internal procedure shares stack frame of internal procedure get_values_from_request_line. get_values_from_user 124 internal procedure is assigned to an entry variable. initialize internal procedure shares stack frame of external procedure linus_store. process_args internal procedure shares stack frame of external procedure linus_store. store_the_row 176 internal procedure is called by several nonquick procedures. terminate 80 internal procedure is called by several nonquick procedures. verify_user_values internal procedure shares stack frame of internal procedure store_the_row. write_partial_file_to_pdir 128 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME get_values_from_file 000100 gvff_code get_values_from_file 000101 gvff_error_occured get_values_from_file 000102 gvff_still_storing get_values_from_file get_values_from_request_line 000100 gvfrl_error_occured get_values_from_request_line 000101 gvfrl_index get_values_from_request_line 000102 gvfrl_length get_values_from_request_line 000103 gvfrl_loop get_values_from_request_line get_values_from_user 000100 gvfu_index get_values_from_user 000101 gvfu_length get_values_from_user 000102 gvfu_loop get_values_from_user linus_store 000100 answer_buffer linus_store 002101 arg_length linus_store 002102 arg_ptr linus_store 002104 attach_description linus_store 002204 brief_mode linus_store 002205 buffer_has_been_allocated linus_store 002206 buffer_length linus_store 002210 buffer_ptr linus_store 002220 cleanup_signalled linus_store 002221 code linus_store 002222 current_arg_number linus_store 002223 file_parsing_has_been_started linus_store 002224 first_control_arg_has_been_found linus_store 002225 first_control_arg_number linus_store 002226 get_values_mode linus_store 002230 get_values_procedure linus_store 002244 iocb_ptr linus_store 002246 packed_buffer_ptr linus_store 002247 print_warning_messages linus_store 002250 moved_into_the_control_args linus_store 002251 moved_into_the_values linus_store 002252 number_of_args_supplied linus_store 002253 number_of_columns linus_store 002254 number_of_tuples_stored linus_store 002255 question_buffer linus_store 002302 row_delimiter_flag linus_store 002304 sci_ptr linus_store 002306 still_processing_args linus_store 002307 switch_name linus_store 002317 table_info_has_been_allocated linus_store 002320 table_name linus_store 002330 work_area_ptr linus_store 002332 extended_arg_type linus_store 002334 data_file_info linus_store 002510 lcb_ptr linus_store 002512 store_ap linus_store 002514 table_ip linus_store store_the_row 000100 str_code store_the_row 000101 str_error_occured store_the_row 000110 vuv_error_occured verify_user_values 000111 vuv_loop verify_user_values 000112 vuv_user_wants_to_continue_parm verify_user_values write_partial_file_to_pdir 000100 wpftp_code write_partial_file_to_pdir 000101 wpftp_loop write_partial_file_to_pdir THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ent_var call_ext_out_desc call_ext_out call_int_this call_int_other return_mac mdfx3 enable_op shorten_stack ext_entry int_entry any_to_any_truncate_op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_pdir_ ioa_ ioa_$nnl iox_$attach_name iox_$close iox_$destroy_iocb iox_$detach_iocb iox_$open iox_$put_chars linus_parse_file$get_row linus_parse_file$start linus_parse_file$stop linus_query linus_query$yes_no linus_table$info_for_store linus_table$store_row ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$print_message unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$badopt error_table_$end_of_info error_table_$fatal_error error_table_$inconsistent error_table_$noarg linus_data_$trace_every_n_tuples mrds_error_$conversion_condition mrds_error_$duplicate_key ssu_et_$program_interrupt LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 78 000461 609 000472 1 36 000515 101 000517 103 000520 104 000521 105 000535 106 000540 107 000545 109 000546 110 000547 112 000556 114 000562 116 000563 122 000571 124 000611 126 000631 127 000635 129 000637 130 000640 131 000642 133 000665 136 000674 138 000711 140 000713 142 000731 144 000733 152 001035 154 001051 156 001072 161 001142 163 001143 164 001150 172 001226 174 001227 179 001276 183 001277 190 001305 191 001310 192 001317 193 001325 194 001327 195 001345 197 001351 200 001420 201 001430 202 001431 203 001444 205 001445 211 001454 217 001466 219 001470 221 001475 223 001476 225 001477 227 001512 233 001577 237 001634 243 001635 249 001643 250 001653 252 001723 253 001726 254 001730 255 001751 257 001755 260 002012 261 002021 262 002022 263 002031 265 002033 267 002040 271 002041 273 002042 274 002046 275 002051 277 002053 278 002056 279 002060 280 002062 281 002064 282 002066 283 002070 284 002073 285 002074 286 002075 287 002076 288 002077 289 002100 290 002102 292 002103 293 002113 296 002141 300 002142 302 002143 303 002162 304 002167 306 002206 308 002225 309 002230 310 002232 311 002234 312 002243 313 002245 315 002247 318 002253 319 002254 320 002255 321 002274 324 002306 325 002311 327 002313 329 002315 330 002317 331 002322 333 002325 334 002327 335 002330 337 002332 338 002334 339 002335 341 002336 342 002340 344 002355 347 002407 351 002446 352 002447 354 002464 355 002465 356 002502 360 002537 362 002547 363 002554 364 002556 365 002560 366 002561 368 002601 371 002637 375 002676 376 002677 377 002714 378 002721 379 002723 380 002724 381 002725 383 002735 384 002737 386 002743 387 002763 389 002777 390 003007 393 003010 394 003011 396 003021 397 003023 398 003026 399 003027 401 003042 403 003054 405 003067 408 003101 411 003113 412 003117 413 003122 416 003153 417 003154 419 003160 421 003161 425 003162 430 003170 433 003174 434 003200 435 003215 437 003217 438 003233 442 003302 445 003320 449 003321 451 003327 453 003332 454 003337 457 003341 459 003343 460 003346 461 003357 462 003366 465 003370 467 003372 469 003413 472 003415 476 003416 482 003417 483 003430 484 003441 485 003467 488 003522 490 003525 493 003557 495 003562 496 003576 500 003645 501 003664 504 003665 508 003666 521 003674 522 003677 523 003731 525 004006 527 004056 528 004111 531 004113 532 004133 535 004135 536 004145 539 004173 540 004216 542 004220 543 004242 544 004254 545 004266 546 004300 548 004302 ----------------------------------------------------------- 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