COMPILATION LISTING OF SEGMENT edit_proj_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 10/21/92 1137.3 mdt Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1992 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(86-04-23,Martinson), approve(86-04-23,MCR7363), 17* audit(86-04-30,GDixon), install(86-05-01,MR12.0-1050): 18* Fix transfer request to work again when changing requisition or account 19* number. 20* 2) change(92-09-23,Zimmerman), approve(92-09-23,MCR8268), audit(92-10-13,Vu), 21* install(92-10-21,MR12.5-1034): 22* edit_proj changed to allow deletion of project alias from SAT (phx21304) 23* END HISTORY COMMENTS */ 24 25 26 /* format: style2 */ 27 edit_proj_: 28 procedure (EPA_ptr); 29 30 /* Written by T. H. VanVleck in 1973 31* Modified June 1975 by T. Casey to add groups 32* Modified August 1977 by T. Casey to add min_ring and max_ring 33* Modified May 1978 by T. Casey to add pdir_quota. 34* Modified November 1978 by T. Casey for MR7.0 to add new absentee control parameters. 35* Modified July 1979 by J. Bakal to implement the multiple rate structure feature. 36* Modified November 1979 by T. Casey to implement -long and change the default to not -long. 37* Modified Feb 1980 by M. B. Armstrong to make corrections re rate structures. 38* Modified June 1980 by J. N. R. Barnecut to integrate multiple rate structure feature into MR8.0 39* Modified April 1980 by J. N. R. Barnecut to allow reset when changing requistion number or account number. 40* Modified 1984-07-05 BIM to clean up, ready for B2 new fields. 41* Modified 1984-09-14 BIM for bugs in group handling. 42* Modified 1984-10-24 by E. Swenson to allow attributes to be set properly. 43* Modified 1984-12-14 by EJ Sharpe for new audit flags 44* Modified 1985-04-19 by EJ Sharpe to fix checking to always return, report 45* project name before prompting for changes, support matching for 46* project supervisor, fix out-of-bounds error 47**/ 48 dcl code fixed bin (35); 49 dcl printed_projname bit (1) aligned; 50 dcl rs_name char (32); 51 dcl rs_number fixed bin; 52 dcl (set_attr, reset_attr) bit (36); 53 54 55 dcl midnight fixed bin (71); 56 dcl (i, j) fixed bin; 57 dcl (vstr, vstr2) char (200) varying; 58 dcl char_16 char (16); 59 dcl char_32 char (32); 60 dcl (char_100, char_100_2) char (100); 61 dcl (char_500, char_500_2) char (500); 62 dcl sign char (1); 63 dcl fb71 fixed bin (71); 64 dcl ftemp float bin; 65 dcl temp_aim_range (2) bit (72) aligned; 66 dcl temp_audit bit (36) aligned; 67 68 dcl (pp, qp) pointer; /* use in include files */ 69 dcl mgtp pointer; 70 dcl (Nsatep, Nprojfile_p, Nreqfile_p) 71 pointer; 72 dcl EPA_ptr pointer; /* paramter */ 73 74 declare error_table_$bad_conversion 75 fixed bin (35) ext static; 76 77 dcl (satp, satep) ptr; /* hush */ 78 79 dcl 1 Nsate aligned like project based (Nsatep); 80 81 dcl 1 Nprojfile aligned like projfile.projfiletab based (Nprojfile_p); 82 dcl 1 Nreqfile aligned like reqfiletab based (Nreqfile_p); 83 dcl 1 temp_attr unaligned like user_attributes; 84 85 dcl LEGAL char (70) int static options (constant) 86 init 87 /* Legal chars */ ( 88 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'_`^~/-abcdefghijklmnopqrstuvwxyz"); 89 90 dcl (addr, after, before, char, hbound, length, ltrim, null, rtrim, string, substr, unspec, verify) 91 builtin; 92 93 94 /* Entries */ 95 96 dcl com_err_ entry () options (variable); 97 dcl command_query_ entry () options (variable); 98 dcl command_query_$yes_no entry () options (variable); 99 dcl convert_date_to_binary_ 100 entry (char (*), fixed bin (71), fixed bin (35)); 101 dcl convert_date_to_binary_$relative 102 entry (character (*), fixed binary (71), fixed binary (71), fixed binary (35)); 103 dcl convert_access_class_$to_string_range_short 104 entry ((2) bit (72) aligned, character (*), fixed binary (35)); 105 dcl convert_access_class_$from_string_range 106 entry ((2) bit (72) aligned, character (*), fixed binary (35)); 107 dcl convert_access_class_$to_string_range 108 entry ((2) bit (72) aligned, character (*), fixed binary (35)); 109 dcl convert_access_audit_flags_$to_string 110 entry (bit (36) aligned, character (*), fixed binary (35)); 111 dcl convert_access_audit_flags_$from_string 112 entry (character (*), bit (36) aligned, fixed binary (35)); 113 dcl convert_access_audit_flags_$edit_from_string 114 entry (character (*), bit (36) aligned, fixed binary (35)); 115 dcl cu_$arg_list_ptr entry (ptr); 116 dcl cv_float_ entry (character (*), fixed binary (35)) returns (float binary (27)); 117 dcl cv_dec_check_ entry (character (*), fixed binary (35)) returns (fixed binary (35)); 118 dcl date_time_ entry (fixed bin (71), char (*)); 119 dcl datebin_$last_midnight entry (fixed binary (71)); 120 dcl format_attributes_ entry (ptr, char (*) var); 121 dcl ioa_ entry () options (variable); 122 dcl ioa_$rsnnl entry () options (variable); 123 dcl ioa_$general_rs entry (pointer, fixed binary, fixed binary, character (*), fixed binary (21), 124 bit (1) aligned, bit (1) aligned); 125 dcl parse_attributes_ entry (character (*), bit (36), bit (36), fixed binary (35)); 126 127 dcl system_info_$rs_number entry (char (*), fixed bin, fixed bin (35)); 128 dcl system_info_$rs_name entry (fixed bin, char (*), fixed bin (35)); 129 dcl sub_err_ entry () options (variable); 130 1 1 /* BEGIN INCLUDE FILE query_info.incl.pl1 TAC June 1, 1973 */ 1 2 /* Renamed to query_info.incl.pl1 and cp_escape_control added, 08/10/78 WOS */ 1 3 /* version number changed to 4, 08/10/78 WOS */ 1 4 /* Version 5 adds explanation_(ptr len) 05/08/81 S. Herbst */ 1 5 /* Version 6 adds literal_sw, prompt_after_explanation switch 12/15/82 S. Herbst */ 1 6 1 7 dcl 1 query_info aligned, /* argument structure for command_query_ call */ 1 8 2 version fixed bin, /* version of this structure - must be set, see below */ 1 9 2 switches aligned, /* various bit switch values */ 1 10 3 yes_or_no_sw bit (1) unaligned init ("0"b), /* not a yes-or-no question, by default */ 1 11 3 suppress_name_sw bit (1) unaligned init ("0"b), /* do not suppress command name */ 1 12 3 cp_escape_control bit (2) unaligned init ("00"b), /* obey static default value */ 1 13 /* "01" -> invalid, "10" -> don't allow, "11" -> allow */ 1 14 3 suppress_spacing bit (1) unaligned init ("0"b), /* whether to print extra spacing */ 1 15 3 literal_sw bit (1) unaligned init ("0"b), /* ON => do not strip leading/trailing white space */ 1 16 3 prompt_after_explanation bit (1) unaligned init ("0"b), /* ON => repeat question after explanation */ 1 17 3 padding bit (29) unaligned init (""b), /* pads it out to t word */ 1 18 2 status_code fixed bin (35) init (0), /* query not prompted by any error, by default */ 1 19 2 query_code fixed bin (35) init (0), /* currently has no meaning */ 1 20 1 21 /* Limit of data defined for version 2 */ 1 22 1 23 2 question_iocbp ptr init (null ()), /* IO switch to write question */ 1 24 2 answer_iocbp ptr init (null ()), /* IO switch to read answer */ 1 25 2 repeat_time fixed bin (71) init (0), /* repeat question every N seconds if no answer */ 1 26 /* minimum of 30 seconds required for repeat */ 1 27 /* otherwise, no repeat will occur */ 1 28 /* Limit of data defined for version 4 */ 1 29 1 30 2 explanation_ptr ptr init (null ()), /* explanation of question to be printed if */ 1 31 2 explanation_len fixed bin (21) init (0); /* user answers "?" (disabled if ptr=null or len=0) */ 1 32 1 33 dcl query_info_version_3 fixed bin int static options (constant) init (3); 1 34 dcl query_info_version_4 fixed bin int static options (constant) init (4); 1 35 dcl query_info_version_5 fixed bin int static options (constant) init (5); 1 36 dcl query_info_version_6 fixed bin int static options (constant) init (6); /* the current version number */ 1 37 1 38 /* END INCLUDE FILE query_info.incl.pl1 */ 131 2 1 /* BEGIN INCLUDE FILE sub_err_flags.incl.pl1 BIM 11/81 */ 2 2 /* format: style3 */ 2 3 2 4 /* These constants are to be used for the flags argument of sub_err_ */ 2 5 /* They are just "string (condition_info_header.action_flags)" */ 2 6 2 7 declare ( 2 8 ACTION_CAN_RESTART init (""b), 2 9 ACTION_CANT_RESTART init ("1"b), 2 10 ACTION_DEFAULT_RESTART 2 11 init ("01"b), 2 12 ACTION_QUIET_RESTART 2 13 init ("001"b), 2 14 ACTION_SUPPORT_SIGNAL 2 15 init ("0001"b) 2 16 ) bit (36) aligned internal static options (constant); 2 17 2 18 /* End include file */ 132 3 1 /* Begin include file edit_proj_arguments_.incl.pl1 BIM 1984-08-27 */ 3 2 /* format: style3 */ 3 3 /* Modified 1984-09-14 BIM to pass in mgt_ptr */ 3 4 3 5 /**** This data structure is passed to edit_proj_ (and edit_proj_$review) 3 6* to inform if of the desired action. */ 3 7 3 8 declare edit_proj_arg_ptr pointer; 3 9 declare 1 edit_proj_arg aligned based (edit_proj_arg_ptr), 3 10 2 version char (8) aligned, 3 11 2 caller char (32) unaligned, 3 12 2 seg_pointers aligned, 3 13 3 ( 3 14 satep, /* SAT entry (project) */ 3 15 projfile_ep, /* projfile entry */ 3 16 reqfile_ep, /* reqfile entry */ 3 17 mgtp /* entire MGT */ 3 18 ) pointer, 3 19 2 flags aligned, 3 20 3 all bit (1) unaligned, /* prompt for all values */ 3 21 3 long bit (1) unaligned, /* speak up when changing one */ 3 22 3 report_project_name 3 23 bit (1) unaligned, /* include name of project in speech */ 3 24 3 match bit (1) unaligned, /* replace one of a list with another */ 3 25 3 brief_match bit (1) unaligned, /* do not complain if match fails */ 3 26 2 changes aligned, 3 27 3 anything bit (1) unaligned, /* any field changed */ 3 28 3 acls bit (1) unaligned, /* acls need to be recalculated */ 3 29 3 alias bit (1) unaligned, 3 30 3 seg_quota bit (1) unaligned, 3 31 3 dir_quota bit (1) unaligned, 3 32 2 value_index fixed bin, /* keyword */ 3 33 2 new_value aligned, 3 34 3 ptr pointer, 3 35 3 length fixed bin (21), 3 36 2 match_value aligned, 3 37 3 ptr pointer, 3 38 3 length fixed bin (21); 3 39 3 40 declare new_value_string char (edit_proj_arg.new_value.length) based (edit_proj_arg.new_value.ptr); 3 41 declare match_value_string char (edit_proj_arg.match_value.length) based (edit_proj_arg.match_value.ptr); 3 42 3 43 declare EDIT_PROJ_ARGS_V_2 char (8) init ("epagv002") int static options (constant); 3 44 3 45 /* End include file edit_proj_arguments_.incl.pl1 */ 133 4 1 /* Begin include file edit_proj_keywords_.incl.pl1 BIM 1984-08-27 */ 4 2 /* format: style3 */ 4 3 4 4 dcl PROJ_KEY_NAMES (57) char (32) aligned int static options (constant) init ( 4 5 /** names of keywords */ 4 6 "title", /* 1 */ 4 7 "investigator", /* 2 */ 4 8 "investigator_address", /* 3 */ 4 9 "supervisor", /* 4 */ 4 10 "supervisor_address", /* 5 */ 4 11 "supervisor_phone", /* 6 */ 4 12 "account", /* 7 */ 4 13 "requisition", /* 8 */ 4 14 "requisition_amount", /* 9 */ 4 15 "cutoff_date", /* 10 */ 4 16 "billing_name", /* 11 */ 4 17 "billing_address", /* 12 */ 4 18 "group", /* 13 */ 4 19 "attributes", /* 14 */ 4 20 "grace", /* 15 */ 4 21 "administrator", /* 16 */ 4 22 "quota", /* 17 */ 4 23 "alias", /* 18 */ 4 24 "groups", /* 19 */ 4 25 "min_ring", /* 20 */ 4 26 "max_ring", /* 21 */ 4 27 "pdir_quota", /* 22 */ 4 28 "max_foreground", /* 23 */ 4 29 "max_background", /* 24 */ 4 30 "abs_foreground_cpu_limit", /* 25 */ 4 31 "rate_structure", /* 26 */ 4 32 "dir_quota", /* 27 */ 4 33 "authorization", /* 28 */ 4 34 "audit", /* 29 */ 4 35 /* Short names start here */ 4 36 "t", /* 1 */ 4 37 "inv", /* 2 */ 4 38 "inv_addr", /* 3 */ 4 39 "sup", /* 4 */ 4 40 "sup_addr", /* 5 */ 4 41 "sup_phone", /* 6 */ 4 42 "acct", /* 7 */ 4 43 "req", /* 8 */ 4 44 "amt", /* 9 */ 4 45 "cutoff", /* 10 */ 4 46 "billto", /* 11 */ 4 47 "billat", /* 12 */ 4 48 "grp", /* 13 */ 4 49 "attr", /* 14 */ 4 50 "gr", /* 15 */ 4 51 "admin", /* 16 */ 4 52 "q", /* 17 */ 4 53 "aka", /* 18 */ 4 54 "grps", /* 19 */ 4 55 "min", /* 20 */ 4 56 "max", /* 21 */ 4 57 "pdq", /* 22 */ 4 58 "maxfg", /* 23 */ 4 59 "maxbg", /* 24 */ 4 60 "absfgcpulim", /* 25 */ 4 61 "rs", /* 26 */ 4 62 "dq", /* 27 */ 4 63 "auth"); /* 28 */ 4 64 4 65 /* Note -- no short name for audit */ 4 66 4 67 4 68 dcl PROJ_KEY_VALUES (57) fixed bin int static options (constant) 4 69 init (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 4 70 25, 26, 27, 28, 29, /* long names */ 4 71 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 4 72 26, 27, 28); /* short names */ 4 73 4 74 dcl PROJ_KEY_ALL_ORDER (29) fixed bin int static options (constant) init ( 4 75 /** order to query when querying all */ 4 76 1, /* title */ 4 77 2, /* inv */ 4 78 3, /* inv_addr */ 4 79 4, /* sup */ 4 80 5, /* sup_addr */ 4 81 6, /* sup_phone */ 4 82 7, /* account */ 4 83 8, /* req */ 4 84 9, /* req_amt */ 4 85 10, /* cutoff */ 4 86 11, /* billing name */ 4 87 12, /* billing_addr */ 4 88 18, /* alias */ 4 89 16, /* administrator */ 4 90 25, /* abs-max-fg-cpu */ 4 91 28, /* auth */ 4 92 29, /* audit */ 4 93 17, /* quota */ 4 94 27, /* dir_quota */ 4 95 26, /* rate str */ 4 96 13, /* group */ 4 97 19, /* groups */ 4 98 14, /* attributes */ 4 99 15, /* grace */ 4 100 20, /* min ring */ 4 101 21, /* max_ring */ 4 102 22, /* pdir_quota */ 4 103 23, /* max_fg */ 4 104 24 /* max_bg */); 4 105 4 106 declare PROJ_KEYS_MATCH (2) fixed bin int static options (constant) init ( 4 107 /*** These can take the syntax: 4 108* edit_proj Project KEY OLD_VALUE NEW_VALUE 4 109* To match and replace OLD_VALUE ***/ 4 110 16, /** admin */ 4 111 19 /** groups */ 4 112 ); 4 113 4 114 /* End include file edit_proj_keywords_.incl.pl1 */ 134 5 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 5 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 5 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 5 8* attribute switches. 5 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 5 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 5 12* be deleted. 5 13* B) Add constants identifying attributes that can be changed by user at 5 14* login, etc. 5 15* END HISTORY COMMENTS */ 5 16 5 17 5 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 5 19 5 20 /* format: style4 */ 5 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 5 22 (2 administrator bit (1), /* 1 system administrator privileges */ 5 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 5 24 2 nobump bit (1), /* 2 user cannot be bumped */ 5 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 5 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 5 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 5 28* . of same project (distinct from "nobump") */ 5 29 2 nolist bit (1), /* 7 don't list user on "who" */ 5 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 5 31 2 multip bit (1), /* 9 user may have several processes */ 5 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 5 33 2 brief bit (1), /* 11 no login or logout message */ 5 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 5 35 2 vhomedir bit (1), /* 13 user may change homedir */ 5 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 5 37 2 sb_ok bit (1), /* 15 user may be standby */ 5 38 2 pm_ok bit (1), /* 16 user may be primary */ 5 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 5 40 2 daemon bit (1), /* 18 user may login as daemon */ 5 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 5 42 2 no_warning bit (1), /* 20 no warning message */ 5 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 5 44* . in PDT: this user has an individual load control group */ 5 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 5 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 5 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 5 48 2 pad bit (12)) unaligned; 5 49 5 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 5 51 ("none", /* 0 */ 5 52 "administrator", /* 1 */ 5 53 "primary_line", /* 2 */ 5 54 "nobump", /* 3 */ 5 55 "guaranteed_login", /* 4 */ 5 56 "anonymous", /* 5 */ 5 57 "nopreempt", /* 6 */ 5 58 "nolist", /* 7 */ 5 59 "dialok", /* 8 */ 5 60 "multip", /* 9 */ 5 61 "bumping", /* 10 */ 5 62 "brief", /* 11 */ 5 63 "vinitproc", /* 12 */ 5 64 "vhomedir", /* 13 */ 5 65 "nostartup", /* 14 */ 5 66 "no_secondary", /* 15 */ 5 67 "no_prime", /* 16 */ 5 68 "no_eo", /* 17 */ 5 69 "daemon", /* 18 */ 5 70 "", /* 19 vdim OBSOLETE */ 5 71 "no_warning", /* 20 */ 5 72 "igroup", /* 21 */ 5 73 "save_pdir", /* 22 */ 5 74 "disconnect_ok", /* 23 */ 5 75 "save_on_disconnect"); /* 24 */ 5 76 5 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 5 78 ("null", /* 0 */ 5 79 "admin", /* 1 */ 5 80 "", "", /* 2 - 3 */ 5 81 "guar", /* 4 */ 5 82 "anon", /* 5 */ 5 83 "", "", /* 6 - 7 */ 5 84 "dial", /* 8 */ 5 85 "multi_login", /* 9 */ 5 86 "preempting", /* 10 */ 5 87 "", /* 11 */ 5 88 "v_process_overseer", /* 12 */ 5 89 "v_home_dir", /* 13 */ 5 90 "no_start_up", /* 14 */ 5 91 "no_sec", /* 15 */ 5 92 "no_primary", /* 16 */ 5 93 "no_edit_only", /* 17 */ 5 94 "op_login", /* 18 */ 5 95 "", /* 19 */ 5 96 "nowarn", /* 20 */ 5 97 "", "", "", /* 21 - 23 */ 5 98 "save"); /* 24 */ 5 99 5 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 5 101 options(constant) init("000000000010000000010000000000000000"b); 5 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 5 103 5 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 5 105 options(constant) init("000000000010000000010000000000000000"b); 5 106 /* PDT value for (brief, no_warning) is default */ 5 107 5 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 5 109 options(constant) init("000100000110010000010000000000000000"b); 5 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 5 111 6 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 6 2 6 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 4 /* */ 6 5 /* This include file describes the attributes of an absentee job. It is */ 6 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 6 7 /* and PIT.incl.pl1. */ 6 8 /* */ 6 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 10 6 11 /****^ HISTORY COMMENTS: 6 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 6 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 14* Separated abs_attributes from the request structure 6 15* (abs_message_format.incl.pl1) so that the identical structure could be 6 16* used in the ute structure (user_table_entry.incl.pl1). 6 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 6 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 19* Added ABS_ATTRIBUTE_NAMES array. 6 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 6 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 6 22* Added the no_start_up flag. SCP6367 6 23* END HISTORY COMMENTS */ 6 24 6 25 dcl 1 user_abs_attributes aligned based, 6 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 6 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 6 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 6 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 6 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 6 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 6 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 6 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 6 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 6 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 6 36 2 attributes_pad bit (26) unaligned; 6 37 6 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 6 39 "restartable", 6 40 "user_deferred_until_time", 6 41 "proxy", 6 42 "set_bit_cnt", 6 43 "time_in_gmt", 6 44 "user_deferred_indefinitely", 6 45 "secondary_ok", 6 46 "truncate_absout", 6 47 "restarted", 6 48 "no_start_up"); 6 49 6 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 6 51 5 112 5 113 5 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 135 7 1 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 7 2 7 3 7 4 7 5 7 6 /****^ HISTORY COMMENTS: 7 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 7 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 7 9* Expand comment line of project.state to include the renamed state (state = 7 10* 3). 7 11* END HISTORY COMMENTS */ 7 12 7 13 7 14 7 15 /* Modified 740723 by PG to add AIM info */ 7 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 7 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 7 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 7 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 7 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 7 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 7 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 7 23 7 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 7 25 7 26 SAT_header_lth init (466), /* length in words of SAT header */ 7 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 7 28 7 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 7 30 ) fixed bin internal static options (constant); 7 31 7 32 dcl 1 sat based (satp) aligned, 7 33 8 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 8 2 8 3 /* the "author" items must always be the first ones in the table. The 8 4* module which moves the converted table to the System Control process 8 5* fills in these data items and assumes them to be at the head of the segment 8 6* regardless of the specific table's actual declaration. The variables 8 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 8 8* respectively. For tables installed in multiple processes, these 8 9* are to be used to lock out multiple installations. */ 8 10 8 11 /* Lock should be used as a modification lock. Since, in general, 8 12* entries may not be moved in system tables, even by installations, 8 13* it is sufficient for only installers and programs that change threads 8 14* to set or respect the lock. Simply updating data in an entry 8 15* requires no such protection. 8 16* 8 17* Last_install_time is used by readers of system tables to detect 8 18* installations or other serious modifications. By checking it before 8 19* and after copying a block of data, they can be protected against 8 20* modifications. 8 21* 8 22* Modules that set the lock should save proc_group_id, and then 8 23* put their group id there for the time they hold the lock. 8 24* if they do not actually install the, they should restore the group id. 8 25**/ 8 26 8 27 2 author aligned, /* validation data about table's author */ 8 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 8 29 3 lock bit (36), /* installation lock */ 8 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 8 31 3 update_authorization bit (1) unal, /* update only authorizations */ 8 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 8 33 3 pad bit (33) unaligned, 8 34 3 last_install_time fixed bin (71), 8 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 8 36 3 w_dir char (64), /* author's working directory */ 8 37 8 38 /* END INCLUDE FILE author.incl.pl1 */ 7 34 7 35 2 max_size fixed bin, /* max number of entries table can grow */ 7 36 2 current_size fixed bin, /* current size of table (in entries) */ 7 37 2 version fixed bin, /* version number of table (word 32) */ 7 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 7 39 2 n_projects fixed bin, /* number of entries actually used */ 7 40 2 pad_was_max_users bit (36) aligned, 7 41 2 max_units fixed bin, /* maximum number of login-units per session */ 7 42 2 pad_was_max_prim bit (36) aligned, 7 43 2 uwt_size fixed bin, /* size of User Weight Table */ 7 44 2 uwt (24) aligned, /* User Weight Table */ 7 45 3 initproc char (64) unaligned, /* user's initial procedure */ 7 46 3 units fixed bin, /* weight of initial procedure */ 7 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 7 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 7 49 2 project (3258), /* The SAT entries. 255K segment. */ 7 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 7 51 7 52 7 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 7 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 7 55 2 project_id char (12) unaligned, /* project's name */ 7 56 2 project_dir char (64) unaligned, /* project's directory */ 7 57 2 pdt_ptr pointer, /* pointer to current PDT */ 7 58 2 max_users fixed bin, /* maximum number of users from project */ 7 59 2 n_users fixed bin, /* current number */ 7 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 7 61 2 admin (4) aligned, /* list of project's administrators */ 7 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 7 63 3 pad char (2) unal, 7 64 2 cutoff char (1), /* if project is cut off, why. */ 7 65 2 min_ring fixed bin, /* lowest ring for project */ 7 66 2 max_ring fixed bin, /* highest ring for project */ 7 67 2 alias char (8) unal, /* project alias */ 7 68 2 group char (8) unal, /* default group for this project */ 7 69 2 grace_max fixed bin, /* maximum bump grace */ 7 70 2 audit bit (36), /* audit flags for project */ 7 71 2 project_authorization (2) bit (72), /* authorization of this project */ 7 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 7 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 7 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 7 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 7 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 7 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 7 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 7 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 7 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 7 81 2 satpad1 fixed bin (9) unsigned unaligned, 7 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 7 83 2 chain fixed bin; /* if free entry, chain */ 7 84 7 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 136 9 1 /* BEGIN INCLUDE FILE .. projfile.incl.pl1 */ 9 2 /* Modified by T. Casey April 1976 to change disk_infs (obsolete) to dir_disk_use */ 9 3 /* Modified 1984-07-09 BIM for dir_disk_quota, version */ 9 4 /* Modified 1984-09-14 BIM for reasonable array size */ 9 5 9 6 dcl 1 projfile based (pp) aligned, /* Project history file */ 9 7 2 nproj fixed bin (35), /* number of entries */ 9 8 2 version fixed bin, 9 9 2 projfilexx0 (6) bit (36) aligned, 9 10 2 projfiletab (3000), /* in seg limit */ 9 11 3 id char (12) unal, /* project ID */ 9 12 3 title char (52) unal, /* project title */ 9 13 3 inv char (32) unal, /* name of principal investigator */ 9 14 3 inv_addr char (32) unal, /* address */ 9 15 3 sup char (32) unal, /* name of supervisor */ 9 16 3 sup_addr char (32) unal, /* address */ 9 17 3 sup_phone char (16) unal, /* telephone */ 9 18 3 on fixed bin (71), /* date on */ 9 19 3 off fixed bin (71), /* date off */ 9 20 3 disk_psec fixed bin (71), /* project disk page-seconds */ 9 21 3 disk_quota fixed bin (35), /* project disk quota */ 9 22 3 dir_disk_quota fixed bin (35), /* project dir disk quota */ 9 23 3 disk_use fixed bin (35), /* total segment pages used */ 9 24 3 dir_disk_use fixed bin (35), /* total directory pages used */ 9 25 3 misc_charges float bin, /* manuals, etc */ 9 26 3 n_misc fixed bin, /* number of entries */ 9 27 3 processed fixed bin, /* temp for usage-report */ 9 28 3 pad bit (36) aligned; /* out to even number of words */ 9 29 9 30 dcl loph int static fixed bin (17) options (constant) init (8), /* lth of projfile header */ 9 31 lope int static fixed bin (17) options (constant) init (66); /* lth of projflile entry */ 9 32 9 33 dcl PROJFILE_VERSION fixed bin init (3) int static options (constant); 9 34 9 35 /* END INCLUDE FILE ... projfile.incl.pl1 */ 137 10 1 /* Requisition file declaration */ 10 2 /* Modified BIM 1984-07-10 for unaligned strings */ 10 3 /* Modified BIM 1984-09-14 foor 3000 size-array */ 10 4 10 5 dcl 1 reqfile based (qp) aligned, /* MIT accounting data */ 10 6 2 nacts fixed, 10 7 2 version fixed bin, 10 8 2 pad (6) bit (36) aligned, 10 9 2 reqfiletab (3000), /* one entry per Multics account */ 10 10 /* same size as projfile */ 10 11 3 acctid char (12) unal, /* account id. usually same as Proj */ 10 12 3 mitacct char (12) unal, /* MIT account no. */ 10 13 3 reqno char (12) unal, /* requisition or PO no. */ 10 14 3 qflag char (8), /* class & activity */ 10 15 3 procssd fixed bin, /* temp for usage report */ 10 16 3 qdn fixed bin (71), /* date on for account */ 10 17 3 qdf fixed bin (71), /* date off */ 10 18 3 billing_name char (32) unal, /* where to send bill */ 10 19 3 billing_addr char (32) unal, 10 20 3 chg_mo float bin (63), /* charges this month */ 10 21 3 chg_tr float bin (63), /* charges this req */ 10 22 3 req_amt float bin (63), /* req face value */ 10 23 3 cutoff fixed bin (71); /* term date for req */ 10 24 10 25 dcl loqh int static fixed bin (17) init (8), /* length of reqfile head */ 10 26 loqe int static fixed bin (17) init (40); /* lth of reqfile entry */ 10 27 10 28 declare REQFILE_VERSION fixed bin init (2) int static options (constant); 10 29 10 30 /* End include file reqfile.incl.pl1 */ 138 11 1 /* BEGIN INCLUDE FILE ... mgt.incl.pl1 */ 11 2 11 3 /* Modified May 1975 by T. Casey to add priority scheduler parameters */ 11 4 /* Modified Summer '76 RE Mullen to add deadline parameters */ 11 5 /* Modified by T. Casey, November 1978, to add group parameters: absentee_(max min pct limit). */ 11 6 /* Modified July 1981 by J. Bongiovanni to add max_pct */ 11 7 11 8 /* At login each user process is placed in that load control group specified in either 11 9* the project's SAT entry or the user's PDT entry. This group is remembered 11 10* in the user table entry for that process (ATE, DUTE, AUTE). 11 11* 11 12* MGT groups map each process into a set of processes called a work_class 11 13* as a function of shift and whether or not the process is absentee -- 11 14* also per group limits on the number of group members are given. 11 15* 11 16* The work_class entries in the MGT specify the configuration 11 17* of the hardcore scheduler on a per shift basis. If a work_class has the 11 18* realtime attribute, member processes will be given precisely specified 11 19* response characteristics. If running in deadline_not_percent mode on 11 20* a given shift then members of other work_classes will be given approximate 11 21* response characteristics; otherwise other work_classes will be given 11 22* percentages of whatever cpu time is unused by realtime processes. 11 23* REM */ 11 24 11 25 dcl MGT_version_3 fixed bin int static init (3); /* versions >= 2 contain work class definitions */ 11 26 /* versions >= 3 contain deadline info */ 11 27 11 28 /* the mgt is based on mgtp, which is declared as either static or automatic, in each procedure that uses it */ 11 29 11 30 dcl 1 mgt based (mgtp) aligned, /* the Master Group Table defines load control groups 11 31* and work classes */ 11 32 12 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 12 2 12 3 /* the "author" items must always be the first ones in the table. The 12 4* module which moves the converted table to the System Control process 12 5* fills in these data items and assumes them to be at the head of the segment 12 6* regardless of the specific table's actual declaration. The variables 12 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 12 8* respectively. For tables installed in multiple processes, these 12 9* are to be used to lock out multiple installations. */ 12 10 12 11 /* Lock should be used as a modification lock. Since, in general, 12 12* entries may not be moved in system tables, even by installations, 12 13* it is sufficient for only installers and programs that change threads 12 14* to set or respect the lock. Simply updating data in an entry 12 15* requires no such protection. 12 16* 12 17* Last_install_time is used by readers of system tables to detect 12 18* installations or other serious modifications. By checking it before 12 19* and after copying a block of data, they can be protected against 12 20* modifications. 12 21* 12 22* Modules that set the lock should save proc_group_id, and then 12 23* put their group id there for the time they hold the lock. 12 24* if they do not actually install the, they should restore the group id. 12 25**/ 12 26 12 27 2 author aligned, /* validation data about table's author */ 12 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 12 29 3 lock bit (36), /* installation lock */ 12 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 12 31 3 update_authorization bit (1) unal, /* update only authorizations */ 12 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 12 33 3 pad bit (33) unaligned, 12 34 3 last_install_time fixed bin (71), 12 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 12 36 3 w_dir char (64), /* author's working directory */ 12 37 12 38 /* END INCLUDE FILE author.incl.pl1 */ 11 33 11 34 /* the author structure occupies 29 words */ 11 35 2 max_size fixed bin, /* maximum size of table */ 11 36 2 current_size fixed bin, /* current number of entries */ 11 37 2 total_units fixed bin, /* total units allocated */ 11 38 2 version_indicator char (8), /* = "VERSION " for version 2 and later 11 39* (the first version of the mgt had no version number) */ 11 40 2 version fixed bin, /* version of the mgt (if version_indicator = "VERSION ") */ 11 41 2 switches aligned, 11 42 3 wc_initialized bit (1) unaligned, /* = "1"b if work classes >1 have been defined */ 11 43 3 prio_sked_enabled bit (1) unaligned, /* if this switch is turned off, the priority scheduler will not 11 44* be used by the answering service (all processes will be 11 45* put in work class 1 regardless of what the mgt says) */ 11 46 3 prio_sked_on_tape bit (1) unaligned, /* "1"b if a.s. initialization finds the priority scheduler 11 47* on the system tape */ 11 48 3 deadline_mode (0:7) bit (1) unal, /* 0 => %, 1 => deadlines (per shift) */ 11 49 3 mgt_pad1 bit (25) unaligned, /* rest of the word */ 11 50 2 user_wc_defined (16) bit (1) unaligned, /* current set of defined work classes */ 11 51 2 shift_defined (0:7) bit (1) unaligned, /* which shifts are used at this site */ 11 52 2 mgt_pad2 bit (12) unaligned, /* rest of the word */ 11 53 2 user_wc_min_pct (16) fixed bin, /* current percents for the defined work classes */ 11 54 /* the above variables occupy a total of 24 words */ 11 55 2 mgt_pad3 (11) fixed bin, /* pad the mgt header to 64 words (29 + 24 + 11) */ 11 56 11 57 2 entry (100), /* array of entries */ 11 58 3 fill (32) fixed bin; /* 32 words each */ 11 59 /* the first 16 are work classes; the rest, load control groups */ 11 60 11 61 dcl mgtep ptr; /* both types of mgt entries are based on this pointer */ 11 62 11 63 dcl 1 group based (mgtep) aligned, /* a single entry in the mgt */ 11 64 2 group_id char (8), /* group name */ 11 65 2 max_prim fixed bin, /* maximum number of primary units (-1 is special) */ 11 66 2 n_prim fixed bin, /* current number of primary units */ 11 67 2 n_sec fixed bin, /* current number of secondary units */ 11 68 2 n_eo fixed bin, /* current number of edit-only users */ 11 69 2 absolute_max fixed bin, /* Absolute maximum number of units (prime and sec) */ 11 70 2 minu fixed bin, /* Constant number of units in maxprim */ 11 71 2 num fixed bin, /* Numerator of fraction of maxunits given to maxprim */ 11 72 2 denom fixed bin, /* Denominator. Usually = normal maxunits */ 11 73 2 minamax fixed bin, /* Constant part of abs max */ 11 74 2 num1 fixed bin, /* Numerator of abs max fraction */ 11 75 2 denom1 fixed bin, /* Denominator of abs max fraction */ 11 76 2 int_wc (0:7) fixed bin (17) unaligned, /* interactive work classes, per shift */ 11 77 2 abs_wc (0:7) fixed bin (17) unaligned, /* absentee work classes, per shift */ 11 78 /* used halfwords to avoid using up all the pad - 11 79* we might need it later */ 11 80 2 absentee aligned, /* switches controlling absentee processes in this group */ 11 81 3 allowed bit (1) unaligned, /* if off, absentee users must be moved to another group */ 11 82 3 default_group bit (1) unaligned, /* if on, this is one of the groups they can be moved to */ 11 83 3 default_queue (4) bit (1) unaligned, /* if on, this is the default group for this queue */ 11 84 /* ed_mgt and up_mgt_ enforce one default group per queue */ 11 85 3 mgt_pad4 bit (30) unaligned, /* rest of the word */ 11 86 2 absentee_max fixed bin (17) unal, /* max absentees allowed from this group */ 11 87 2 absentee_min fixed bin (17) unal, /* min absentees allowed from this group */ 11 88 2 absentee_pct fixed bin (17) unal, /* this % of abs_maxu allowed to be occupied by this group */ 11 89 2 absentee_limit fixed bin (17) unal, /* result of applying above 3 parameters to current abs_maxu */ 11 90 2 n_abs fixed bin (17) unal, /* current number of background absentee users */ 11 91 2 mgt_pad5a fixed bin (17) unal, /* rest of the word */ 11 92 2 mgt_pad5 (7) fixed bin; /* pad mgt entry to 32 words */ 11 93 11 94 dcl 1 work_class based (mgtep) aligned, 11 95 2 wc_name char (8), /* overlays group.group_id, but can only be 11 96* one of the strings "1" through "16" */ 11 97 2 switches aligned, 11 98 3 defined (0:7) bit (1) unaligned, /* which shifts this work class is defined on */ 11 99 3 absentee_allowed (0:7) bit (1) unaligned, /* "1"b if absentee jobs allowed in this work class and shift */ 11 100 /* ed_mgt and up_mgt_ enforce consistency between these 11 101* and the group.absentee switches */ 11 102 3 realtime (0:7) bit (1) unaligned, /* "1"b if this work class has realtime deadlines */ 11 103 3 mgt_pad6 bit (12) unaligned, /* rest of word */ 11 104 2 min_pct (0:7) fixed bin, /* percent, on each shift */ 11 105 2 int_response (0:7) fixed bin (17) unal, /* response to interaction(.01sec) */ 11 106 2 int_quantum (0:7) fixed bin (17) unal, /* first time slice after interaction(.01sec) */ 11 107 2 response (0:7) fixed bin (17) unal, /* time between time slices(.01sec) */ 11 108 2 quantum (0:7) fixed bin (17) unal, /* second and following time slices(.01sec) */ 11 109 2 max_pct (0:7) fixed bin (17) unal, /* governed percent on each shift (0=>not governed */ 11 110 2 mgt_pad7 (1) fixed bin; /* pad mgt entry to 32 words */ 11 111 11 112 /* END INCLUDE FILE ... mgt.incl.pl1 */ 139 140 141 142 code = 0; 143 printed_projname = "0"b; 144 145 edit_proj_arg_ptr = EPA_ptr; 146 Nsatep = edit_proj_arg.satep; 147 Nprojfile_p = edit_proj_arg.projfile_ep; 148 Nreqfile_p = edit_proj_arg.reqfile_ep; 149 mgtp = edit_proj_arg.mgtp; 150 151 if edit_proj_arg.all 152 then call process_all_items (); 153 else call process_one_item (edit_proj_arg.value_index, "0"b); 154 /* Don't perform a check, really make the change */ 155 return; 156 157 check: 158 entry (EPA_ptr); 159 edit_proj_arg_ptr = EPA_ptr; 160 Nsatep = edit_proj_arg.satep; 161 Nprojfile_p = edit_proj_arg.projfile_ep; 162 Nreqfile_p = edit_proj_arg.reqfile_ep; 163 mgtp = edit_proj_arg.mgtp; 164 call process_one_item (edit_proj_arg.value_index, "1"b); 165 return; 166 167 168 process_all_items: 169 procedure; 170 171 declare x fixed bin; 172 declare again bit (1) aligned; 173 174 again = "1"b; 175 do while (again); 176 do x = 1 to hbound (PROJ_KEY_ALL_ORDER, 1); 177 call process_one_item (PROJ_KEY_ALL_ORDER (x), "0"b); 178 end; 179 call command_query_$yes_no (again, (0), edit_proj_arg.caller, "", "Do you wish to review the project?"); 180 end; 181 182 return; 183 end process_all_items; 184 185 186 187 process_one_item: 188 procedure (Value_index, check); /* uses EPA for other data */ 189 190 declare Value_index fixed bin; 191 declare check bit (1) aligned; 192 declare new bit (1) aligned; 193 194 /**** check can only be on if there is a match or new_value to check */ 195 196 new = edit_proj_arg.new_value.ptr ^= null (); 197 go to item (Value_index); 198 199 200 /**** Title */ 201 item (1): 202 call simple_string ("Title", Nprojfile.title); 203 return; 204 205 /**** Investigator */ 206 item (2): 207 call simple_string ("Investigator", Nprojfile.inv); 208 return; 209 210 /**** inv Address */ 211 item (3): 212 call simple_string ("Inv. Address", Nprojfile.inv_addr); 213 return; 214 215 /**** Supervisor */ 216 item (4): 217 if check 218 then return; 219 char_100 = Nprojfile.sup; 220 if edit_proj_arg.match 221 then if match_value_string ^= char_100 222 then call no_match; 223 call get_string ("Supervisor", Nprojfile.sup); 224 if Nprojfile.sup = "=" 225 then do; 226 Nprojfile.sup = Nprojfile.inv; 227 Nprojfile.sup_addr = Nprojfile.inv_addr; 228 end; 229 if char_100 ^= Nprojfile.sup 230 then do; 231 call long_report ("""^a"" to ""^a""", char_100, Nprojfile.sup); 232 edit_proj_arg.changes.anything = "1"b; 233 end; 234 return; 235 236 /**** Supervisor addr */ 237 item (5): 238 if check 239 then return; 240 if edit_proj_arg.all /* minor non-modularity */ 241 then if Nprojfile.sup = Nprojfile.inv 242 then return; /* Let the = to (4) do the work */ 243 244 char_100 = Nprojfile.sup_addr; 245 if edit_proj_arg.match 246 then if match_value_string ^= char_100 247 then call no_match; 248 call get_string ("Sup. Address", Nprojfile.sup_addr); 249 if Nprojfile.sup_addr = "=" 250 then Nprojfile.sup_addr = Nprojfile.inv_addr; 251 if char_100 ^= Nprojfile.sup_addr 252 then do; 253 call long_report ("""^a"" to ""^a""", char_100, Nprojfile.sup_addr); 254 edit_proj_arg.changes.anything = "1"b; 255 end; 256 return; 257 258 /**** Supervisor phone */ 259 item (6): 260 call simple_string (" Phone", Nprojfile.sup_phone); 261 return; 262 263 /**** Account */ 264 item (7): 265 if check 266 then return; /* nothing is invalid */ 267 char_16 = Nreqfile.mitacct; /* save the old req */ 268 if edit_proj_arg.match 269 then if match_value_string ^= char_16 270 then call no_match; 271 272 /*** get_string will retrieve the value from EPA if available */ 273 call get_string ("Account", char_16); /* get the new one, dont set changed */ 274 if char_16 ^= Nreqfile.mitacct 275 then call change_account (char_16); /* switch */ 276 return; 277 278 /**** Requisition */ 279 item (8): 280 if check 281 then return; 282 char_16 = Nreqfile.reqno; 283 if edit_proj_arg.match 284 then if match_value_string ^= char_16 285 then call no_match; 286 call get_string ("Requisition", char_16); 287 if char_16 ^= Nreqfile.reqno 288 then call change_requisition (char_16); 289 return; 290 291 /**** Amount */ 292 item (9): 293 if check 294 then do; 295 if edit_proj_arg.match 296 then call sub_err_ (error_table_$bad_conversion, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), 297 (0), "Matching on the value of Amount is not possible."); 298 if new 299 then do; 300 ftemp = cv_float_ (new_value_string, code); 301 if code ^= 0 302 then call sub_err_ (error_table_$bad_conversion, edit_proj_arg.caller, ACTION_CANT_RESTART, 303 null (), (0), """^a"" is not a valid requisition amount.", new_value_string); 304 end; 305 return; 306 end; 307 308 309 char_16 = ""; 310 sign = "r"; 311 if Nreqfile.req_amt = 0e0 312 then char_16 = "open"; 313 else call ioa_$rsnnl ("^.2f", char_16, (0), Nreqfile.req_amt); 314 call get_string ("Amount", char_16); 315 if char_16 = "open" 316 then ftemp = 0; 317 else do; 318 if substr (char_16, 1, 1) = "+" | substr (char_16, 1, 1) = "-" 319 then sign = substr (char_16, 1, 1); 320 321 ftemp = cv_float_ ((char_16), code); 322 if code ^= 0 323 then do; 324 call com_err_ (error_table_$bad_conversion, edit_proj_arg.caller, 325 "Invalid specification of amount ""^a""", char_16); 326 go to item (9); 327 end; 328 329 if sign ^= "r" 330 then ftemp = Nreqfile.req_amt + ftemp; 331 332 if ftemp = 0e0 333 then do; 334 call com_err_ (0, edit_proj_arg.caller, 335 "Setting an Amount of zero will not cut the project off. Say ""open"" to give the project an open requisition, or set the cutoff date to cut it off." 336 ); 337 go to item (9); 338 end; 339 end; 340 if ftemp ^= Nreqfile.req_amt 341 then do; 342 Nsate.cutoff = " "; /* Reset this. */ 343 edit_proj_arg.changes.anything = "1"b; 344 call long_report ("^[open^s^;^.2f^] to ^[open^;^.2f^]", Nreqfile.req_amt = 0e0, Nreqfile.req_amt, 345 ftemp = 0e0, ftemp); 346 Nreqfile.req_amt = ftemp; 347 end; 348 return; 349 350 /**** Cutoff date */ 351 item (10): 352 if check 353 then do; 354 if edit_proj_arg.match 355 then do; 356 call convert_date_to_binary_ (match_value_string, (0), code); 357 if code ^= 0 358 then call sub_err_ (code, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 359 """^a"" is not a valid cutoff date.", match_value_string); 360 end; 361 if new 362 then do; 363 call convert_date_to_binary_ (new_value_string, (0), code); 364 if code ^= 0 365 then call sub_err_ (code, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 366 """^a"" is not a valid cutoff date.", new_value_string); 367 end; 368 return; 369 end; 370 371 if edit_proj_arg.match 372 then do; 373 call convert_date_to_binary_ (match_value_string, fb71, (0)); 374 if fb71 ^= Nreqfile.cutoff 375 then call no_match; 376 end; 377 378 call datebin_$last_midnight (midnight); 379 380 RE_GET_CUTOFF: 381 call date_time_ (Nreqfile.cutoff, char_100_2); 382 char_100 = char_100_2; 383 call get_string ("Cutoff date", char_100); 384 call convert_date_to_binary_$relative ((char_100), fb71, midnight, code); 385 if code ^= 0 386 then do; 387 call com_err_ (code, edit_proj_arg.caller, "Cutoff date ""^a"". ", char_100); 388 go to item (10); 389 end; 390 391 if fb71 ^= Nreqfile.cutoff 392 then do; 393 call date_time_ (fb71, char_100); 394 call long_report ("^a to ^a", char_100_2, char_100); 395 Nreqfile.cutoff = fb71; 396 Nsate.cutoff = " "; 397 edit_proj_arg.changes.anything = "1"b; 398 end; 399 return; 400 401 /**** Billing name */ 402 item (11): 403 call simple_string ("Billing name", Nreqfile.billing_name); 404 return; 405 406 /**** Billing address */ 407 item (12): 408 call simple_string ("Billing Address", Nreqfile.billing_addr); 409 return; 410 411 /**** Rate structure */ 412 item (26): 413 if check 414 then do; 415 if edit_proj_arg.match 416 then do; 417 call system_info_$rs_number (match_value_string, (0), code); 418 if code ^= 0 419 then call sub_err_ (code, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 420 """^a"" is not a valid rate structure.", match_value_string); 421 end; 422 if new 423 then do; 424 call system_info_$rs_number (new_value_string, (0), code); 425 if code ^= 0 426 then call sub_err_ (code, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 427 """^a"" is not a valid rate structure.", new_value_string); 428 end; 429 return; 430 end; 431 432 call system_info_$rs_name ((Nsate.rs_number), rs_name, (0)); 433 if edit_proj_arg.match 434 then if match_value_string ^= rs_name 435 then call no_match; 436 437 RS_LOOP: 438 char_32 = rs_name; 439 call get_string ("Rate structure", char_32); 440 if char_32 = "" 441 then return; /* no change requested */ 442 443 call system_info_$rs_number ((char_32), rs_number, code); 444 if code ^= 0 445 then do; 446 call com_err_ (code, edit_proj_arg.caller, "Invalid rate structure name: ""^a""", char_32); 447 go to RS_LOOP; 448 end; 449 if rs_number ^= Nsate.rs_number 450 then do; 451 call long_report ("^a to ^a", rs_name, char_32); 452 Nsate.rs_number = rs_number; 453 edit_proj_arg.changes.anything = "1"b; 454 end; 455 return; 456 457 /**** (default) Group */ 458 item (13): 459 if check 460 then do; 461 if new 462 then if new_value_string ^= "" 463 then do; 464 if ^valid_group (rtrim (new_value_string)) 465 then call sub_err_ (0, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 466 """^a"" is not a group defined in >sc1>mgt.", new_value_string); 467 if new_value_string = "*" 468 then call sub_err_ (0, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 469 """*"" is not valid as a default group."); 470 end; 471 return; 472 end; 473 474 if edit_proj_arg.match 475 then if match_value_string ^= Nsate.group 476 then call no_match; 477 478 DEFAULT_GROUP_LOOP: 479 char_32 = Nsate.group; 480 call get_string ("Default group", char_32); 481 if char_32 = "" 482 then return; /* no change */ 483 if ^valid_group (rtrim (char_32)) 484 then do; 485 call com_err_ (0, edit_proj_arg.caller, """^a"" is not a group defined in >sc1>mgt.", char_32); 486 go to DEFAULT_GROUP_LOOP; 487 end; 488 if char_32 = "*" 489 then do; 490 call com_err_ (0, edit_proj_arg.caller, """*"" is not a valid default group."); 491 go to DEFAULT_GROUP_LOOP; 492 end; 493 494 Nsate.group = substr (char_32, 1, length (Nsate.group)); 495 edit_proj_arg.changes.anything = "1"b; 496 return; 497 498 /**** Attributes -- parsed into explicitly set/reset */ 499 item (14): 500 if check 501 then do; 502 if edit_proj_arg.match 503 then do; 504 call parse_attributes_ (match_value_string, (""b), (""b), code); 505 if code ^= 0 506 then call sub_err_ (code, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 507 """^a"" is not a valid attribute string.", match_value_string); 508 end; 509 if new 510 then do; 511 call parse_attributes_ (new_value_string, (""b), (""b), code); 512 if code ^= 0 513 then call sub_err_ (code, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 514 """^a"" is not a valid attribute string.", new_value_string); 515 end; 516 return; 517 end; 518 519 /**** What should matching mean for attributes? Any with these on and off 520* and no others? sounds reasonable */ 521 522 if edit_proj_arg.match 523 then do; 524 call parse_attributes_ (match_value_string, set_attr, reset_attr, (0)); 525 temp_attr = Nsate.at; 526 temp_attr.pm_ok = ^temp_attr.pm_ok; /* no_prim instead if prim_ok */ 527 temp_attr.sb_ok = ^temp_attr.sb_ok; /* no_sb ... */ 528 temp_attr.eo_ok = ^temp_attr.eo_ok; /* no_eo ... */ 529 if ^(((string (temp_attr) & set_attr) = set_attr) /* all the sets are set */ 530 & ((^string (temp_attr) & reset_attr) = reset_attr)) 531 /* all the resets are off */ 532 then call no_match; 533 end; 534 535 call format_attributes_ (addr (Nsate.at), vstr); /* get current set */ 536 ATTR_LOOP: 537 char_500 = vstr; /* always reprompt with old value */ 538 call get_string ("Attributes", char_500); 539 if char_500 = "" 540 then return; /* Yawn */ 541 call parse_attributes_ ((char_500), set_attr, reset_attr, code); 542 if code ^= 0 543 then do; 544 call com_err_ (code, edit_proj_arg.caller, "Invalid attribute specification ""^a"" .", char_500); 545 go to ATTR_LOOP; 546 end; 547 548 if (set_attr | reset_attr) = ""b 549 then return; /* nothing doing */ 550 551 temp_attr = Nsate.at; 552 temp_attr.pm_ok = ^temp_attr.pm_ok; /* no_prim instead if prim_ok */ 553 temp_attr.sb_ok = ^temp_attr.sb_ok; /* no_sb ... */ 554 temp_attr.eo_ok = ^temp_attr.eo_ok; /* no_eo ... */ 555 string (temp_attr) = (string (temp_attr) | set_attr) & ^reset_attr; 556 temp_attr.pm_ok = ^temp_attr.pm_ok; 557 temp_attr.sb_ok = ^temp_attr.sb_ok; 558 temp_attr.eo_ok = ^temp_attr.eo_ok; 559 if string (temp_attr) = string (Nsate.at) 560 then return; 561 call format_attributes_ (addr (temp_attr), vstr2); 562 call long_report ("^a to^/ ^a", vstr, vstr2); 563 Nsate.at = temp_attr; 564 edit_proj_arg.changes.anything = "1"b; 565 return; 566 567 /**** (say) Grace */ 568 item (15): 569 call sfb17 ("Grace", 0, -1, Nsate.grace_max); 570 return; 571 572 573 /**** Administrators ... */ 574 item (16): 575 if check 576 then do; 577 /**** Don't check match value, there might be junk in there */ 578 if new 579 then if new_value_string ^= "" 580 then call check_admin (new_value_string); 581 return; 582 end; 583 584 if edit_proj_arg.match 585 then do; /* We are looking for just one */ 586 do i = 1 to 4; 587 if Nsate.admin (i).userid = match_value_string 588 then go to HAVE_MATCHING_ADMIN; 589 end; 590 call no_match; 591 592 HAVE_MATCHING_ADMIN: 593 RE_PROMPT_ONE_ADMIN: 594 char_32 = Nsate.admin (i).userid; 595 call get_string ("Administrator", char_32); 596 if char_32 = Nsate.admin (i).userid 597 then return; 598 if (char_32 = "." | char_32 = "") 599 then do; /* Delete the creature */ 600 if Nsate.admin (i).userid ^= "" 601 then do; /* unless already gone */ 602 call long_report_ ("Deleted administrator ""^a""", Nsate.admin (i).userid); 603 do j = i to 3; 604 Nsate.admin (i).userid = Nsate.admin (i + 1).userid; 605 end; 606 Nsate.admin (4).userid = ""; 607 end; 608 end; 609 else do; /* its a replacement */ 610 if ^check_admin_ (char_32) 611 then do; 612 call com_err_ (0, edit_proj_arg.caller, 613 "Project administrator ""^a"" not of form Name.Project.", char_32); 614 go to RE_PROMPT_ONE_ADMIN; 615 end; 616 if Nsate.admin (i).userid = "" 617 then call long_report_ ("Added administrator ""^a"".", char_32); 618 else call long_report ("^a to ^a", Nsate.admin (i).userid, char_32); 619 Nsate.admin (i).userid = substr (char_32, 1, length (Nsate.admin (i).userid)); 620 end; 621 edit_proj_arg.changes.anything, edit_proj_arg.changes.acls = "1"b; 622 return; 623 end; /* dealing with the match */ 624 625 /**** We wind up here for the vanilla "show me them one by one" case. */ 626 /**** There can be no "new_value" for this unless we were in the 627* match department, upstairs. */ 628 629 if edit_proj_arg.report_project_name & ^printed_projname 630 then do; 631 call ioa_ ("Project ^a:", Nsate.project_id); 632 printed_projname = "1"b; /* once only */ 633 end; 634 call ioa_ ("Project administrators. Type ""."" to delete."); 635 do i = 1 to 4; 636 if i > 1 637 then if Nsate.admin (i - 1).userid = "" 638 then go to DONE_ADMIN; 639 RE_GET_ADMIN: 640 char_32 = Nsate.admin (i).userid; 641 call get_string (" Administrator", char_32); 642 if char_32 = Nsate.admin (i).userid 643 then ; 644 else if char_32 = "." 645 then do; /* Deleting */ 646 if Nsate.admin (i).userid = "" 647 then go to DONE_ADMIN; /* . to empty slot */ 648 call long_report_ ("Deleted administrator ""^a""", Nsate.admin (i).userid); 649 do j = i to 3; 650 Nsate.admin (j).userid = Nsate.admin (j + 1).userid; 651 end; 652 Nsate.admin (4).userid = ""; 653 i = i - 1; 654 edit_proj_arg.changes.acls, edit_proj_arg.changes.anything = "1"b; 655 end; 656 else do; /* Replacing */ 657 if ^check_admin_ (char_32) 658 then do; 659 call com_err_ (0, edit_proj_arg.caller, "Invalid administrator ""^a"" .", char_32); 660 go to RE_GET_ADMIN; 661 end; 662 663 if Nsate.admin (i).userid = "" 664 then call long_report_ ("Added administrator ""^a""", char_32); 665 else call long_report ("""^a"" to ""^a""", Nsate.admin (i).userid, char_32); 666 Nsate.admin (i).userid = substr (char_32, 1, length (Nsate.admin (i).userid)); 667 edit_proj_arg.changes.acls, edit_proj_arg.changes.anything = "1"b; 668 end; 669 end; 670 671 DONE_ADMIN: 672 return; /* PHEW */ 673 674 675 /**** Segment quota */ 676 item (17): 677 call quota_value ("seg", "Segment quota", Nprojfile.disk_quota); 678 return; 679 680 /**** Dir quota */ 681 item (27): 682 call quota_value ("dir", "Directory quota", Nprojfile.dir_disk_quota); 683 return; 684 685 /**** Alias */ 686 item (18): 687 if check 688 then do; 689 call simple_string ("Alias", char_32); 690 end; 691 else do; 692 char_32 = Nsate.alias; /* will need this to see if it changed */ 693 call ioa_ ("Project Alias: type ""."" to delete current alias from SAT."); 694 call simple_string ("Alias", Nsate.alias); 695 if Nsate.alias ^= char_32 696 then do; 697 edit_proj_arg.changes.alias = "1"b; 698 if Nsate.alias = "." then Nsate.alias = ""; 699 end; 700 end; 701 702 return; 703 704 705 /**** Groups */ 706 item (19): 707 if check 708 then do; 709 /**** Don't check match value, it might contain an invalid group */ 710 711 if new 712 then if new_value_string ^= "" 713 then if ^valid_group (rtrim (new_value_string)) 714 then call sub_err_ (0, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 715 """^a"" is not a group defined in >sc1>mgt.", new_value_string); 716 return; 717 end; 718 719 if edit_proj_arg.match 720 then do; /* We are looking for just one */ 721 do i = 1 to 2; 722 if Nsate.groups (i) = match_value_string 723 then go to HAVE_MATCHING_GROUP; 724 end; 725 return; /* not one of ours, jack */ 726 HAVE_MATCHING_GROUP: 727 RE_PROMPT_ONE_GROUP: 728 char_32 = Nsate.groups (i); 729 call get_string ("Group", char_32); 730 if char_32 = Nsate.groups (i) 731 then return; 732 if char_32 = "." | char_32 = "" 733 then do; /* Delete the creature */ 734 if Nsate.groups (i) ^= "" 735 then do; 736 call long_report_ ("Deleted group ^a", Nsate.groups (i)); 737 if i = 1 738 then Nsate.groups (1) = Nsate.groups (2); 739 Nsate.groups (2) = ""; 740 i = i - 1; /* revisit */ 741 edit_proj_arg.changes.anything = "1"b; 742 end; 743 end; 744 else do; /* its a replacement */ 745 if ^valid_group (rtrim (char_32)) 746 then do; 747 call com_err_ (0, edit_proj_arg.caller, 748 """^a"" is not a group defined in >sc1>mgt.", char_32); 749 go to RE_PROMPT_ONE_GROUP; 750 end; 751 if Nsate.groups (i) = "" 752 then call long_report_ ("Added group ""^a""", char_32); 753 else call long_report ("""^a"" to ""^a""", Nsate.groups (i), char_32); 754 Nsate.groups (i) = substr (char_32, 1, length (Nsate.groups (i))); 755 edit_proj_arg.changes.anything = "1"b; 756 end; 757 return; 758 end; /* dealing with the match */ 759 760 /**** We wind up here for the vanilla "show me them one by one" case. */ 761 /**** There can be no "new_value" for this unless we were in the 762* match department, upstairs. */ 763 764 if edit_proj_arg.report_project_name & ^printed_projname 765 then do; 766 call ioa_ ("Project ^a:", Nsate.project_id); 767 printed_projname = "1"b; /* once only */ 768 end; 769 call ioa_ ("Authorized groups. Type ""."" to delete."); 770 do i = 1 to 2; 771 if i = 2 772 then if Nsate.groups (1) = "" 773 then go to DONE_GROUPS; 774 RE_PROMPT_FOR_VALID_GROUP: 775 char_32 = Nsate.groups (i); 776 call get_string (" Group", char_32); 777 if char_32 = Nsate.groups (i) 778 then ; 779 else if char_32 = "." 780 then do; /* Deleting */ 781 if Nsate.groups (i) = (8)" " 782 then return; 783 call long_report_ ("Deleted group ^a", Nsate.groups (i)); 784 if i = 1 785 then Nsate.groups (1) = Nsate.groups (2); 786 Nsate.groups (2) = ""; 787 i = i - 1; 788 edit_proj_arg.changes.anything = "1"b; 789 end; 790 else do; /* Replacing */ 791 if ^valid_group (rtrim (char_32)) 792 then do; 793 call com_err_ (0, edit_proj_arg.caller, """^a"" is not a group defined in >sc1>mgt.", 794 char_32); 795 go to RE_PROMPT_FOR_VALID_GROUP; 796 end; 797 798 if Nsate.groups (i) = "" 799 then call long_report_ ("Added group ""^a""", char_32); 800 else call long_report ("""^a"" to ""^a""", Nsate.groups (i), char_32); 801 Nsate.groups (i) = substr (char_32, 1, length (Nsate.groups (i))); 802 edit_proj_arg.changes.anything = "1"b; 803 end; 804 end; 805 DONE_GROUPS: 806 return; /* PHEW */ 807 808 809 /**** Min ring */ 810 item (20): 811 call sfb17 ("Minimum login ring", 1, 7, Nsate.min_ring); 812 return; 813 814 /**** Max ring */ 815 item (21): 816 call sfb17 ("Maximum login ring", 1, 7, Nsate.max_ring); 817 return; 818 819 /**** Pdir Quota */ 820 item (22): 821 call sfb17u ("Maximum pdir quota", 0, 262143, Nsate.pdir_quota); 822 return; 823 824 825 /**** Max FG */ 826 item (23): 827 call sfb9uu ("Maximum foreground processes", 0, -1, Nsate.max_foreground); 828 return; 829 830 /**** Max BG */ 831 item (24): 832 call sfb9uu ("Maximum background processes", 0, -1, Nsate.max_background); 833 return; 834 835 /**** Abs fg cpu limit */ 836 item (25): 837 call sfb17u ("Absentee foreground cpu limit", 0, -1, Nsate.abs_foreground_cpu_limit); 838 return; 839 840 /**** Authorization */ 841 item (28): 842 if check 843 then do; 844 if edit_proj_arg.match 845 then do; 846 call convert_access_class_$from_string_range (temp_aim_range, match_value_string, code); 847 if code ^= 0 848 then call sub_err_ (code, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 849 "Invalid authorization range ""^a"" .", match_value_string); 850 end; 851 852 if new 853 then do; 854 call convert_access_class_$from_string_range (temp_aim_range, new_value_string, code); 855 if code ^= 0 856 then call sub_err_ (code, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 857 "Invalid authorization range ""^a"" .", new_value_string); 858 end; 859 return; 860 end; 861 862 if edit_proj_arg.match 863 then do; 864 call convert_access_class_$from_string_range (temp_aim_range, match_value_string, (0)); 865 if unspec (Nsate.project_authorization) ^= unspec (temp_aim_range) 866 then call no_match; 867 end; 868 869 call convert_access_class_$to_string_range (Nsate.project_authorization, char_500, (0)); 870 RE_GET_AUTH: 871 call get_string ("Authorization", char_500); 872 call convert_access_class_$from_string_range (temp_aim_range, char_500, code); 873 if code ^= 0 874 then do; 875 call com_err_ (code, edit_proj_arg.caller, "Invalid AIM authorization range ""^a"" .", char_500); 876 go to item (28); 877 end; 878 879 if unspec (Nsate.project_authorization) = unspec (temp_aim_range) 880 then return; /* no change */ 881 882 call convert_access_class_$to_string_range_short (Nsate.project_authorization, char_100, (0)); 883 call convert_access_class_$to_string_range_short (temp_aim_range, char_100_2, (0)); 884 call long_report ("""^a""^/ to ""^a""", char_100, char_100_2); 885 Nsate.project_authorization = temp_aim_range; 886 edit_proj_arg.changes.anything = "1"b; 887 return; 888 889 890 /**** Audit */ 891 item (29): 892 if check 893 then do; 894 if edit_proj_arg.match 895 then call sub_err_ (0, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 896 "Matching on the audit flags is not supported"); 897 if new 898 then do; 899 call convert_access_audit_flags_$from_string (new_value_string, temp_audit, code); 900 if code ^= 0 901 then call sub_err_ (code, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 902 "Invalid audit string ""^a"".", new_value_string); 903 end; 904 return; 905 end; 906 907 908 call convert_access_audit_flags_$to_string (Nsate.audit, char_500, (0)); 909 temp_audit = Nsate.audit; 910 RE_GET_AUDIT: 911 char_500_2 = char_500; 912 call get_string ("Audit flags", char_500_2); 913 if char_500_2 = "" 914 then return; 915 916 call convert_access_audit_flags_$edit_from_string (char_500_2, temp_audit, code); 917 if code ^= 0 918 then do; 919 call com_err_ (code, edit_proj_arg.caller, "Invalid audit flag string ""^a"" .", char_500_2); 920 go to RE_GET_AUDIT; 921 end; 922 923 if temp_audit = Nsate.audit 924 then return; 925 926 /* now the combined flags */ 927 call convert_access_audit_flags_$to_string (temp_audit, char_500_2, (0)); 928 929 call long_report ("""^a""^/ to ""^a""", char_500, char_500_2); 930 Nsate.audit = temp_audit; 931 edit_proj_arg.changes.anything = "1"b; 932 return; 933 934 dispose_of_old_charges: 935 procedure; 936 937 declare response char (12); 938 declare explanation char (100) init 939 ("You may respond ""drop"", ""bill"", ""transfer"" or ""reset"".") 940 int static options (constant); 941 942 if Nreqfile.chg_mo <= 0e0 & Nreqfile.chg_tr <= 0e0 943 then return; 944 945 946 query_info.version = query_info_version_6; 947 query_info.yes_or_no_sw = "0"b; 948 query_info.suppress_name_sw = "1"b; 949 query_info.suppress_spacing = "1"b; 950 query_info.literal_sw = "0"b; 951 query_info.prompt_after_explanation = "1"b; 952 query_info.explanation_ptr = addr (explanation); 953 query_info.explanation_len = length (rtrim (explanation)); 954 955 RE_QUERY: 956 call command_query_ (addr (query_info), response, edit_proj_arg.caller, 957 "What is the disposition of charges of $^.2f to acct ^a, req ^a?", Nreqfile.chg_mo + Nreqfile.chg_tr, 958 Nreqfile.mitacct, Nreqfile.reqno); 959 if response = "drop" 960 then do; 961 Nreqfile.chg_tr = 0.0e0; 962 Nreqfile.chg_mo = 0.0e0; 963 end; 964 else if response = "transfer" 965 then do; 966 end; 967 else if response = "bill" 968 then do; 969 call ioa_ ("Generate a manual charge for $^.2f to ^a ^a", Nreqfile.chg_mo, Nreqfile.mitacct, 970 Nreqfile.reqno); 971 Nreqfile.chg_tr = 0.0e0; 972 Nreqfile.chg_mo = 0.0e0; 973 end; 974 else if response = "reset" 975 then do; 976 call ioa_ ("Charge this requistion has been changed from $^.2f to $0.00", Nreqfile.chg_tr); 977 if Nreqfile.req_amt = 0.0e0 978 then Nreqfile.chg_tr = 0.0e0; 979 else do; 980 call ioa_ ("The requisition amount has been changed from $^.2f to $^.2f", Nreqfile.req_amt, 981 Nreqfile.req_amt - Nreqfile.chg_tr); 982 Nreqfile.req_amt = Nreqfile.req_amt - Nreqfile.chg_tr; 983 Nreqfile.chg_tr = 0.0e0; 984 end; 985 end; 986 else do; 987 call ioa_ ("^a", explanation); 988 go to RE_QUERY; 989 end; 990 return; 991 end dispose_of_old_charges; 992 993 simple_string: 994 procedure (prompt, target); 995 declare prompt char (*); 996 declare target char (*); 997 declare old_target char (600); 998 999 if check 1000 then return; /* what's to say? */ 1001 if edit_proj_arg.match 1002 then if match_value_string ^= target 1003 then call no_match; 1004 1005 old_target = target; 1006 call get_string (prompt, target); 1007 if target = old_target 1008 then return; 1009 1010 call long_report ("""^a"" to ""^a""", old_target, target); 1011 edit_proj_arg.changes.anything = "1"b; 1012 return; 1013 end simple_string; 1014 1015 get_string: 1016 procedure (prompt, target); 1017 declare prompt char (*); 1018 declare target char (*); 1019 declare response char (500); 1020 1021 if new /* use the global so we can turn it off to use it only once. */ 1022 then do; 1023 target = new_value_string; 1024 new = "0"b; 1025 return; 1026 end; 1027 1028 query_info.version = query_info_version_6; 1029 query_info.yes_or_no_sw = "0"b; 1030 query_info.suppress_name_sw = "1"b; 1031 query_info.suppress_spacing = "1"b; 1032 query_info.literal_sw = "0"b; 1033 query_info.prompt_after_explanation = "1"b; 1034 query_info.explanation_ptr = null (); 1035 query_info.explanation_len = 0; 1036 1037 if edit_proj_arg.report_project_name & ^printed_projname 1038 then do; 1039 call ioa_ ("Project ^a:", Nsate.project_id); 1040 printed_projname = "1"b; /* once is enough */ 1041 end; 1042 1043 call command_query_ (addr (query_info), response, edit_proj_arg.caller, "^a:^[^25t^a^/^; ^]", prompt, 1044 target ^= "", target); 1045 if response = "" 1046 then return; 1047 target = response; 1048 1049 return; 1050 end get_string; 1051 1052 1053 change_account: 1054 procedure (new_account); 1055 declare new_account char (*); 1056 1057 call long_report ("""^a"" to ""^a""", Nreqfile.mitacct, new_account); 1058 call dispose_of_old_charges; 1059 Nreqfile.mitacct = new_account; 1060 edit_proj_arg.changes.anything = "1"b; 1061 return; 1062 end change_account; 1063 1064 change_requisition: 1065 procedure (new_requisition); 1066 1067 declare new_requisition char (*); 1068 1069 call long_report ("""^a"" to ""^a""", Nreqfile.reqno, new_requisition); 1070 call dispose_of_old_charges; 1071 Nreqfile.reqno = new_requisition; 1072 edit_proj_arg.changes.anything = "1"b; 1073 return; 1074 end change_requisition; 1075 1076 long_report: 1077 procedure options (variable); 1078 1079 declare alp pointer; 1080 declare change_string char (1000); 1081 declare csl fixed bin (21); 1082 1083 if ^edit_proj_arg.long 1084 then return; 1085 call cu_$arg_list_ptr (alp); 1086 call ioa_$general_rs (alp, 1, 2, change_string, csl, "0"b, "0"b); 1087 call ioa_ ("Changed ^a^[ for project ^a^;^s^] from ^a.", PROJ_KEY_NAMES (Value_index), 1088 edit_proj_arg.report_project_name, Nsate.project_id, substr (change_string, 1, csl)); 1089 return; 1090 end long_report; 1091 1092 long_report_: 1093 procedure options (variable); 1094 1095 declare alp pointer; 1096 declare change_string char (1000); 1097 declare csl fixed bin (21); 1098 1099 if ^edit_proj_arg.long 1100 then return; 1101 call cu_$arg_list_ptr (alp); 1102 call ioa_$general_rs (alp, 1, 2, change_string, csl, "0"b, "0"b); 1103 call ioa_ ("^[Changed project ^a: ^;^s^]^a.", edit_proj_arg.report_project_name, Nsate.project_id, 1104 substr (change_string, 1, csl)); 1105 return; 1106 end long_report_; 1107 1108 sfb17: 1109 procedure (prompt, min, max, target); 1110 1111 declare prompt char (*); 1112 declare (min, max) fixed bin (18); 1113 declare (target) fixed bin; 1114 declare junk fixed bin (35); 1115 1116 if check 1117 then do; 1118 call sfbcheck (min, max); 1119 return; 1120 end; 1121 if edit_proj_arg.match 1122 then if ^sfbmatch ((target)) 1123 then call no_match; 1124 1125 call get_fb (prompt, min, max, junk, (target)); 1126 target = junk; 1127 return; 1128 end sfb17; 1129 1130 1131 sfb17u: 1132 procedure (prompt, min, max, target); 1133 1134 declare prompt char (*); 1135 declare (min, max) fixed bin (18); 1136 declare ( 1137 target unaligned 1138 ) fixed bin; 1139 declare junk fixed bin (35); 1140 1141 if check 1142 then do; 1143 call sfbcheck (min, max); 1144 return; 1145 end; 1146 if edit_proj_arg.match 1147 then if ^sfbmatch ((target)) 1148 then call no_match; 1149 1150 call get_fb (prompt, min, max, junk, (target)); 1151 target = junk; 1152 return; 1153 end sfb17u; 1154 1155 1156 sfb9uu: 1157 procedure (prompt, min, max, target); 1158 1159 declare prompt char (*); 1160 declare (min, max) fixed bin (18); 1161 declare target fixed bin (9) uns unal; 1162 declare junk fixed bin (35); 1163 1164 if check 1165 then do; 1166 call sfbcheck (min, max); 1167 return; 1168 end; 1169 if edit_proj_arg.match 1170 then if ^sfbmatch ((target)) 1171 then call no_match; 1172 1173 call get_fb (prompt, min, max, junk, (target)); 1174 target = junk; 1175 return; 1176 end sfb9uu; 1177 1178 1179 sfbcheck: 1180 procedure (min, max); 1181 1182 declare (min, max) fixed bin (18); 1183 1184 if edit_proj_arg.new_value.ptr ^= null () 1185 then call sfbcheck_ (new_value_string); 1186 if edit_proj_arg.match_value.ptr ^= null () 1187 then call sfbcheck_ (match_value_string); 1188 1189 return; 1190 1191 sfbcheck_: 1192 procedure (checkee); 1193 1194 declare checkee char (*); 1195 declare junk fixed bin (35); 1196 1197 junk = cv_dec_check_ (checkee, code); 1198 if code ^= 0 | junk < min | (max > 0 & junk > max) 1199 then call sub_err_ (error_table_$bad_conversion, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 1200 "Invalid value ""^a"".", checkee); 1201 return; 1202 end sfbcheck_; 1203 end sfbcheck; 1204 1205 sfbmatch: 1206 procedure (test) returns (bit (1) aligned); 1207 1208 declare test fixed bin; 1209 declare junk fixed bin (35); 1210 1211 junk = cv_dec_check_ (match_value_string, (0)); 1212 return (junk = test); 1213 end sfbmatch; 1214 1215 get_fb: 1216 procedure (prompt, min, max, newfb, oldfb); 1217 1218 declare prompt char (*); 1219 declare (min, max) fixed bin (18); 1220 declare (newfb, oldfb) fixed bin (35); 1221 declare fb_string char (20); 1222 1223 if new 1224 then do; /* already checked */ 1225 newfb = cv_dec_check_ (new_value_string, (0)); 1226 new = "0"b; 1227 if newfb ^= oldfb 1228 then do; 1229 edit_proj_arg.changes.anything = "1"b; 1230 call long_report ("^d to ^d", oldfb, newfb); 1231 end; 1232 return; 1233 end; 1234 1235 RE_GET_FB: 1236 fb_string = ltrim (char (oldfb)); 1237 call get_string (prompt, fb_string); 1238 newfb = cv_dec_check_ (fb_string, code); 1239 if code ^= 0 | newfb < min | (max > 0 & newfb > max) 1240 then do; 1241 call com_err_ (error_table_$bad_conversion, edit_proj_arg.caller, "Invalid value ""^a"".", fb_string); 1242 go to RE_GET_FB; 1243 end; 1244 if newfb = oldfb 1245 then return; 1246 call long_report ("^d to ^d", oldfb, newfb); 1247 edit_proj_arg.changes.anything = "1"b; 1248 return; 1249 end get_fb; 1250 1251 check_admin: 1252 procedure (admin_name); 1253 1254 declare admin_name char (*); 1255 1256 if ^check_admin_ (admin_name) 1257 then call sub_err_ (0, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 1258 "Invalid project administrator name ""^a"".", admin_name); 1259 return; 1260 end check_admin; 1261 1262 check_admin_: 1263 procedure (admin) returns (bit (1) aligned); 1264 1265 declare admin char (*); 1266 declare u char (32) varying; 1267 declare p char (32) varying; 1268 1269 u = rtrim (before (admin, ".")); 1270 p = rtrim (after (admin, ".")); 1271 if u = admin 1272 then return ("0"b); /* has to have a . */ 1273 if p = "" 1274 then return ("0"b); /* followed by something */ 1275 if u = "*" & p = "*" 1276 then return ("0"b); 1277 if (u ^= "*" & verify (u, LEGAL) > 0) | (p ^= "*" & verify (p, LEGAL) > 0) 1278 then return ("0"b); 1279 return ("1"b); 1280 end check_admin_; 1281 1282 quota_value: 1283 procedure (qtype, prompt, target); 1284 declare qtype char (3); 1285 declare prompt char (*); 1286 declare target fixed bin (35); 1287 declare junk fixed bin (35); 1288 declare (new_string, old_string) 1289 char (20); 1290 1291 if check 1292 then do; 1293 if edit_proj_arg.match 1294 then call sub_err_ (0, edit_proj_arg.caller, ACTION_CANT_RESTART, null (), (0), 1295 "Matching on quota values is not permitted."); 1296 if new 1297 then call sfbcheck (0, 262120); 1298 return; 1299 end; 1300 1301 if qtype = "dir" 1302 then old_string = ltrim (char (Nprojfile.dir_disk_quota)); 1303 else old_string = ltrim (char (Nprojfile.disk_quota)); 1304 1305 RE_GET_QUOTA: 1306 new_string = old_string; 1307 call get_string (prompt, new_string); 1308 if new_string = old_string 1309 then return; 1310 1311 sign = substr (new_string, 1, 1); 1312 if sign ^= "+" & sign ^= "-" 1313 then sign = "r"; 1314 junk = cv_dec_check_ (new_string, code); 1315 if code ^= 0 1316 then do; 1317 call com_err_ (error_table_$bad_conversion, edit_proj_arg.caller, "Invalid quota value ""^a"".", 1318 new_string); 1319 go to RE_GET_QUOTA; 1320 end; 1321 1322 if sign ^= "r" 1323 then if qtype = "dir" 1324 then junk = Nprojfile.dir_disk_quota + junk; 1325 else junk = Nprojfile.disk_quota + junk; 1326 1327 if qtype = "dir" 1328 then do; 1329 call long_report ("^d to ^d", Nprojfile.dir_disk_quota, junk); 1330 Nprojfile.dir_disk_quota = junk; 1331 end; 1332 else do; 1333 call long_report ("^d to ^d", Nprojfile.disk_quota, junk); 1334 Nprojfile.disk_quota = junk; 1335 end; 1336 edit_proj_arg.changes.anything = "1"b; 1337 if qtype = "seg" 1338 then edit_proj_arg.changes.seg_quota = "1"b; 1339 else edit_proj_arg.changes.dir_quota = "1"b; 1340 return; 1341 end quota_value; 1342 1343 no_match: 1344 procedure; 1345 go to RETURN; 1346 end no_match; 1347 1348 valid_group: 1349 procedure (perhaps_group_name) returns (bit (1) aligned); 1350 declare perhaps_group_name char (*); 1351 declare groupx fixed bin; 1352 1353 if length (perhaps_group_name) > length (Nsate.group) 1354 /* easy case */ 1355 then return ("0"b); 1356 if perhaps_group_name = "*" 1357 then return ("1"b); /* special case "*" means "any" */ 1358 do groupx = 17 to mgt.current_size; /* first 16 are WC's, uggh */ 1359 mgtep = addr (mgt.entry (groupx)); 1360 if group.group_id = perhaps_group_name 1361 then return ("1"b); 1362 end; 1363 return ("0"b); 1364 end valid_group; 1365 1366 RETURN: 1367 return; 1368 1369 end process_one_item; 1370 end edit_proj_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/21/92 1137.3 edit_proj_.pl1 >spec>install>1034>edit_proj_.pl1 131 1 03/11/83 1304.3 query_info.incl.pl1 >ldd>include>query_info.incl.pl1 132 2 04/16/82 1058.1 sub_err_flags.incl.pl1 >ldd>include>sub_err_flags.incl.pl1 133 3 09/20/84 1025.7 edit_proj_arguments_.incl.pl1 >ldd>include>edit_proj_arguments_.incl.pl1 134 4 09/13/84 1021.5 edit_proj_keywords_.incl.pl1 >ldd>include>edit_proj_keywords_.incl.pl1 135 5 08/06/87 1013.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 5-112 6 07/14/88 2115.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 136 7 08/06/87 1516.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 7-34 8 04/21/82 1311.8 author.incl.pl1 >ldd>include>author.incl.pl1 137 9 09/20/84 1025.7 projfile.incl.pl1 >ldd>include>projfile.incl.pl1 138 10 09/20/84 1025.7 reqfile.incl.pl1 >ldd>include>reqfile.incl.pl1 139 11 08/10/81 1943.7 mgt.incl.pl1 >ldd>include>mgt.incl.pl1 11-33 12 04/21/82 1311.8 author.incl.pl1 >ldd>include>author.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. ACTION_CANT_RESTART 001172 constant bit(36) initial dcl 2-7 set ref 295* 301* 357* 364* 418* 425* 464* 467* 505* 512* 711* 847* 855* 894* 900* 1198* 1256* 1293* EPA_ptr parameter pointer dcl 72 ref 27 145 157 159 LEGAL 001033 constant char(70) initial packed unaligned dcl 85 ref 1277 1277 Nprojfile based structure level 1 dcl 81 Nprojfile_p 000776 automatic pointer dcl 70 set ref 147* 161* 201 206 211 219 223 224 226 226 227 227 229 231 240 240 244 248 249 249 249 251 253 259 676 681 1301 1303 1322 1325 1329 1330 1333 1334 Nreqfile based structure level 1 dcl 82 Nreqfile_p 001000 automatic pointer dcl 70 set ref 148* 162* 267 274 282 287 311 313 329 340 344 344 346 374 380 391 395 402 407 942 942 955 955 955 955 961 962 969 969 969 971 972 976 977 977 980 980 980 982 982 982 983 1057 1059 1069 1071 Nsate based structure level 1 dcl 79 Nsatep 000774 automatic pointer dcl 70 set ref 146* 160* 342 396 432 449 452 474 478 494 494 525 535 535 551 559 563 568 587 592 596 600 602 604 604 606 616 618 619 619 631 636 639 642 646 648 650 650 652 663 665 666 666 692 694 695 698 698 722 726 730 734 736 737 737 739 751 753 754 754 766 771 774 777 781 783 784 784 786 798 800 801 801 810 815 820 826 831 836 865 869 879 882 885 908 909 923 930 1039 1087 1103 1353 PROJ_KEY_ALL_ORDER 000066 constant fixed bin(17,0) initial array dcl 4-74 set ref 176 177* PROJ_KEY_NAMES 000123 constant char(32) initial array dcl 4-4 set ref 1087* Value_index parameter fixed bin(17,0) dcl 190 ref 187 197 1087 abs_foreground_cpu_limit 115 based fixed bin(17,0) level 2 packed packed unaligned dcl 79 set ref 836* acls 23(01) based bit(1) level 3 packed packed unaligned dcl 3-9 set ref 621* 654* 667* addr builtin function dcl 90 ref 535 535 561 561 952 955 955 1043 1043 1359 admin 31 based structure array level 2 in structure "Nsate" dcl 79 in procedure "edit_proj_" admin parameter char packed unaligned dcl 1265 in procedure "check_admin_" ref 1262 1269 1270 1271 admin_name parameter char packed unaligned dcl 1254 set ref 1251 1256* 1256* after builtin function dcl 90 ref 1270 again 001035 automatic bit(1) dcl 172 set ref 174* 175 179* alias 74 based char(8) level 2 in structure "Nsate" packed packed unaligned dcl 79 in procedure "edit_proj_" set ref 692 694* 695 698 698* alias 23(02) based bit(1) level 3 in structure "edit_proj_arg" packed packed unaligned dcl 3-9 in procedure "edit_proj_" set ref 697* all 22 based bit(1) level 3 packed packed unaligned dcl 3-9 ref 151 240 alp 000100 automatic pointer dcl 1095 in procedure "long_report_" set ref 1101* 1102* alp 000100 automatic pointer dcl 1079 in procedure "long_report" set ref 1085* 1086* answer_iocbp 6 001004 automatic pointer initial level 2 dcl 1-7 set ref 1-7* anything 23 based bit(1) level 3 packed packed unaligned dcl 3-9 set ref 232* 254* 343* 397* 453* 495* 564* 621* 654* 667* 741* 755* 788* 802* 886* 931* 1011* 1060* 1072* 1229* 1247* 1336* at 30 based structure level 2 dcl 79 set ref 525 535 535 551 559 563* audit 101 based bit(36) level 2 dcl 79 set ref 908* 909 923 930* before builtin function dcl 90 ref 1269 billing_addr 30 based char(32) level 2 packed packed unaligned dcl 82 set ref 407* billing_name 20 based char(32) level 2 packed packed unaligned dcl 82 set ref 402* caller 2 based char(32) level 2 packed packed unaligned dcl 3-9 set ref 179* 295* 301* 324* 334* 357* 364* 387* 418* 425* 446* 464* 467* 485* 490* 505* 512* 544* 612* 659* 711* 747* 793* 847* 855* 875* 894* 900* 919* 955* 1043* 1198* 1241* 1256* 1293* 1317* change_string 000102 automatic char(1000) packed unaligned dcl 1096 in procedure "long_report_" set ref 1102* 1103 1103 change_string 000102 automatic char(1000) packed unaligned dcl 1080 in procedure "long_report" set ref 1086* 1087 1087 changes 23 based structure level 2 dcl 3-9 char builtin function dcl 90 ref 1235 1301 1303 char_100 000304 automatic char(100) packed unaligned dcl 60 set ref 219* 220 229 231* 244* 245 251 253* 382* 383* 384 387* 393* 394* 882* 884* char_100_2 000335 automatic char(100) packed unaligned dcl 60 set ref 380* 382 394* 883* 884* char_16 000270 automatic char(16) packed unaligned dcl 58 set ref 267* 268 273* 274 274* 282* 283 286* 287 287* 309* 311* 313* 314* 315 318 318 318 321 324* char_32 000274 automatic char(32) packed unaligned dcl 59 set ref 437* 439* 440 443 446* 451* 478* 480* 481 483 483 485* 488 494 592* 595* 596 598 598 610* 612* 616* 618* 619 639* 641* 642 644 657* 659* 663* 665* 666 689* 692* 695 726* 729* 730 732 732 745 745 747* 751* 753* 754 774* 776* 777 779 791 791 793* 798* 800* 801 char_500 000366 automatic char(500) packed unaligned dcl 61 set ref 536* 538* 539 541 544* 869* 870* 872* 875* 908* 910 929* char_500_2 000563 automatic char(500) packed unaligned dcl 61 set ref 910* 912* 913 916* 919* 927* 929* check parameter bit(1) dcl 191 ref 187 216 237 264 279 292 351 412 458 499 574 686 706 841 891 999 1116 1141 1164 1291 checkee parameter char packed unaligned dcl 1194 set ref 1191 1197* 1198* chg_mo 40 based float bin(63) level 2 dcl 82 set ref 942 955 962* 969* 972* chg_tr 42 based float bin(63) level 2 dcl 82 set ref 942 955 961* 971* 976* 977* 980 982 983* code 000100 automatic fixed bin(35,0) dcl 48 set ref 142* 300* 301 321* 322 356* 357 357* 363* 364 364* 384* 385 387* 417* 418 418* 424* 425 425* 443* 444 446* 504* 505 505* 511* 512 512* 541* 542 544* 846* 847 847* 854* 855 855* 872* 873 875* 899* 900 900* 916* 917 919* 1197* 1198 1238* 1239 1314* 1315 com_err_ 000012 constant entry external dcl 96 ref 324 334 387 446 485 490 544 612 659 747 793 875 919 1241 1317 command_query_ 000014 constant entry external dcl 97 ref 955 1043 command_query_$yes_no 000016 constant entry external dcl 98 ref 179 convert_access_audit_flags_$edit_from_string 000036 constant entry external dcl 113 ref 916 convert_access_audit_flags_$from_string 000034 constant entry external dcl 111 ref 899 convert_access_audit_flags_$to_string 000032 constant entry external dcl 109 ref 908 927 convert_access_class_$from_string_range 000026 constant entry external dcl 105 ref 846 854 864 872 convert_access_class_$to_string_range 000030 constant entry external dcl 107 ref 869 convert_access_class_$to_string_range_short 000024 constant entry external dcl 103 ref 882 883 convert_date_to_binary_ 000020 constant entry external dcl 99 ref 356 363 373 convert_date_to_binary_$relative 000022 constant entry external dcl 101 ref 384 cp_escape_control 1(02) 001004 automatic bit(2) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* csl 000474 automatic fixed bin(21,0) dcl 1081 in procedure "long_report" set ref 1086* 1087 1087 csl 000474 automatic fixed bin(21,0) dcl 1097 in procedure "long_report_" set ref 1102* 1103 1103 cu_$arg_list_ptr 000040 constant entry external dcl 115 ref 1085 1101 current_size 36 based fixed bin(17,0) level 2 dcl 11-30 ref 1358 cutoff 71 based char(1) level 2 in structure "Nsate" dcl 79 in procedure "edit_proj_" set ref 342* 396* cutoff 46 based fixed bin(71,0) level 2 in structure "Nreqfile" dcl 82 in procedure "edit_proj_" set ref 374 380* 391 395* cv_dec_check_ 000044 constant entry external dcl 117 ref 1197 1211 1225 1238 1314 cv_float_ 000042 constant entry external dcl 116 ref 300 321 date_time_ 000046 constant entry external dcl 118 ref 380 393 datebin_$last_midnight 000050 constant entry external dcl 119 ref 378 dir_disk_quota 73 based fixed bin(35,0) level 2 dcl 81 set ref 681* 1301 1322 1329* 1330* dir_quota 23(04) based bit(1) level 3 packed packed unaligned dcl 3-9 set ref 1339* disk_quota 72 based fixed bin(35,0) level 2 dcl 81 set ref 676* 1303 1325 1333* 1334* edit_proj_arg based structure level 1 dcl 3-9 edit_proj_arg_ptr 001022 automatic pointer dcl 3-8 set ref 145* 146 147 148 149 151 153 159* 160 161 162 163 164 179 196 220 220 220 232 240 245 245 245 254 268 268 268 283 283 283 295 295 300 300 300 301 301 301 301 324 334 343 354 356 356 356 357 357 357 357 363 363 363 364 364 364 364 371 373 373 373 387 397 415 417 417 417 418 418 418 418 424 424 424 425 425 425 425 433 433 433 446 453 461 461 464 464 464 464 464 464 464 464 467 467 467 474 474 474 485 490 495 502 504 504 504 505 505 505 505 511 511 511 512 512 512 512 522 524 524 524 544 564 578 578 578 578 578 584 587 587 612 621 621 629 654 654 659 667 667 697 711 711 711 711 711 711 711 711 711 711 719 722 722 741 747 755 764 788 793 802 844 846 846 846 847 847 847 847 854 854 854 855 855 855 855 862 864 864 864 875 886 894 894 899 899 899 900 900 900 900 919 931 955 1001 1001 1001 1011 1023 1023 1037 1043 1060 1072 1083 1087 1099 1103 1121 1146 1169 1184 1184 1184 1184 1186 1186 1186 1186 1198 1211 1211 1211 1225 1225 1225 1229 1241 1247 1256 1293 1293 1317 1336 1337 1339 entry 100 based structure array level 2 dcl 11-30 set ref 1359 eo_ok 0(16) 001002 automatic bit(1) level 2 packed packed unaligned dcl 83 set ref 528* 528 554* 554 558* 558 error_table_$bad_conversion 000010 external static fixed bin(35,0) dcl 74 set ref 295* 301* 324* 1198* 1241* 1317* explanation 000035 constant char(100) initial packed unaligned dcl 938 set ref 952 953 987* explanation_len 14 001004 automatic fixed bin(21,0) initial level 2 dcl 1-7 set ref 1-7* 953* 1035* explanation_ptr 12 001004 automatic pointer initial level 2 dcl 1-7 set ref 1-7* 952* 1034* fb71 000762 automatic fixed bin(71,0) dcl 63 set ref 373* 374 384* 391 393* 395 fb_string 001620 automatic char(20) packed unaligned dcl 1221 set ref 1235* 1237* 1238* 1241* flags 22 based structure level 2 dcl 3-9 format_attributes_ 000052 constant entry external dcl 120 ref 535 561 ftemp 000764 automatic float bin(27) dcl 64 set ref 300* 315* 321* 329* 329 332 340 344 344* 346 grace_max 100 based fixed bin(17,0) level 2 dcl 79 set ref 568* group 76 based char(8) level 2 in structure "Nsate" packed packed unaligned dcl 79 in procedure "edit_proj_" set ref 474 478 494* 494 1353 group based structure level 1 dcl 11-63 in procedure "edit_proj_" group_id based char(8) level 2 dcl 11-63 ref 1360 groups 106 based char(8) array level 2 packed packed unaligned dcl 79 set ref 722 726 730 734 736* 737* 737 739* 751 753* 754* 754 771 774 777 781 783* 784* 784 786* 798 800* 801* 801 groupx 000100 automatic fixed bin(17,0) dcl 1351 set ref 1358* 1359* hbound builtin function dcl 90 ref 176 i 000120 automatic fixed bin(17,0) dcl 56 set ref 586* 587* 592 596 600 602 603 604 604 616 618 619 619 635* 636 636 639 642 646 648 649 653* 653 663 665 666 666* 721* 722* 726 730 734 736 737 740* 740 751 753 754 754 770* 771 774 777 781 783 784 787* 787 798 800 801 801* inv 20 based char(32) level 2 packed packed unaligned dcl 81 set ref 206* 226 240 inv_addr 30 based char(32) level 2 packed packed unaligned dcl 81 set ref 211* 227 249 ioa_ 000054 constant entry external dcl 121 ref 631 634 693 766 769 969 976 980 987 1039 1087 1103 ioa_$general_rs 000060 constant entry external dcl 123 ref 1086 1102 ioa_$rsnnl 000056 constant entry external dcl 122 ref 313 j 000121 automatic fixed bin(17,0) dcl 56 set ref 603* 649* 650 650* junk 001562 automatic fixed bin(35,0) dcl 1162 in procedure "sfb9uu" set ref 1173* 1174 junk 001672 automatic fixed bin(35,0) dcl 1287 in procedure "quota_value" set ref 1314* 1322* 1322 1325* 1325 1329* 1330 1333* 1334 junk 001600 automatic fixed bin(35,0) dcl 1195 in procedure "sfbcheck_" set ref 1197* 1198 1198 junk 001610 automatic fixed bin(35,0) dcl 1209 in procedure "sfbmatch" set ref 1211* 1212 junk 001552 automatic fixed bin(35,0) dcl 1139 in procedure "sfb17u" set ref 1150* 1151 junk 001542 automatic fixed bin(35,0) dcl 1114 in procedure "sfb17" set ref 1125* 1126 length 34 based fixed bin(21,0) level 3 in structure "edit_proj_arg" dcl 3-9 in procedure "edit_proj_" ref 220 245 268 283 356 356 357 357 373 373 417 417 418 418 433 474 504 504 505 505 524 524 587 722 846 846 847 847 864 864 1001 1186 1186 1211 1211 length 30 based fixed bin(21,0) level 3 in structure "edit_proj_arg" dcl 3-9 in procedure "edit_proj_" ref 300 300 301 301 363 363 364 364 424 424 425 425 461 464 464 464 464 467 511 511 512 512 578 578 578 711 711 711 711 711 854 854 855 855 899 899 900 900 1023 1184 1184 1225 1225 length builtin function dcl 90 in procedure "edit_proj_" ref 494 619 666 754 801 953 1353 1353 literal_sw 1(05) 001004 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* 950* 1032* long 22(01) based bit(1) level 3 packed packed unaligned dcl 3-9 ref 1083 1099 ltrim builtin function dcl 90 ref 1235 1301 1303 match 22(03) based bit(1) level 3 packed packed unaligned dcl 3-9 ref 220 245 268 283 295 354 371 415 433 474 502 522 584 719 844 862 894 1001 1121 1146 1169 1293 match_value 32 based structure level 2 dcl 3-9 match_value_string based char packed unaligned dcl 3-41 set ref 220 245 268 283 356* 357* 373* 417* 418* 433 474 504* 505* 524* 587 722 846* 847* 864* 1001 1186* 1211* max parameter fixed bin(18,0) dcl 1112 in procedure "sfb17" set ref 1108 1118* 1125* max parameter fixed bin(18,0) dcl 1182 in procedure "sfbcheck" ref 1179 1198 1198 max parameter fixed bin(18,0) dcl 1135 in procedure "sfb17u" set ref 1131 1143* 1150* max parameter fixed bin(18,0) dcl 1219 in procedure "get_fb" ref 1215 1239 1239 max parameter fixed bin(18,0) dcl 1160 in procedure "sfb9uu" set ref 1156 1166* 1173* max_background 114(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 79 set ref 831* max_foreground 114(18) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 79 set ref 826* max_ring 73 based fixed bin(17,0) level 2 dcl 79 set ref 815* mgt based structure level 1 dcl 11-30 mgtep 001024 automatic pointer dcl 11-61 set ref 1359* 1360 mgtp 20 based pointer level 3 in structure "edit_proj_arg" dcl 3-9 in procedure "edit_proj_" ref 149 163 mgtp 000772 automatic pointer dcl 69 in procedure "edit_proj_" set ref 149* 163* 1358 1359 midnight 000116 automatic fixed bin(71,0) dcl 55 set ref 378* 384* min parameter fixed bin(18,0) dcl 1135 in procedure "sfb17u" set ref 1131 1143* 1150* min parameter fixed bin(18,0) dcl 1112 in procedure "sfb17" set ref 1108 1118* 1125* min parameter fixed bin(18,0) dcl 1182 in procedure "sfbcheck" ref 1179 1198 min parameter fixed bin(18,0) dcl 1219 in procedure "get_fb" ref 1215 1239 min parameter fixed bin(18,0) dcl 1160 in procedure "sfb9uu" set ref 1156 1166* 1173* min_ring 72 based fixed bin(17,0) level 2 dcl 79 set ref 810* mitacct 3 based char(12) level 2 packed packed unaligned dcl 82 set ref 267 274 955* 969* 1057* 1059* new 001044 automatic bit(1) dcl 192 set ref 196* 298 361 422 461 509 578 711 852 897 1021 1024* 1223 1226* 1296 new_account parameter char packed unaligned dcl 1055 set ref 1053 1057* 1059 new_requisition parameter char packed unaligned dcl 1067 set ref 1064 1069* 1071 new_string 001673 automatic char(20) packed unaligned dcl 1288 set ref 1305* 1307* 1308 1311 1314* 1317* new_value 26 based structure level 2 dcl 3-9 new_value_string based char packed unaligned dcl 3-40 set ref 300* 301* 363* 364* 424* 425* 461 464 464 464* 467 511* 512* 578 578* 711 711 711 711* 854* 855* 899* 900* 1023 1184* 1225* newfb parameter fixed bin(35,0) dcl 1220 set ref 1215 1225* 1227 1230* 1238* 1239 1239 1244 1246* null builtin function dcl 90 ref 1-7 1-7 1-7 196 295 295 301 301 357 357 364 364 418 418 425 425 464 464 467 467 505 505 512 512 711 711 847 847 855 855 894 894 900 900 1034 1184 1186 1198 1198 1256 1256 1293 1293 old_string 001700 automatic char(20) packed unaligned dcl 1288 set ref 1301* 1303* 1305 1308 old_target 001066 automatic char(600) packed unaligned dcl 997 set ref 1005* 1007 1010* oldfb parameter fixed bin(35,0) dcl 1220 set ref 1215 1227 1230* 1235 1244 1246* p 001653 automatic varying char(32) dcl 1267 set ref 1270* 1273 1275 1277 1277 padding 1(07) 001004 automatic bit(29) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* parse_attributes_ 000062 constant entry external dcl 125 ref 504 511 524 541 pdir_quota 114 based fixed bin(17,0) level 2 packed packed unaligned dcl 79 set ref 820* perhaps_group_name parameter char packed unaligned dcl 1350 ref 1348 1353 1356 1360 pm_ok 0(15) 001002 automatic bit(1) level 2 packed packed unaligned dcl 83 set ref 526* 526 552* 552 556* 556 printed_projname 000101 automatic bit(1) dcl 49 set ref 143* 629 632* 764 767* 1037 1040* project based structure level 1 dcl 7-53 project_authorization 102 based bit(72) array level 2 dcl 79 set ref 865 869* 879 882* 885* project_id 1 based char(12) level 2 packed packed unaligned dcl 79 set ref 631* 766* 1039* 1087* 1103* projfile based structure level 1 dcl 9-6 projfile_ep 14 based pointer level 3 dcl 3-9 ref 147 161 projfiletab 10 based structure array level 2 dcl 9-6 prompt parameter char packed unaligned dcl 1285 in procedure "quota_value" set ref 1282 1307* prompt parameter char packed unaligned dcl 1111 in procedure "sfb17" set ref 1108 1125* prompt parameter char packed unaligned dcl 1159 in procedure "sfb9uu" set ref 1156 1173* prompt parameter char packed unaligned dcl 995 in procedure "simple_string" set ref 993 1006* prompt parameter char packed unaligned dcl 1134 in procedure "sfb17u" set ref 1131 1150* prompt parameter char packed unaligned dcl 1017 in procedure "get_string" set ref 1015 1043* prompt parameter char packed unaligned dcl 1218 in procedure "get_fb" set ref 1215 1237* prompt_after_explanation 1(06) 001004 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* 951* 1033* ptr 32 based pointer level 3 in structure "edit_proj_arg" dcl 3-9 in procedure "edit_proj_" ref 220 245 268 283 356 357 373 417 418 433 474 504 505 524 587 722 846 847 864 1001 1186 1186 1211 ptr 26 based pointer level 3 in structure "edit_proj_arg" dcl 3-9 in procedure "edit_proj_" ref 196 300 301 363 364 424 425 461 464 464 464 467 511 512 578 578 711 711 711 711 854 855 899 900 1023 1184 1184 1225 qtype parameter char(3) packed unaligned dcl 1284 ref 1282 1301 1322 1327 1337 query_code 3 001004 automatic fixed bin(35,0) initial level 2 dcl 1-7 set ref 1-7* query_info 001004 automatic structure level 1 dcl 1-7 set ref 955 955 1043 1043 query_info_version_6 constant fixed bin(17,0) initial dcl 1-36 ref 946 1028 question_iocbp 4 001004 automatic pointer initial level 2 dcl 1-7 set ref 1-7* repeat_time 10 001004 automatic fixed bin(71,0) initial level 2 dcl 1-7 set ref 1-7* report_project_name 22(02) based bit(1) level 3 packed packed unaligned dcl 3-9 set ref 629 764 1037 1087* 1103* req_amt 44 based float bin(63) level 2 dcl 82 set ref 311 313* 329 340 344 344* 346* 977 980* 980 982* 982 reqfile based structure level 1 dcl 10-5 reqfile_ep 16 based pointer level 3 dcl 3-9 ref 148 162 reqfiletab 10 based structure array level 2 dcl 10-5 reqno 6 based char(12) level 2 packed packed unaligned dcl 82 set ref 282 287 955* 969* 1069* 1071* reset_attr 000114 automatic bit(36) packed unaligned dcl 52 set ref 524* 529 529 541* 548 555 response 001322 automatic char(500) packed unaligned dcl 1019 in procedure "get_string" set ref 1043* 1045 1047 response 001054 automatic char(12) packed unaligned dcl 937 in procedure "dispose_of_old_charges" set ref 955* 959 964 967 974 rs_name 000102 automatic char(32) packed unaligned dcl 50 set ref 432* 433 437 451* rs_number 115(18) based fixed bin(9,0) level 2 in structure "Nsate" packed packed unsigned unaligned dcl 79 in procedure "edit_proj_" set ref 432 449 452* rs_number 000112 automatic fixed bin(17,0) dcl 51 in procedure "edit_proj_" set ref 443* 449 452 rtrim builtin function dcl 90 ref 464 464 483 483 711 711 745 745 791 791 953 1269 1270 satep 12 based pointer level 3 dcl 3-9 ref 146 160 sb_ok 0(14) 001002 automatic bit(1) level 2 packed packed unaligned dcl 83 set ref 527* 527 553* 553 557* 557 seg_pointers 12 based structure level 2 dcl 3-9 seg_quota 23(03) based bit(1) level 3 packed packed unaligned dcl 3-9 set ref 1337* set_attr 000113 automatic bit(36) packed unaligned dcl 52 set ref 524* 529 529 541* 548 555 sign 000760 automatic char(1) packed unaligned dcl 62 set ref 310* 318* 329 1311* 1312 1312 1312* 1322 status_code 2 001004 automatic fixed bin(35,0) initial level 2 dcl 1-7 set ref 1-7* string builtin function dcl 90 set ref 529 529 555* 555 559 559 sub_err_ 000070 constant entry external dcl 129 ref 295 301 357 364 418 425 464 467 505 512 711 847 855 894 900 1198 1256 1293 substr builtin function dcl 90 ref 318 318 318 494 619 666 754 801 1087 1087 1103 1103 1311 sup 40 based char(32) level 2 packed packed unaligned dcl 81 set ref 219 223* 224 226* 229 231* 240 sup_addr 50 based char(32) level 2 packed packed unaligned dcl 81 set ref 227* 244 248* 249 249* 251 253* sup_phone 60 based char(16) level 2 packed packed unaligned dcl 81 set ref 259* suppress_name_sw 1(01) 001004 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* 948* 1030* suppress_spacing 1(04) 001004 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* 949* 1031* switches 1 001004 automatic structure level 2 dcl 1-7 system_info_$rs_name 000066 constant entry external dcl 128 ref 432 system_info_$rs_number 000064 constant entry external dcl 127 ref 417 424 443 target parameter fixed bin(35,0) dcl 1286 in procedure "quota_value" ref 1282 target parameter char packed unaligned dcl 1018 in procedure "get_string" set ref 1015 1023* 1043 1043* 1047* target parameter fixed bin(17,0) dcl 1113 in procedure "sfb17" set ref 1108 1121 1125 1126* target parameter char packed unaligned dcl 996 in procedure "simple_string" set ref 993 1001 1005 1006* 1007 1010* target parameter fixed bin(17,0) packed unaligned dcl 1136 in procedure "sfb17u" set ref 1131 1146 1150 1151* target parameter fixed bin(9,0) packed unsigned unaligned dcl 1161 in procedure "sfb9uu" set ref 1156 1169 1173 1174* temp_aim_range 000765 automatic bit(72) array dcl 65 set ref 846* 854* 864* 865 872* 879 883* 885 temp_attr 001002 automatic structure level 1 packed packed unaligned dcl 83 set ref 525* 529 529 551* 555* 555 559 561 561 563 temp_audit 000771 automatic bit(36) dcl 66 set ref 899* 909* 916* 923 927* 930 test parameter fixed bin(17,0) dcl 1208 ref 1205 1212 title 3 based char(52) level 2 packed packed unaligned dcl 81 set ref 201* u 001642 automatic varying char(32) dcl 1266 set ref 1269* 1271 1275 1277 1277 unspec builtin function dcl 90 ref 865 865 879 879 user_attributes based structure level 1 dcl 5-21 userid 31 based char(30) array level 3 packed packed unaligned dcl 79 set ref 587 592 596 600 602* 604* 604 606* 616 618* 619* 619 636 639 642 646 648* 650* 650 652* 663 665* 666* 666 value_index 24 based fixed bin(17,0) level 2 dcl 3-9 set ref 153* 164* verify builtin function dcl 90 ref 1277 1277 version 001004 automatic fixed bin(17,0) level 2 dcl 1-7 set ref 946* 1028* vstr 000122 automatic varying char(200) dcl 57 set ref 535* 536 562* vstr2 000205 automatic varying char(200) dcl 57 set ref 561* 562* x 001034 automatic fixed bin(17,0) dcl 171 set ref 176* 177* yes_or_no_sw 1 001004 automatic bit(1) initial level 3 packed packed unaligned dcl 1-7 set ref 1-7* 947* 1029* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 6-38 ACTION_CAN_RESTART internal static bit(36) initial dcl 2-7 ACTION_DEFAULT_RESTART internal static bit(36) initial dcl 2-7 ACTION_QUIET_RESTART internal static bit(36) initial dcl 2-7 ACTION_SUPPORT_SIGNAL internal static bit(36) initial dcl 2-7 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 5-77 EDIT_PROJ_ARGS_V_2 internal static char(8) initial packed unaligned dcl 3-43 MGT_version_3 internal static fixed bin(17,0) initial dcl 11-25 PROJFILE_VERSION internal static fixed bin(17,0) initial dcl 9-33 PROJ_KEYS_MATCH internal static fixed bin(17,0) initial array dcl 4-106 PROJ_KEY_VALUES internal static fixed bin(17,0) initial array dcl 4-68 REQFILE_VERSION internal static fixed bin(17,0) initial dcl 10-28 SAT_entry_lth internal static fixed bin(17,0) initial dcl 7-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 7-24 SAT_project_name_length internal static fixed bin(17,0) initial dcl 7-24 SAT_version internal static fixed bin(17,0) initial dcl 7-24 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 5-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 5-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 5-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 5-50 lope internal static fixed bin(17,0) initial dcl 9-30 loph internal static fixed bin(17,0) initial dcl 9-30 loqe internal static fixed bin(17,0) initial dcl 10-25 loqh internal static fixed bin(17,0) initial dcl 10-25 pp automatic pointer dcl 68 qp automatic pointer dcl 68 query_info_version_3 internal static fixed bin(17,0) initial dcl 1-33 query_info_version_4 internal static fixed bin(17,0) initial dcl 1-34 query_info_version_5 internal static fixed bin(17,0) initial dcl 1-35 sat based structure level 1 dcl 7-32 satep automatic pointer dcl 77 satp automatic pointer dcl 77 user_abs_attributes based structure level 1 dcl 6-25 work_class based structure level 1 dcl 11-94 NAMES DECLARED BY EXPLICIT CONTEXT. ATTR_LOOP 006057 constant label dcl 536 ref 545 DEFAULT_GROUP_LOOP 005172 constant label dcl 478 ref 486 491 DONE_ADMIN 007544 constant label dcl 671 ref 636 646 DONE_GROUPS 010746 constant label dcl 805 set ref 771 HAVE_MATCHING_ADMIN 006744 constant label dcl 592 ref 587 HAVE_MATCHING_GROUP 010074 constant label dcl 726 ref 722 RETURN 012277 constant label dcl 1366 ref 1345 RE_GET_ADMIN 007274 constant label dcl 639 ref 660 RE_GET_AUDIT 012122 constant label dcl 910 ref 920 RE_GET_AUTH 011525 constant label dcl 870 RE_GET_CUTOFF 004105 constant label dcl 380 RE_GET_FB 014441 constant label dcl 1235 ref 1242 RE_GET_QUOTA 015305 constant label dcl 1305 ref 1319 RE_PROMPT_FOR_VALID_GROUP 010455 constant label dcl 774 ref 795 RE_PROMPT_ONE_ADMIN 006744 constant label dcl 592 set ref 614 RE_PROMPT_ONE_GROUP 010074 constant label dcl 726 ref 749 RE_QUERY 012337 constant label dcl 955 ref 988 RS_LOOP 004621 constant label dcl 437 ref 447 change_account 013125 constant entry internal dcl 1053 ref 274 change_requisition 013201 constant entry internal dcl 1064 ref 287 check 002345 constant entry external dcl 157 check_admin 014625 constant entry internal dcl 1251 ref 578 check_admin_ 014732 constant entry internal dcl 1262 ref 610 657 1256 dispose_of_old_charges 012300 constant entry internal dcl 934 ref 1058 1070 edit_proj_ 002277 constant entry external dcl 27 get_fb 014346 constant entry internal dcl 1215 ref 1125 1150 1173 get_string 012725 constant entry internal dcl 1015 ref 223 248 273 286 314 383 439 480 538 595 641 729 776 870 912 1006 1237 1307 item 000000 constant label array(29) dcl 201 ref 197 326 337 388 876 long_report 013256 constant entry internal dcl 1076 ref 231 253 344 394 451 562 618 665 753 800 884 929 1010 1057 1069 1230 1246 1329 1333 long_report_ 013423 constant entry internal dcl 1092 ref 602 616 648 663 736 751 783 798 no_match 015544 constant entry internal dcl 1343 ref 220 245 268 283 374 433 474 529 590 865 1001 1121 1146 1169 process_all_items 002402 constant entry internal dcl 168 ref 151 process_one_item 002473 constant entry internal dcl 187 ref 153 164 177 quota_value 015130 constant entry internal dcl 1282 ref 676 681 sfb17 013557 constant entry internal dcl 1108 ref 568 810 815 sfb17u 013661 constant entry internal dcl 1131 ref 820 836 sfb9uu 014002 constant entry internal dcl 1156 ref 826 831 sfbcheck 014123 constant entry internal dcl 1179 ref 1118 1143 1166 1296 sfbcheck_ 014166 constant entry internal dcl 1191 ref 1184 1186 sfbmatch 014311 constant entry internal dcl 1205 ref 1121 1146 1169 simple_string 012577 constant entry internal dcl 993 ref 201 206 211 259 402 407 689 694 valid_group 015547 constant entry internal dcl 1348 ref 464 483 711 745 791 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 16664 16756 16311 16674 Length 17510 16311 72 516 353 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME edit_proj_ 1794 external procedure is an external procedure. process_all_items internal procedure shares stack frame of external procedure edit_proj_. process_one_item internal procedure shares stack frame of external procedure edit_proj_. dispose_of_old_charges internal procedure shares stack frame of external procedure edit_proj_. simple_string internal procedure shares stack frame of external procedure edit_proj_. get_string internal procedure shares stack frame of external procedure edit_proj_. change_account internal procedure shares stack frame of external procedure edit_proj_. change_requisition internal procedure shares stack frame of external procedure edit_proj_. long_report 380 internal procedure is declared options(variable). long_report_ 376 internal procedure is declared options(variable). sfb17 internal procedure shares stack frame of external procedure edit_proj_. sfb17u internal procedure shares stack frame of external procedure edit_proj_. sfb9uu internal procedure shares stack frame of external procedure edit_proj_. sfbcheck internal procedure shares stack frame of external procedure edit_proj_. sfbcheck_ internal procedure shares stack frame of external procedure edit_proj_. sfbmatch internal procedure shares stack frame of external procedure edit_proj_. get_fb internal procedure shares stack frame of external procedure edit_proj_. check_admin internal procedure shares stack frame of external procedure edit_proj_. check_admin_ internal procedure shares stack frame of external procedure edit_proj_. quota_value internal procedure shares stack frame of external procedure edit_proj_. no_match internal procedure shares stack frame of external procedure edit_proj_. valid_group 67 internal procedure is called during a stack extension. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME edit_proj_ 000100 code edit_proj_ 000101 printed_projname edit_proj_ 000102 rs_name edit_proj_ 000112 rs_number edit_proj_ 000113 set_attr edit_proj_ 000114 reset_attr edit_proj_ 000116 midnight edit_proj_ 000120 i edit_proj_ 000121 j edit_proj_ 000122 vstr edit_proj_ 000205 vstr2 edit_proj_ 000270 char_16 edit_proj_ 000274 char_32 edit_proj_ 000304 char_100 edit_proj_ 000335 char_100_2 edit_proj_ 000366 char_500 edit_proj_ 000563 char_500_2 edit_proj_ 000760 sign edit_proj_ 000762 fb71 edit_proj_ 000764 ftemp edit_proj_ 000765 temp_aim_range edit_proj_ 000771 temp_audit edit_proj_ 000772 mgtp edit_proj_ 000774 Nsatep edit_proj_ 000776 Nprojfile_p edit_proj_ 001000 Nreqfile_p edit_proj_ 001002 temp_attr edit_proj_ 001004 query_info edit_proj_ 001022 edit_proj_arg_ptr edit_proj_ 001024 mgtep edit_proj_ 001034 x process_all_items 001035 again process_all_items 001044 new process_one_item 001054 response dispose_of_old_charges 001066 old_target simple_string 001322 response get_string 001542 junk sfb17 001552 junk sfb17u 001562 junk sfb9uu 001600 junk sfbcheck_ 001610 junk sfbmatch 001620 fb_string get_fb 001642 u check_admin_ 001653 p check_admin_ 001672 junk quota_value 001673 new_string quota_value 001700 old_string quota_value long_report 000100 alp long_report 000102 change_string long_report 000474 csl long_report long_report_ 000100 alp long_report_ 000102 change_string long_report_ 000474 csl long_report_ valid_group 000100 groupx valid_group THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc return_mac shorten_stack ext_entry int_entry int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ command_query_ command_query_$yes_no convert_access_audit_flags_$edit_from_string convert_access_audit_flags_$from_string convert_access_audit_flags_$to_string convert_access_class_$from_string_range convert_access_class_$to_string_range convert_access_class_$to_string_range_short convert_date_to_binary_ convert_date_to_binary_$relative cu_$arg_list_ptr cv_dec_check_ cv_float_ date_time_ datebin_$last_midnight format_attributes_ ioa_ ioa_$general_rs ioa_$rsnnl parse_attributes_ sub_err_ system_info_$rs_name system_info_$rs_number THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 7 002242 27 002274 142 002305 143 002306 145 002307 146 002313 147 002315 148 002317 149 002321 151 002323 153 002330 155 002342 157 002343 159 002353 160 002357 161 002361 162 002363 163 002365 164 002367 165 002401 168 002402 174 002403 175 002405 176 002411 177 002417 178 002431 179 002433 180 002471 182 002472 187 002473 196 002475 197 002503 201 002505 203 002524 206 002525 208 002547 211 002550 213 002571 216 002572 219 002576 220 002602 223 002614 224 002636 226 002643 227 002646 229 002651 231 002655 232 002701 234 002704 237 002705 240 002711 244 002722 245 002726 248 002740 249 002762 251 002772 253 002776 254 003022 256 003025 259 003026 261 003045 264 003046 267 003052 268 003056 273 003070 274 003075 276 003105 279 003106 282 003112 283 003116 286 003130 287 003137 289 003147 292 003150 295 003154 298 003223 300 003225 301 003252 305 003327 309 003330 310 003333 311 003335 313 003344 314 003374 315 003401 318 003410 321 003420 322 003445 324 003447 326 003500 329 003501 332 003510 334 003512 337 003540 340 003541 342 003544 343 003547 344 003552 346 003612 348 003615 351 003616 354 003622 356 003626 357 003654 361 003731 363 003733 364 003762 368 004037 371 004040 373 004044 374 004071 378 004076 380 004105 382 004123 383 004126 384 004136 385 004165 387 004167 388 004220 391 004221 393 004225 394 004242 395 004263 396 004266 397 004271 399 004274 402 004275 404 004316 407 004317 409 004340 412 004341 415 004344 417 004347 418 004374 422 004451 424 004453 425 004501 429 004556 432 004557 433 004606 437 004621 439 004624 440 004633 443 004640 444 004664 446 004666 447 004716 449 004717 451 004725 452 004746 453 004752 455 004755 458 004756 461 004761 464 004771 467 005103 471 005156 474 005157 478 005172 480 005176 481 005205 483 005212 485 005251 486 005303 488 005304 490 005310 491 005336 494 005337 495 005343 496 005346 499 005347 502 005352 504 005355 505 005407 509 005464 511 005466 512 005521 516 005576 522 005577 524 005602 525 005632 526 005775 527 006005 528 006015 529 006025 535 006037 536 006057 538 006063 539 006073 541 006100 542 006127 544 006131 545 006162 548 006163 551 006167 552 006332 553 006342 554 006352 555 006362 556 006371 557 006401 558 006411 559 006421 561 006425 562 006444 563 006467 564 006632 565 006635 568 006636 570 006667 574 006670 578 006673 581 006715 584 006716 586 006721 587 006727 589 006741 590 006743 592 006744 595 006753 596 006762 598 006774 600 007004 602 007010 603 007030 604 007035 605 007046 606 007050 608 007054 610 007055 612 007063 614 007114 616 007115 618 007146 619 007172 621 007201 622 007206 629 007207 631 007214 632 007237 634 007241 635 007255 636 007263 639 007274 641 007303 642 007312 644 007324 646 007330 648 007334 649 007354 650 007361 651 007371 652 007373 653 007377 654 007401 655 007406 657 007407 659 007415 660 007446 663 007447 665 007500 666 007526 667 007535 669 007542 671 007544 676 007545 678 007574 681 007575 683 007624 686 007625 689 007630 690 007635 692 007636 693 007642 694 007656 695 007675 697 007702 698 007705 702 007717 706 007720 711 007723 716 010045 719 010047 721 010052 722 010057 724 010071 725 010073 726 010074 729 010103 730 010110 732 010122 734 010132 736 010140 737 010162 739 010172 740 010176 741 010200 743 010203 745 010204 747 010243 749 010275 751 010276 753 010332 754 010356 755 010365 757 010370 764 010371 766 010376 767 010421 769 010423 770 010437 771 010445 774 010455 776 010464 777 010471 779 010503 781 010507 783 010514 784 010536 786 010546 787 010552 788 010554 789 010557 791 010560 793 010617 795 010651 798 010652 800 010706 801 010732 802 010741 804 010744 805 010746 810 010747 812 011005 815 011006 817 011041 820 011042 822 011077 826 011100 828 011134 831 011135 833 011171 836 011172 838 011224 841 011225 844 011231 846 011235 847 011261 852 011336 854 011340 855 011365 859 011442 862 011443 864 011447 865 011474 869 011502 870 011525 872 011534 873 011555 875 011557 876 011610 879 011611 882 011617 883 011641 884 011663 885 011706 886 011712 887 011715 891 011716 894 011721 897 011767 899 011771 900 012016 904 012073 908 012074 909 012117 910 012122 912 012125 913 012134 916 012141 917 012162 919 012164 920 012215 923 012216 927 012223 929 012245 930 012270 931 012273 932 012276 1366 012277 934 012300 942 012301 946 012307 947 012311 948 012313 949 012315 950 012317 951 012321 952 012323 953 012325 955 012337 959 012410 961 012414 962 012417 963 012420 964 012421 966 012425 967 012426 969 012432 971 012462 972 012465 973 012466 974 012467 976 012473 977 012514 980 012522 982 012547 983 012553 985 012555 987 012556 988 012575 990 012576 993 012577 999 012615 1001 012622 1005 012641 1006 012647 1007 012664 1010 012674 1011 012721 1012 012724 1015 012725 1021 012743 1023 012745 1024 012755 1025 012756 1028 012757 1029 012761 1030 012763 1031 012765 1032 012767 1033 012771 1034 012773 1035 012775 1037 012776 1039 013004 1040 013027 1043 013031 1045 013111 1047 013116 1049 013124 1053 013125 1057 013136 1058 013165 1059 013166 1060 013175 1061 013200 1064 013201 1069 013212 1070 013241 1071 013242 1072 013251 1073 013254 1076 013255 1083 013263 1085 013270 1086 013276 1087 013344 1089 013420 1092 013422 1099 013430 1101 013435 1102 013443 1103 013511 1105 013555 1108 013557 1116 013570 1118 013574 1119 013605 1121 013606 1125 013623 1126 013655 1127 013660 1131 013661 1141 013672 1143 013676 1144 013707 1146 013710 1150 013732 1151 013771 1152 014001 1156 014002 1164 014013 1166 014017 1167 014030 1169 014031 1173 014053 1174 014112 1175 014122 1179 014123 1184 014125 1186 014145 1189 014165 1191 014166 1197 014177 1198 014221 1201 014310 1205 014311 1211 014313 1212 014340 1215 014346 1223 014357 1225 014361 1226 014407 1227 014410 1229 014414 1230 014417 1232 014440 1235 014441 1237 014467 1238 014504 1239 014525 1241 014537 1242 014573 1244 014574 1246 014600 1247 014621 1248 014624 1251 014625 1256 014636 1259 014731 1262 014732 1269 014743 1270 014773 1271 015030 1273 015040 1275 015047 1277 015063 1279 015125 1282 015130 1291 015141 1293 015145 1296 015214 1298 015223 1301 015224 1303 015260 1305 015305 1307 015310 1308 015326 1311 015333 1312 015336 1314 015344 1315 015364 1317 015366 1319 015417 1322 015420 1325 015437 1327 015444 1329 015452 1330 015474 1331 015477 1333 015500 1334 015522 1336 015525 1337 015530 1339 015541 1340 015543 1343 015544 1345 015545 1348 015546 1353 015562 1356 015567 1358 015600 1359 015611 1360 015617 1362 015631 1363 015633 ----------------------------------------------------------- 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