! ----- COPY_THIS_USER_ACCOUNT.FUN ----- ! ! ----- SUBROUTINE TO COPY THE USER'S ACCOUNT FROM ANOTHER ----- ! ----- NODE TO THE CURRENT (AND ALL DUPLICATE) NODE'S SYSUAF FILE ----- ! ! ---------- PASSED: ---------- ! ! ----- COPY_USER_FILE_DATA = Remote node's SYSUAF data to copy ! ! ----- DBMS_EXISTS = TRUE if DBMS application is installed ! ! ----- DBMS_PREFIX = 3-char identifier prefix for the database ! ----- product ! ! ----- DBMS_PRODUCT = Description of database product ! ! ----- ENTERED_RESTRICTED = "Y" if this user is Restricted ! ! ----- ENTERED_USERNAME = Username whose acct is to be created ! ! ----- FOUR_GL = Description of 4GL language ! ! ----- FOUR_GL_EXISTS = TRUE if 4GL is installed ! ! ----- FOUR_GL_PREFIX = 4-char identifier prefix for the 4GL ! ! ----- PRTQ = Default Print Queue array index to use for ! ----- division ! ! ----- SPECIFIC_NODE = (Optional) Specific node to grant ! ----- identifiers on (Default of only the ! ----- local node) (and all duplicate nodes); ! ----- Or "*", which is a special code to tell ! ----- this function to only copy the SYSUAF ! ----- data to duplicate node(s) (since it was ! ----- just added onto the current node) ! ! ----- Last Change 01/27/94 by Brian Lomasky ----- ! SUB COPY_THIS_USER_ACCOUNT(WORD PRTQ, & STRING ENTERED_RESTRICTED, STRING SPECIFIC_NODE) %INCLUDE "NUSER.INC" DECLARE STRING A_NODE ! NODE TO COPY USER TO DECLARE WORD COPY_TO_DUPL_ONLY ! TRUE TO ONLY COPY TO DUPL NODE DECLARE STRING DEFAULT_NODE ! NULL STRING TO ACCESS DEFAULT DECLARE STRING HELD_IDENT ! ONE HELD IDENTIFIER DECLARE LONG HELD_IDENT_INDEX ! HELD IDENTIFIER ARRAY INDEX DECLARE WORD I_O_CHNL_SYSUAF ! SYSUAF I/O CHANNEL TO ACCESS DECLARE STRING LOCAL_SPECIFIC ! LOCAL COPY OF SPECIFIC NODE DECLARE WORD NODE_INDEX ! LIST OF NODES TO COPY USER DECLARE WORD RECORD_FOUND ! TRUE IF MATCHING RECORD FOUND DECLARE WORD SYSUAF_CHNL ! SYSUAF.DAT I/O CHANNEL TO USE DECLARE WORD TEMP ! TEMPORARY WORD VARIABLE DECLARE STRING THE_DB ! DEFAULT PRODUCTION DATABASE MAP (UAFCOPD) LONG SAVE_UIC, & STRING SAVE_ACCOUNT_NAME = 32%, & BYTE SAVE_OWNER_NAME_LENGTH, & STRING SAVE_OWNER_NAME = 31%, & BYTE SAVE_DEVICE_LENGTH, & STRING SAVE_THE_DEVICE = 31%, & BYTE SAVE_DIRECTORY_NAME_LENGTH, & STRING SAVE_DIRECTORY_NAME = 63%, & BYTE SAVE_LOGIN_COMMAND_FILE_LENGTH, & STRING SAVE_LOGIN_COMMAND_FILE = 63%, & STRING SAVE_PASSWORD = 8%, & STRING SAVE_PASSWORD2 = 8%, & WORD SAVE_RANDOM_PASSWORD_SEED, & BYTE SAVE_ENCRYPTION_ALGORITHM, & BYTE SAVE_ENCRYPTION_ALGORITHM_PWD2, & BYTE SAVE_MINIMUM_PASSWORD_LENGTH, & LONG SAVE_ACCOUNT_EXPIRATION_DATE(1%), & LONG SAVE_PASSWORD_LIFETIME(1%), & LONG SAVE_DATE_OF_PASSWORD_CHANGE(1%), & LONG SAVE_DATE_OF_PASSWORD2_CHNGE(1%), & BYTE SAVE_PRIVILEGES(7%), & BYTE SAVE_DEFAULT_PRIVILEGES(7%), & STRING SAVE_MINIMUM_SECURITY_CLASS=20%, & STRING SAVE_MAXIMUM_SECURITY_CLASS=20%, & BYTE SAVE_FLAGS(3%), & BYTE SAVE_NETWORK_ACCESS(5%), & BYTE SAVE_BATCH_ACCESS(5%), & BYTE SAVE_LOCAL_ACCESS(5%), & BYTE SAVE_DIALUP_ACCESS(5%), & BYTE SAVE_REMOTE_ACCESS(5%), & BYTE SAVE_PRIMEDAYS, & WORD SAVE_MAXJOBS, & WORD SAVE_MAXACCTJOBS, & WORD SAVE_MAXDETACH, & WORD SAVE_PRCLM, & WORD SAVE_BIOLM, & WORD SAVE_DIOLM, & WORD SAVE_TQELM, & WORD SAVE_ASTLM, & WORD SAVE_ENQLM, & WORD SAVE_FILLM, & WORD SAVE_SHRFILLM, & LONG SAVE_WSQUOTA, & LONG SAVE_WSDEFAULT, & LONG SAVE_WSEXTENT, & LONG SAVE_PGFLQUOTA, & LONG SAVE_CPUTIME, & LONG SAVE_BYTLM, & LONG SAVE_PBYTLM, & LONG SAVE_JTQUOTA, & WORD SAVE_PROXY_LIM, & WORD SAVE_PROXIES, & WORD SAVE_ACNT_LIM, & WORD SAVE_ACCOUNTS EXTERNAL WORD FUNCTION & ADD_IDENTIFIER(WORD) ! ADD AN IDENTIFIER EXTERNAL WORD FUNCTION CALC_DUPL_NODES( & STRING) ! RETURN LIST OF DUPL NODES EXTERNAL SUB & CREATE_ROOT_DIRECTORY ! CREATE THE ROOT DIRECTORY EXTERNAL SUB CREATE_SPECIAL_LOGIN_COM(WORD, & STRING) ! CREATE SPECIAL LOGIN.COM FILE EXTERNAL WORD FUNCTION & DELETE_SYSUAF_RECORD ! DELETE THE SYSUAF RECORD EXTERNAL WORD FUNCTION DISK_QUOTA( & STRING) ! ADD OR DELETE A DISK QUOTA EXTERNAL WORD FUNCTION GRANT_IDENTIFIER(STRING, WORD, & STRING) ! GRANT AN IDENTIFIER EXTERNAL WORD FUNCTION STORE_SYSUAF_RECORD( & WORD) ! STORE A NEW SYSUAF RECORD IF SPECIFIC_NODE = "*" THEN COPY_TO_DUPL_ONLY = TRUE! ONLY COPY TO DUPL NODES LOCAL_SPECIFIC = "" ! LOCAL COPY OF SPECIFIC NODE ELSE COPY_TO_DUPL_ONLY = FALSE LOCAL_SPECIFIC = SPECIFIC_NODE END IF ! ----- RESTORE THE SYSUAF DATA TO BE COPIED ----- UAF_REC = COPY_USER_FILE_DATA ! ----- STORE FIELDS TO BE COPIED ----- SAVE_UIC = UIC SAVE_ACCOUNT_NAME = ACCOUNT_NAME SAVE_OWNER_NAME_LENGTH = OWNER_NAME_LENGTH SAVE_OWNER_NAME = OWNER_NAME SAVE_DEVICE_LENGTH = DEVICE_LENGTH SAVE_THE_DEVICE = THE_DEVICE SAVE_DIRECTORY_NAME_LENGTH = DIRECTORY_NAME_LENGTH SAVE_DIRECTORY_NAME = DIRECTORY_NAME SAVE_LOGIN_COMMAND_FILE_LENGTH = LOGIN_COMMAND_FILE_LENGTH SAVE_LOGIN_COMMAND_FILE = LOGIN_COMMAND_FILE SAVE_PASSWORD = PASSWORD SAVE_PASSWORD2 = PASSWORD2 SAVE_RANDOM_PASSWORD_SEED = RANDOM_PASSWORD_SEED SAVE_ENCRYPTION_ALGORITHM = ENCRYPTION_ALGORITHM SAVE_ENCRYPTION_ALGORITHM_PWD2 = ENCRYPTION_ALGORITHM_PASSWORD2 SAVE_MINIMUM_PASSWORD_LENGTH = MINIMUM_PASSWORD_LENGTH SAVE_ACCOUNT_EXPIRATION_DATE(0%) = ACCOUNT_EXPIRATION_DATE(0%) SAVE_ACCOUNT_EXPIRATION_DATE(1%) = ACCOUNT_EXPIRATION_DATE(1%) SAVE_PASSWORD_LIFETIME(0%) = PASSWORD_LIFETIME(0%) SAVE_PASSWORD_LIFETIME(1%) = PASSWORD_LIFETIME(1%) SAVE_DATE_OF_PASSWORD_CHANGE(0%) = DATE_OF_PASSWORD_CHANGE(0%) SAVE_DATE_OF_PASSWORD_CHANGE(1%) = DATE_OF_PASSWORD_CHANGE(1%) SAVE_DATE_OF_PASSWORD2_CHNGE(0%) = DATE_OF_PASSWORD2_CHNGE(0%) SAVE_DATE_OF_PASSWORD2_CHNGE(1%) = DATE_OF_PASSWORD2_CHNGE(1%) SAVE_PRIVILEGES(0%) = PRIVILEGES(0%) SAVE_PRIVILEGES(1%) = PRIVILEGES(1%) SAVE_PRIVILEGES(2%) = PRIVILEGES(2%) SAVE_PRIVILEGES(3%) = PRIVILEGES(3%) SAVE_PRIVILEGES(4%) = PRIVILEGES(4%) SAVE_PRIVILEGES(5%) = PRIVILEGES(5%) SAVE_PRIVILEGES(6%) = PRIVILEGES(6%) SAVE_PRIVILEGES(7%) = PRIVILEGES(7%) SAVE_DEFAULT_PRIVILEGES(0%) = DEFAULT_PRIVILEGES(0%) SAVE_DEFAULT_PRIVILEGES(1%) = DEFAULT_PRIVILEGES(1%) SAVE_DEFAULT_PRIVILEGES(2%) = DEFAULT_PRIVILEGES(2%) SAVE_DEFAULT_PRIVILEGES(3%) = DEFAULT_PRIVILEGES(3%) SAVE_DEFAULT_PRIVILEGES(4%) = DEFAULT_PRIVILEGES(4%) SAVE_DEFAULT_PRIVILEGES(5%) = DEFAULT_PRIVILEGES(5%) SAVE_DEFAULT_PRIVILEGES(6%) = DEFAULT_PRIVILEGES(6%) SAVE_DEFAULT_PRIVILEGES(7%) = DEFAULT_PRIVILEGES(7%) SAVE_MINIMUM_SECURITY_CLASS = MINIMUM_SECURITY_CLASS SAVE_MAXIMUM_SECURITY_CLASS = MAXIMUM_SECURITY_CLASS SAVE_FLAGS(0%) = FLAGS(0%) SAVE_FLAGS(1%) = FLAGS(1%) SAVE_FLAGS(2%) = FLAGS(2%) SAVE_FLAGS(3%) = FLAGS(3%) SAVE_NETWORK_ACCESS(0%) = NETWORK_ACCESS(0%) SAVE_NETWORK_ACCESS(1%) = NETWORK_ACCESS(1%) SAVE_NETWORK_ACCESS(2%) = NETWORK_ACCESS(2%) SAVE_NETWORK_ACCESS(3%) = NETWORK_ACCESS(3%) SAVE_NETWORK_ACCESS(4%) = NETWORK_ACCESS(4%) SAVE_NETWORK_ACCESS(5%) = NETWORK_ACCESS(5%) SAVE_BATCH_ACCESS(0%) = BATCH_ACCESS(0%) SAVE_BATCH_ACCESS(1%) = BATCH_ACCESS(1%) SAVE_BATCH_ACCESS(2%) = BATCH_ACCESS(2%) SAVE_BATCH_ACCESS(3%) = BATCH_ACCESS(3%) SAVE_BATCH_ACCESS(4%) = BATCH_ACCESS(4%) SAVE_BATCH_ACCESS(5%) = BATCH_ACCESS(5%) SAVE_LOCAL_ACCESS(0%) = LOCAL_ACCESS(0%) SAVE_LOCAL_ACCESS(1%) = LOCAL_ACCESS(1%) SAVE_LOCAL_ACCESS(2%) = LOCAL_ACCESS(2%) SAVE_LOCAL_ACCESS(3%) = LOCAL_ACCESS(3%) SAVE_LOCAL_ACCESS(4%) = LOCAL_ACCESS(4%) SAVE_LOCAL_ACCESS(5%) = LOCAL_ACCESS(5%) SAVE_DIALUP_ACCESS(0%) = DIALUP_ACCESS(0%) SAVE_DIALUP_ACCESS(1%) = DIALUP_ACCESS(1%) SAVE_DIALUP_ACCESS(2%) = DIALUP_ACCESS(2%) SAVE_DIALUP_ACCESS(3%) = DIALUP_ACCESS(3%) SAVE_DIALUP_ACCESS(4%) = DIALUP_ACCESS(4%) SAVE_DIALUP_ACCESS(5%) = DIALUP_ACCESS(5%) SAVE_REMOTE_ACCESS(0%) = REMOTE_ACCESS(0%) SAVE_REMOTE_ACCESS(1%) = REMOTE_ACCESS(1%) SAVE_REMOTE_ACCESS(2%) = REMOTE_ACCESS(2%) SAVE_REMOTE_ACCESS(3%) = REMOTE_ACCESS(3%) SAVE_REMOTE_ACCESS(4%) = REMOTE_ACCESS(4%) SAVE_REMOTE_ACCESS(5%) = REMOTE_ACCESS(5%) SAVE_PRIMEDAYS = PRIMEDAYS SAVE_MAXJOBS = MAXJOBS SAVE_MAXACCTJOBS = MAXACCTJOBS SAVE_MAXDETACH = MAXDETACH SAVE_PRCLM = PRCLM SAVE_BIOLM = BIOLM SAVE_DIOLM = DIOLM SAVE_TQELM = TQELM SAVE_ASTLM = ASTLM SAVE_ENQLM = ENQLM SAVE_FILLM = FILLM SAVE_SHRFILLM = SHRFILLM SAVE_WSQUOTA = WSQUOTA SAVE_WSDEFAULT = WSDEFAULT SAVE_WSEXTENT = WSEXTENT SAVE_PGFLQUOTA = PGFLQUOTA SAVE_CPUTIME = CPUTIME SAVE_BYTLM = BYTLM SAVE_PBYTLM = PBYTLM SAVE_JTQUOTA = JTQUOTA SAVE_PROXY_LIM = PROXY_LIM SAVE_PROXIES = PROXIES SAVE_ACNT_LIM = ACNT_LIM SAVE_ACCOUNTS = ACCOUNTS ! ----- CALCULATE LIST OF DUPLICATE NODES TO COPY THIS ----- ! ----- USER'S ACCOUNT TO ----- DEFAULT_NODE = "" ! NULL STRING TO ACCESS DEFAULT EXIT SUB IF CALC_DUPL_NODES(DEFAULT_NODE) ! ----- FOR EACH DUPLICATE NODE TO BE ACCESSED: ----- IF COPY_TO_DUPL_ONLY THEN ! ----- SET TO SKIP LOCAL NODE (COPY ONLY DUPL) ----- NODE_INDEX = 1% ELSE NODE_INDEX = 0% ! COPY TO LOCAL NODE (AND DUPL) END IF WHILE NODE_INDEX < NODES_IN_MEMORY NODE_INDEX = NODE_INDEX + 1% A_NODE = NODE_LISTS(NODE_INDEX) ! ----- FOR EACH POSSIBLE SYSUAF: ----- I_O_CHNL_SYSUAF = 0% ! ----- FOR EACH OPEN SYSUAF FILE: ----- WHILE I_O_CHNL_SYSUAF < SYSUAF_COUNTER I_O_CHNL_SYSUAF = I_O_CHNL_SYSUAF + 1% ! ----- SKIP IF SYSUAF UNAVAILABLE ----- ITERATE IF TRM$(SYSUAF_SPECS( & I_O_CHNL_SYSUAF)) = "" ! ----- SKIP IF UNDESIRED NODE ----- ITERATE IF A_NODE <> & TRM$(SYSUAF_NODES(I_O_CHNL_SYSUAF)) IF DEBUG_MODE THEN PRINT "DEBUG> Process SYSUAF #"& + NUM1$(I_O_CHNL_SYSUAF) END IF ! ----- CALCULATE THE REAL I/O CHANNEL ----- SYSUAF_CHNL = I_O_CHNL_SYSUAF + 49% ! ----- SKIP IF USER ALREADY HAS AN ----- ! ----- ACCOUNT ON THE DESIRED NODE ----- USER_NAME = ENTERED_USERNAME RECORD_FOUND = TRUE WHEN ERROR IN GET #SYSUAF_CHNL, & KEY #0% EQ USER_NAME, REGARDLESS USE IF ERR = BUCKET_LOCKED THEN SLEEP 1% RETRY END IF IF ERR = REC_NOT_FOUND THEN RECORD_FOUND = FALSE CONTINUE END IF EXIT HANDLER END WHEN IF RECORD_FOUND THEN UNLOCK #SYSUAF_CHNL ITERATE END IF ! ----- READ IN THE DEFAULT USERNAME ----- ! ----- INFORMATION ----- USER_NAME = "DEFAULT" RECORD_FOUND = TRUE WHEN ERROR IN GET #SYSUAF_CHNL, & KEY #0% EQ USER_NAME, REGARDLESS USE IF ERR = BUCKET_LOCKED THEN SLEEP 1% RETRY END IF IF ERR = REC_NOT_FOUND THEN RECORD_FOUND = FALSE CONTINUE END IF EXIT HANDLER END WHEN IF NOT RECORD_FOUND THEN PRINT PRINT 'Error - No "DEFAULT"' + & ' sysuaf record' + & ' was found on ' + & TRM$(SYSUAF_NODES( & I_O_CHNL_SYSUAF)) + '!' + BEL PRINT CALL SYS$EXIT( & ERROR_WITH_NO_PUTMSG BY VALUE) END IF UNLOCK #SYSUAF_CHNL ! ----- MOVE USER RESPONSE TO MAP ----- USER_NAME = ENTERED_USERNAME ! ----- STORE THE APPROPRIATE INFORMATION ----- ! ----- FROM THE OTHER NODE'S SYSUAF ----- ! ----- RECORD IN THIS NEW SYSUAF RECORD ----- UIC = SAVE_UIC ACCOUNT_NAME = SAVE_ACCOUNT_NAME OWNER_NAME_LENGTH = SAVE_OWNER_NAME_LENGTH OWNER_NAME = SAVE_OWNER_NAME DEVICE_LENGTH = SAVE_DEVICE_LENGTH THE_DEVICE = SAVE_THE_DEVICE DIRECTORY_NAME_LENGTH = & SAVE_DIRECTORY_NAME_LENGTH DIRECTORY_NAME = SAVE_DIRECTORY_NAME LOGIN_COMMAND_FILE_LENGTH = & SAVE_LOGIN_COMMAND_FILE_LENGTH LOGIN_COMMAND_FILE = SAVE_LOGIN_COMMAND_FILE PASSWORD = SAVE_PASSWORD PASSWORD2 = SAVE_PASSWORD2 RANDOM_PASSWORD_SEED = SAVE_RANDOM_PASSWORD_SEED ENCRYPTION_ALGORITHM = SAVE_ENCRYPTION_ALGORITHM ENCRYPTION_ALGORITHM_PASSWORD2 = & SAVE_ENCRYPTION_ALGORITHM_PWD2 MINIMUM_PASSWORD_LENGTH = & SAVE_MINIMUM_PASSWORD_LENGTH ACCOUNT_EXPIRATION_DATE(0%) = & SAVE_ACCOUNT_EXPIRATION_DATE(0%) ACCOUNT_EXPIRATION_DATE(1%) = & SAVE_ACCOUNT_EXPIRATION_DATE(1%) PASSWORD_LIFETIME(0%) = & SAVE_PASSWORD_LIFETIME(0%) PASSWORD_LIFETIME(1%) = & SAVE_PASSWORD_LIFETIME(1%) DATE_OF_PASSWORD_CHANGE(0%) = & SAVE_DATE_OF_PASSWORD_CHANGE(0%) DATE_OF_PASSWORD_CHANGE(1%) = & SAVE_DATE_OF_PASSWORD_CHANGE(1%) DATE_OF_PASSWORD2_CHNGE(0%) = & SAVE_DATE_OF_PASSWORD2_CHNGE(0%) DATE_OF_PASSWORD2_CHNGE(1%) = & SAVE_DATE_OF_PASSWORD2_CHNGE(1%) PRIVILEGES(0%) = SAVE_PRIVILEGES(0%) PRIVILEGES(1%) = SAVE_PRIVILEGES(1%) PRIVILEGES(2%) = SAVE_PRIVILEGES(2%) PRIVILEGES(3%) = SAVE_PRIVILEGES(3%) PRIVILEGES(4%) = SAVE_PRIVILEGES(4%) PRIVILEGES(5%) = SAVE_PRIVILEGES(5%) PRIVILEGES(6%) = SAVE_PRIVILEGES(6%) PRIVILEGES(7%) = SAVE_PRIVILEGES(7%) DEFAULT_PRIVILEGES(0%) = & SAVE_DEFAULT_PRIVILEGES(0%) DEFAULT_PRIVILEGES(1%) = & SAVE_DEFAULT_PRIVILEGES(1%) DEFAULT_PRIVILEGES(2%) = & SAVE_DEFAULT_PRIVILEGES(2%) DEFAULT_PRIVILEGES(3%) = & SAVE_DEFAULT_PRIVILEGES(3%) DEFAULT_PRIVILEGES(4%) = & SAVE_DEFAULT_PRIVILEGES(4%) DEFAULT_PRIVILEGES(5%) = & SAVE_DEFAULT_PRIVILEGES(5%) DEFAULT_PRIVILEGES(6%) = & SAVE_DEFAULT_PRIVILEGES(6%) DEFAULT_PRIVILEGES(7%) = & SAVE_DEFAULT_PRIVILEGES(7%) MINIMUM_SECURITY_CLASS = & SAVE_MINIMUM_SECURITY_CLASS MAXIMUM_SECURITY_CLASS = & SAVE_MAXIMUM_SECURITY_CLASS FLAGS(0%) = SAVE_FLAGS(0%) FLAGS(1%) = SAVE_FLAGS(1%) FLAGS(2%) = SAVE_FLAGS(2%) FLAGS(3%) = SAVE_FLAGS(3%) NETWORK_ACCESS(0%) = SAVE_NETWORK_ACCESS(0%) NETWORK_ACCESS(1%) = SAVE_NETWORK_ACCESS(1%) NETWORK_ACCESS(2%) = SAVE_NETWORK_ACCESS(2%) NETWORK_ACCESS(3%) = SAVE_NETWORK_ACCESS(3%) NETWORK_ACCESS(4%) = SAVE_NETWORK_ACCESS(4%) NETWORK_ACCESS(5%) = SAVE_NETWORK_ACCESS(5%) BATCH_ACCESS(0%) = SAVE_BATCH_ACCESS(0%) BATCH_ACCESS(1%) = SAVE_BATCH_ACCESS(1%) BATCH_ACCESS(2%) = SAVE_BATCH_ACCESS(2%) BATCH_ACCESS(3%) = SAVE_BATCH_ACCESS(3%) BATCH_ACCESS(4%) = SAVE_BATCH_ACCESS(4%) BATCH_ACCESS(5%) = SAVE_BATCH_ACCESS(5%) LOCAL_ACCESS(0%) = SAVE_LOCAL_ACCESS(0%) LOCAL_ACCESS(1%) = SAVE_LOCAL_ACCESS(1%) LOCAL_ACCESS(2%) = SAVE_LOCAL_ACCESS(2%) LOCAL_ACCESS(3%) = SAVE_LOCAL_ACCESS(3%) LOCAL_ACCESS(4%) = SAVE_LOCAL_ACCESS(4%) LOCAL_ACCESS(5%) = SAVE_LOCAL_ACCESS(5%) DIALUP_ACCESS(0%) = SAVE_DIALUP_ACCESS(0%) DIALUP_ACCESS(1%) = SAVE_DIALUP_ACCESS(1%) DIALUP_ACCESS(2%) = SAVE_DIALUP_ACCESS(2%) DIALUP_ACCESS(3%) = SAVE_DIALUP_ACCESS(3%) DIALUP_ACCESS(4%) = SAVE_DIALUP_ACCESS(4%) DIALUP_ACCESS(5%) = SAVE_DIALUP_ACCESS(5%) REMOTE_ACCESS(0%) = SAVE_REMOTE_ACCESS(0%) REMOTE_ACCESS(1%) = SAVE_REMOTE_ACCESS(1%) REMOTE_ACCESS(2%) = SAVE_REMOTE_ACCESS(2%) REMOTE_ACCESS(3%) = SAVE_REMOTE_ACCESS(3%) REMOTE_ACCESS(4%) = SAVE_REMOTE_ACCESS(4%) REMOTE_ACCESS(5%) = SAVE_REMOTE_ACCESS(5%) PRIMEDAYS = SAVE_PRIMEDAYS MAXJOBS = SAVE_MAXJOBS MAXACCTJOBS = SAVE_MAXACCTJOBS MAXDETACH = SAVE_MAXDETACH PRCLM = SAVE_PRCLM BIOLM = SAVE_BIOLM DIOLM = SAVE_DIOLM TQELM = SAVE_TQELM ASTLM = SAVE_ASTLM ENQLM = SAVE_ENQLM FILLM = SAVE_FILLM SHRFILLM = SAVE_SHRFILLM WSQUOTA = SAVE_WSQUOTA WSDEFAULT = SAVE_WSDEFAULT WSEXTENT = SAVE_WSEXTENT PGFLQUOTA = SAVE_PGFLQUOTA CPUTIME = SAVE_CPUTIME BYTLM = SAVE_BYTLM PBYTLM = SAVE_PBYTLM JTQUOTA = SAVE_JTQUOTA PROXY_LIM = SAVE_PROXY_LIM PROXIES = SAVE_PROXIES ACNT_LIM = SAVE_ACNT_LIM ACCOUNTS = SAVE_ACCOUNTS ! ----- STORE THE NEW SYSUAF RECORD ----- IF STORE_SYSUAF_RECORD(SYSUAF_CHNL) THEN PRINT "Notify your VAX" + & " System Manager" + BEL CALL SYS$EXIT( & ERROR_WITH_NO_PUTMSG BY VALUE) END IF ! ----- ADD THE UIC-BASED IDENTIFIER FOR ----- ! ----- THIS USERNAME ----- IF ADD_IDENTIFIER(FALSE) THEN IF NOT COPY_TO_DUPL_ONLY THEN TEMP = DELETE_SYSUAF_RECORD END IF PRINT "Unexpected error while" & + " adding the" + & " user's identifier" PRINT "Please Notify your" + & " VAX System Manager" + BEL CALL SYS$EXIT( & ERROR_WITH_NO_PUTMSG BY VALUE) END IF ! ----- ADD AN "INFINITE" DISK QUOTA FOR ----- ! ----- THIS USER ----- TEMP = DISK_QUOTA("ADD") ! ----- CREATE THE ROOT DIRECTORY FOR ----- ! ----- THIS USERNAME, IF REQUIRED ----- CALL CREATE_ROOT_DIRECTORY ! ----- CREATE SPECIAL LOGIN.COM FILE, ----- ! ----- IF A NON div_PRT PRINT QUEUE ----- ! ----- IS WANTED ----- CALL CREATE_SPECIAL_LOGIN_COM(PRTQ, & ENTERED_RESTRICTED) ! ----- GRANT THE COPIED IDENTIFIERS TO ----- ! ----- THIS USER (SAVE_HELD_IDENTS_STR ----- ! ----- is stored in SEARCH_SYSUAF) ----- HELD_IDENT_INDEX = 0% WHILE HELD_IDENT_INDEX < SAVE_HELD_IDENTS_CTR HELD_IDENT_INDEX = HELD_IDENT_INDEX + 1% HELD_IDENT = TRM$( & SAVE_HELD_IDENTS_STR( & HELD_IDENT_INDEX)) ! ----- SEE IF A DATABASE ----- ! ----- IDENTIFIER ----- IF LEN(HELD_IDENT) = 6% AND DBMS_EXISTS THEN IF LEFT(HELD_IDENT, 3%) & = DBMS_PREFIX THEN ! ----- EXTRACT ----- ! ----- DATABASE ----- ! ----- NUMBER ----- THE_DB = RIGHT( & HELD_IDENT, 4%) PRINT "Granting" + & " user access" & + " to the " + & TRM$( & DBMS_PRODUCT) & + " " + & THE_DB & + " database..." ! ----- GRANT THIS ----- ! ----- USERNAME ----- ! ----- THE ----- ! ----- APPROPRIATE ---- ! ----- IDENTIFIER ----- THE_IDENT = & DBMS_PREFIX + & THE_DB TEMP = GRANT_IDENTIFIER& (LOCAL_SPECIFIC& , FALSE, "") ITERATE END IF END IF ! ----- SEE IF A 4GL IDENTIFIER ----- IF LEN(HELD_IDENT) = 7% AND & FOUR_GL_EXISTS THEN IF LEFT(HELD_IDENT, 4%) & = FOUR_GL_PREFIX THEN ! ----- EXTRACT ----- ! ----- DATABASE ----- ! ----- NUMBER ----- THE_DB = RIGHT( & HELD_IDENT, 5%) PRINT "Granting" + & " user access" & + " to the " + & TRM$(FOUR_GL) & + " " + & THE_DB & + " database..." ! ----- GRANT THIS ----- ! ----- USERNAME ----- ! ----- THE ----- ! ----- APPROPRIATE ---- ! ----- IDENTIFIER ----- THE_IDENT = & FOUR_GL_PREFIX & + THE_DB TEMP = GRANT_IDENTIFIER& (LOCAL_SPECIFIC& , FALSE, "") ITERATE END IF END IF ! ----- GRANT THIS ----- ! ----- NON-DATABASE/NON-4GL ----- ! ----- IDENTIFIER ----- THE_IDENT = HELD_IDENT TEMP = GRANT_IDENTIFIER( & LOCAL_SPECIFIC, FALSE, "") NEXT NEXT NEXT END SUB