SETSVAR OPTION NOHELP PARM P1 ANYPARM P2=![""] # This command will set variables similar to LOCAL variables only these will # not go away when you log off. You can set them either at the SYSTEM, ACCOUNT, # or USER levels This is done by attaching a ";SYSTEM", ";ACCOUNT" or ";USER" # at the end of the variable statement. They can them be later retrived using # GETVAR" command. These variables are # IF BOUND(INSIDEMPEX) AND INSIDEMPEX = 1 ECHO SETSVAR !P1 !P2 > SVTMP RUN CI.PUB.SYS;PARM=3 < SVTMP PURGE SVTMP;TEMP > $NULL ELSE SETVAR _SVSET_STRING,ANYPARM(!P2) SETVAR _SVSET_ENTRY_POINT,UPS(WORD(_SVSET_STRING,,-1)) # Lets see what type this one is. The default is "SYSTEM" SETVAR _SVSET_TRUNC TRUE IF (_SVSET_ENTRY_POINT <> "SYSTEM" & AND _SVSET_ENTRY_POINT <> "ACCOUNT" & AND _SVSET_ENTRY_POINT <> "USER") SETVAR _SVSET_ENTRY_POINT "SYSTEM" SETVAR _SVSET_TRUNC FALSE ENDIF # # If its a System Variable then deal with it here. # IF _SVSET_ENTRY_POINT = "SYSTEM" THEN IF FINFO("/SYS/SYSTEMVAR","EXISTS") THEN SETVAR _SVSET_VAR_NAME UPS("!P1") IF FINFO("/SYS/SYSTEMVAR/!_SVSET_VAR_NAME","EXISTS") THEN INPUT _SVSET_OLDVALUE < /SYS/SYSTEMVAR/!_SVSET_VAR_NAME IF LFT(ANYPARM(!_SVSET_OLDVALUE),1) = "~" THEN SETVAR _SVSET_TYPEOF,STR(ANYPARM(!_SVSET_OLDVALUE),2,1) IF _SVSET_TYPEOF = "4" OR _SVSET_TYPEOF = "5" OR & _SVSET_TYPEOF = "6" ECHO ECHO You can not change a Secured System Variable ECHO SETVAR SYS_VAR_ERROR 110 DELETEVAR _SV@ RETURN ENDIF ENDIF PURGE /SYS/SYSTEMVAR/!_SVSET_VAR_NAME > $NULL ENDIF SETVAR _SVSET_STRING_LEN LEN(_SVSET_STRING) IF _SVSET_TRUNC SETVAR _SVSET_STRING_INT & STR(ANYPARM(!_SVSET_STRING),1,_SVSET_STRING_LEN-7) ELSE SETVAR _SVSET_STRING_INT & STR(ANYPARM(!_SVSET_STRING),1,_SVSET_STRING_LEN) ENDIF SETVAR _SVSET_STRING_FINAL !_SVSET_STRING_INT SETVAR !_SVSET_VAR_NAME !_SVSET_STRING_INT SETVAR _SVSET_X 0 IF SETVAR(_SVSET_TYPEOF,TYPEOF(!_SVSET_VAR_NAME)) = 2 SETVAR _SVSET_X LEN(!_SVSET_VAR_NAME) ENDIF SETVAR _SVSET_ALPHA_LEN RHT("00!_SVSET_X",3) BUILD /SYS/SYSTEMVAR/!_SVSET_VAR_NAME;REC=-200,,F,ASCII;DISC=1;NOCCTL FILE NVARFILE=/SYS/SYSTEMVAR/!_SVSET_VAR_NAME,OLD ECHO ~!_SVSET_TYPEOF!_SVSET_ALPHA_LEN!_SVSET_STRING_FINAL>*NVARFILE ALTSEC /SYS/SYSTEMVAR/!_SVSET_VAR_NAME;REPPAIR=(R,W:@.@) > $NULL ELSE ECHO ECHO System Variable enviroment not set up ECHO ENDIF # # If its an Account variable then deal with it here. # ELSEIF (_SVSET_ENTRY_POINT = "ACCOUNT") THEN IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT","EXISTS") THEN SETVAR _SVSET_VAR_NAME UPS("!P1") IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME","EXISTS") THEN INPUT _SVSET_OLDVALUE < /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME SETVAR _SVSET_TYPEOF,STR(ANYPARM(!_SVSET_OLDVALUE),2,1) IF _SVSET_TYPEOF = "4" OR _SVSET_TYPEOF = "5" OR & _SVSET_TYPEOF = "6" ECHO ECHO You can not change a Secured Account Variable ECHO SETVAR SYS_VAR_ERROR 110 DELETEVAR _SVSET@ RETURN ENDIF PURGE /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME > $NULL ENDIF SETVAR _SVSET_STRING_LEN LEN(_SVSET_STRING) SETVAR _SVSET_STRING_INT & STR(ANYPARM(!_SVSET_STRING),1,_SVSET_STRING_LEN-8) SETVAR _SVSET_STRING_FINAL !_SVSET_STRING_INT SETVAR !_SVSET_VAR_NAME !_SVSET_STRING_INT SETVAR _SVSET_X 0 IF SETVAR(_SVSET_TYPEOF,TYPEOF(!_SVSET_VAR_NAME)) = 2 SETVAR _SVSET_X LEN(!_SVSET_VAR_NAME) ENDIF SETVAR _SVSET_ALPHA_LEN RHT("00!_SVSET_X",3) BUILD /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME;& REC=-200,,F,ASCII;DISC=1;NOCCTL FILE NVARFILE=/SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME,OLD ECHO ~!_SVSET_TYPEOF!_SVSET_ALPHA_LEN!_SVSET_STRING_FINAL>*NVARFILE ALTSEC /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME;& ADDPAIR=(R,W:@.!HPACCOUNT) > $NULL ALTSEC /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME;& DELPAIR=(@.@) > $NULL ELSE ECHO ECHO Account Variable enviroment not set up for this account ECHO ENDIF # # If it's a user level then deal with it here. # ELSEIF (_SVSET_ENTRY_POINT = "USER") THEN IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER","EXISTS") THEN SETVAR _SVSET_VAR_NAME UPS("!P1") IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/& !_SVSET_VAR_NAME","EXISTS") THEN PURGE /SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/!_SVSET_VAR_NAME > $NULL ENDIF SETVAR _SVSET_STRING_LEN LEN(_SVSET_STRING) SETVAR _SVSET_STRING_INT & STR(ANYPARM(!_SVSET_STRING),1,_SVSET_STRING_LEN-5) SETVAR _SVSET_STRING_FINAL !_SVSET_STRING_INT SETVAR !_SVSET_VAR_NAME !_SVSET_STRING_INT SETVAR _SVSET_X 0 IF SETVAR(_SVSET_TYPEOF,TYPEOF(!_SVSET_VAR_NAME)) = 2 SETVAR _SVSET_X LEN(!_SVSET_VAR_NAME) ENDIF SETVAR _SVSET_ALPHA_LEN RHT("00!_SVSET_X",3) BUILD /SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/!_SVSET_VAR_NAME;& REC=-200,,F,ASCII;DISC=1;NOCCTL FILE NVARFILE=/SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/& !_SVSET_VAR_NAME,OLD ECHO ~!_SVSET_TYPEOF!_SVSET_ALPHA_LEN!_SVSET_STRING_FINAL>*NVARFILE ALTSEC /SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/!_SVSET_VAR_NAME;& ADDPAIR=(R,W:!HPUSER.!HPACCOUNT) > $NULL ALTSEC /SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/!_SVSET_VAR_NAME;& DELPAIR=(@.@) > $NULL ELSE ECHO ECHO User Variable enviroment not set up for this user ECHO ENDIF ENDIF DELETEVAR _SVSET_@ ENDIF **** SHOWSVAR OPTION NOHELP PARM FILESET="@",LEVEL="SYSTEM" # This command will look for the ";SYSTEM", ";ACCOUNT", OR "USER" suffixes and # display any variable from the specified variable area that match. All wild # cards work with System and Account variables the same as regular variables. IF BOUND(INSIDEMPEX) AND INSIDEMPEX = 1 RUN CI.PUB.SYS;INFO="SHOWSVAR !FILESET !LEVEL";PARM=3 ELSE SETVAR _SVSHOW_ENTRY_POINT UPS("!LEVEL") SETVAR _SVSHOW_STRING UPS("!FILESET") # # If it's a system, account, or user one then deal with it here # IF "!_SVSHOW_ENTRY_POINT" = "SYSTEM" OR & "!_SVSHOW_ENTRY_POINT" = "ACCOUNT" OR & "!_SVSHOW_ENTRY_POINT" = "USER" SETVAR CIERROR 0 SETVAR _SVSHOW_FILE_NAME,"/!HPACCOUNT/!HPGROUP/SYSVARLT!HPJOBTYPE!HPJOBNUM" PURGE !_SVSHOW_FILE_NAME >$NULL # BUILD !_SVSHOW_FILE_NAME;REC=200,1,F,ASCII;DISC=500 ERRCLEAR IF "!_SVSHOW_ENTRY_POINT" = "SYSTEM" LISTFILE /SYS/SYSTEMVAR/!_SVSHOW_STRING,6>!_SVSHOW_FILE_NAME SETVAR _SVSHOW_LISTFILE_LEN,16 ELSEIF "!_SVSHOW_ENTRY_POINT" = "ACCOUNT" LISTFILE /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSHOW_STRING,6> & !_SVSHOW_FILE_NAME SETVAR _SVSHOW_LISTFILE_LEN,LEN("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/")+1 ELSEIF "!_SVSHOW_ENTRY_POINT" = "USER" LISTFILE /SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/& !_SVSHOW_STRING,6>!_SVSHOW_FILE_NAME SETVAR _SVSHOW_LISTFILE_LEN,& LEN("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/")+1 ENDIF IF CIERROR = 0 ERRCLEAR SETVAR _SVSHOW_NUMBER_VARS,FINFO("!_SVSHOW_FILE_NAME",19) IF CIERROR = 0 ECHO LISTVAR < !_SVSHOW_FILE_NAME PURGE !_SVSHOW_FILE_NAME;TEMP ECHO ELSE ECHO No match found for this variable ENDIF ELSE ECHO No match found for this variable ENDIF ELSE ECHO Invalid level type "!_SVSHOW_ENTRY_POINT" (SYSTEM,ACCOUNT,USER) ENDIF DELETEVAR _SVSHOW_@ ENDIF *** LISTVAR OPTION NOHELP WHILE _SVSHOW_NUMBER_VARS > 0 INPUT _SVSHOW_VNAME SETVAR _SVSHOW_VNAME,RTRIM(_SVSHOW_VNAME) SETVAR _SVSHOW_VNAME,UPS(LTRIM(RTRIM("!_SVSHOW_VNAME"))) SETVAR _SVSHOW_DIRECTORY_CHECK RHT("!_SVSHOW_VNAME",1) IF "!_SVSHOW_DIRECTORY_CHECK" <> "/" THEN INPUT _SVSHOW_VALUE < !_SVSHOW_VNAME IF STR(ANYPARM(!_SVSHOW_VALUE),1,1) = "~" THEN SETVAR _SVSHOW_SECURE,FALSE SETVAR _SVSHOW_TYPEOF,STR(ANYPARM(!_SVSHOW_VALUE),2,1) IF _SVSHOW_TYPEOF = "4" OR _SVSHOW_TYPEOF = "5" OR & _SVSHOW_TYPEOF = "6" THEN SETVAR _SVSHOW_SECURE,TRUE ENDIF SETVAR _SVSHOW_VALUE STR(RTRIM(ANYPARM(!_SVSHOW_VALUE)),6,200) ELSE SETVAR _SVSHOW_VALUE STR(RTRIM(ANYPARM(!_SVSHOW_VALUE)),1,200) ENDIF SETVAR _SVSHOW_VNAME,STR("!_SVSHOW_VNAME",!_SVSHOW_LISTFILE_LEN,180) IF _SVSHOW_SECURE THEN ECHO &dH!_SVSHOW_VNAME = !_SVSHOW_VALUE ELSE ECHO !_SVSHOW_VNAME = !_SVSHOW_VALUE ENDIF ENDIF SETVAR _SVSHOW_NUMBER_VARS,_SVSHOW_NUMBER_VARS-1 ENDWHILE *** GETSVAR OPTION NOHELP ANYPARM P1=![""] # This command will retrieve a variable for the System, Account, or User # area and set a local variable to that value can be used. I wish there was a # way I could simulate the "!" for backreference but that is buried a little # do deep in the OS for me to trap. I would like to be able to use a ~! for # backreferencing System variables and `! for Account variables, perhapes # sometime in the future. IF BOUND(INSIDEMPEX) AND INSIDEMPEX = 1 RUN CI.PUB.SYS;INFO="GETSVAR !P1";PARM=3 ELSE SETVAR _SVGET_STRING ANYPARM(!P1) SETVAR _SVGET_TRUNC TRUE SETVAR _SVGET_ENTRY_POINT UPS(WORD(_SVGET_STRING,,-1)) IF (_SVGET_ENTRY_POINT <> "SYSTEM" AND & _SVGET_ENTRY_POINT <> "ACCOUNT" AND & _SVGET_ENTRY_POINT <> "USER") THEN SETVAR _SVGET_ENTRY_POINT "SYSTEM" SETVAR _SVGET_TRUNC FALSE ENDIF SETVAR SYS_VAR_ERROR 0 IF (_SVGET_ENTRY_POINT = "SYSTEM") THEN SETVAR _SVGET_STRING_LEN LEN(_SVGET_STRING) IF _SVGET_TRUNC SETVAR _SVGET_STRING_INT & STR(ANYPARM(!_SVGET_STRING),1,_SVGET_STRING_LEN-7) ELSE SETVAR _SVGET_STRING_INT STR(ANYPARM(!_SVGET_STRING),1,_SVGET_STRING_LEN) ENDIF SETVAR _SVGET_STRING_FINAL ANYPARM(!_SVGET_STRING_INT) SETVAR _SVGET_STRING_UPS UPS("!_SVGET_STRING_FINAL") DELETEVAR !_SVGET_STRING_UPS > $NULL IF FINFO("/SYS/SYSTEMVAR/!_SVGET_STRING_UPS","EXISTS") THEN INPUT _SVGET_NEW_VAR < /SYS/SYSTEMVAR/!_SVGET_STRING_UPS IF LFT(ANYPARM(!_SVGET_NEW_VAR),1) = "~" THEN IF STR(ANYPARM(!_SVGET_NEW_VAR),2,1)= "1" OR & STR(ANYPARM(!_SVGET_NEW_VAR),2,1)= "4" SETVAR _SVGET_X STR(ANYPARM(!_SVGET_NEW_VAR),6,50) SETVAR !_SVGET_STRING_UPS !_SVGET_X ELSEIF STR(ANYPARM(!_SVGET_NEW_VAR),2,1)= "2" OR & STR(ANYPARM(!_SVGET_NEW_VAR),2,1)= "5" SETVAR _SVGET_Y STR(ANYPARM(!_SVGET_NEW_VAR),3,3) SETVAR _SVGET_Z !_SVGET_Y SETVAR _SVGET_X STR(ANYPARM(!_SVGET_NEW_VAR),6,_SVGET_Z) SETVAR !_SVGET_STRING_UPS ANYPARM(!_SVGET_X) ELSE SETVAR _SVGET_X STR(ANYPARM(!_SVGET_NEW_VAR),6,5) SETVAR !_SVGET_STRING_UPS !_SVGET_X ENDIF ELSE SETVAR !_SVGET_STRING_UPS,RTRIM("!_SVGET_NEW_VAR") ENDIF ELSE ECHO --- System variable does not exist --- SETVAR SYS_VAR_ERROR 101 ENDIF ELSEIF (_SVGET_ENTRY_POINT = "ACCOUNT") THEN SETVAR _SVGET_STRING_LEN LEN(_SVGET_STRING) SETVAR _SVGET_STRING_INT STR(ANYPARM(!_SVGET_STRING),1,_SVGET_STRING_LEN-8) SETVAR _SVGET_STRING_FINAL ANYPARM(!_SVGET_STRING_INT) SETVAR _SVGET_STRING_UPS UPS("!_SVGET_STRING_FINAL") DELETEVAR !_SVGET_STRING_UPS > $NULL IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVGET_STRING_UPS","EXISTS") THEN INPUT _SVGET_NEW_VAR < /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVGET_STRING_UPS IF LFT(ANYPARM(!_SVGET_NEW_VAR),1) = "~" THEN IF STR(ANYPARM(!_SVGET_NEW_VAR),2,1)= "1" THEN SETVAR _SVGET_X STR(ANYPARM(!_SVGET_NEW_VAR),6,50) SETVAR !_SVGET_STRING_UPS !_SVGET_X ELSEIF STR(ANYPARM(!_SVGET_NEW_VAR),2,1)= "2" THEN SETVAR _SVGET_Y STR(ANYPARM(!_SVGET_NEW_VAR),3,3) SETVAR _SVGET_Z !_SVGET_Y SETVAR _SVGET_X STR(ANYPARM(!_SVGET_NEW_VAR),6,_SVGET_Z) SETVAR !_SVGET_STRING_UPS ANYPARM(!_SVGET_X) ELSE SETVAR _SVGET_X STR(ANYPARM(!_SVGET_NEW_VAR),6,5) SETVAR !_SVGET_STRING_UPS !_SVGET_X ENDIF ELSE SETVAR !_SVGET_STRING_UPS,RTRIM("!_SVGET_NEW_VAR") ENDIF ELSE ECHO --- Account variable does not exist --- SETVAR SYS_VAR_ERROR 101 ENDIF ELSEIF (_SVGET_ENTRY_POINT = "USER") THEN SETVAR _SVGET_STRING_LEN LEN(_SVGET_STRING) SETVAR _SVGET_STRING_INT STR(ANYPARM(!_SVGET_STRING),1,_SVGET_STRING_LEN-5) SETVAR _SVGET_STRING_FINAL ANYPARM(!_SVGET_STRING_INT) SETVAR _SVGET_STRING_UPS UPS("!_SVGET_STRING_FINAL") DELETEVAR !_SVGET_STRING_UPS > $NULL IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/& !_SVGET_STRING_UPS","EXISTS") THEN INPUT _SVGET_NEW_VAR < /SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/& !_SVGET_STRING_UPS IF LFT(ANYPARM(!_SVGET_NEW_VAR),1) = "~" THEN IF STR(ANYPARM(!_SVGET_NEW_VAR),2,1)= "1" THEN SETVAR _SVGET_X STR(ANYPARM(!_SVGET_NEW_VAR),6,50) SETVAR !_SVGET_STRING_UPS !_SVGET_X ELSEIF STR(ANYPARM(!_SVGET_NEW_VAR),2,1)= "2" THEN SETVAR _SVGET_Y STR(ANYPARM(!_SVGET_NEW_VAR),3,3) SETVAR _SVGET_Z !_SVGET_Y SETVAR _SVGET_X STR(ANYPARM(!_SVGET_NEW_VAR),6,_SVGET_Z) SETVAR !_SVGET_STRING_UPS ANYPARM(!_SVGET_X) ELSE SETVAR _SVGET_X STR(ANYPARM(!_SVGET_NEW_VAR),6,5) SETVAR !_SVGET_STRING_UPS !_SVGET_X ENDIF ELSE SETVAR !_SVGET_STRING_UPS,RTRIM("!_SVGET_NEW_VAR") ENDIF ELSE ECHO --- User variable does not exist --- SETVAR SYS_VAR_ERROR 101 ENDIF ELSE ECHO ECHO Variable type must be SYSTEM,ACCOUNT or USER ECHO ENDIF DELETEVAR _SVGET_@ ENDIF *** DELSVAR OPTION NOHELP ANYPARM P1=![""] # If you set them then I guess you have to delete them, this command will do # that. Use the ";SYSTEM", ";ACCOUNT", or ";USER" just like in SETSVAR. IF BOUND(INSIDEMPEX) AND INSIDEMPEX = 1 RUN CI.PUB.SYS;INFO="DELSVAR !P1";PARM=3 ELSE SETVAR _SVDEL_STRING ANYPARM(!P1) SETVAR _SVDEL_TRUNC TRUE SETVAR _SVDEL_ENTRY_POINT UPS(WORD(_SVDEL_STRING,,-1)) IF (_SVDEL_ENTRY_POINT <> "SYSTEM" AND & _SVDEL_ENTRY_POINT <> "ACCOUNT" AND & _SVDEL_ENTRY_POINT <> "USER") THEN SETVAR _SVDEL_ENTRY_POINT "SYSTEM" SETVAR _SVDEL_TRUNC FALSE ENDIF # # If it's a system one the deal with it here # IF (_SVDEL_ENTRY_POINT = "SYSTEM") THEN SETVAR _SVDEL_STRING_LEN LEN(_SVDEL_STRING) IF _SVDEL_TRUNC SETVAR _SVDEL_STRING_INT & STR(ANYPARM(!_SVDEL_STRING),1,_SVDEL_STRING_LEN-7) ELSE SETVAR _SVDEL_STRING_INT STR(ANYPARM(!_SVDEL_STRING),1,_SVDEL_STRING_LEN) ENDIF SETVAR _SVDEL_STRING_FINAL ANYPARM(!_SVDEL_STRING_INT) SETVAR _SVDEL_STRING_UPS UPS("!_SVDEL_STRING_FINAL") IF FINFO("/SYS/SYSTEMVAR/!_SVDEL_STRING_UPS","EXISTS") THEN PURGE /SYS/SYSTEMVAR/!_SVDEL_STRING_UPS> $NULL DELETEVAR !_SVDEL_STRING_UPS> $NULL ELSE ECHO --- System variable does not exist --- ENDIF # # If it's an account one then deal with it here # ELSEIF (_SVDEL_ENTRY_POINT = "ACCOUNT") THEN SETVAR _SVDEL_STRING_LEN LEN(_SVDEL_STRING) SETVAR _SVDEL_STRING_INT STR(ANYPARM(!_SVDEL_STRING),1,_SVDEL_STRING_LEN-8) SETVAR _SVDEL_STRING_FINAL ANYPARM(!_SVDEL_STRING_INT) SETVAR _SVDEL_STRING_UPS UPS("!_SVDEL_STRING_FINAL") IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVDEL_STRING_UPS","EXISTS") THEN PURGE /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVDEL_STRING_UPS> $NULL DELETEVAR !_SVDEL_STRING_UPS> $NULL ELSE ECHO --- Account variable does not exist --- ENDIF # # If it's a user one then deal with it here. # ELSEIF (_SVDEL_ENTRY_POINT = "USER") THEN SETVAR _SVDEL_STRING_LEN LEN(_SVDEL_STRING) SETVAR _SVDEL_STRING_INT STR(ANYPARM(!_SVDEL_STRING),1,_SVDEL_STRING_LEN-5) SETVAR _SVDEL_STRING_FINAL ANYPARM(!_SVDEL_STRING_INT) SETVAR _SVDEL_STRING_UPS UPS("!_SVDEL_STRING_FINAL") IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/& !_SVDEL_STRING_UPS","EXISTS") THEN PURGE /SYS/SYSTEMVAR/_AV_!HPACCOUNT/_AV_!HPUSER/!_SVDEL_STRING_UPS> $NULL DELETEVAR !_SVDEL_STRING_UPS> $NULL ELSE ECHO --- User variable does not exist --- ENDIF ENDIF DELETEVAR _SVDEL_@ ENDIF *** INITVARAREA PARM NAME="";TYPE="SYSTEM" # This command will setup the correct directory structure for the System, # Account and user variables # Example for setting up System area "INITVAREAREA ;SYSTEM" # Example for setting up for Account PROD "INITVARAREA PROD;ACCOUNT" # Example for setting up for user USER.PROD "INITVARAREA USER.PROD;ACCOUNT" SETVAR _SVINT_TYPE UPS("!TYPE") SETVAR _SVINT_ACC UPS("!NAME") IF "!_SVINT_TYPE" = "SYSTEM" IF FINFO("/SYS/SYSTEMVAR","EXISTS") THEN ECHO ECHO System Level Variable area already created ECHO ELSEIF POS('SM,',HPUSERCAPF) <> 0 NEWDIR /SYS/SYSTEMVAR ALTSEC /SYS/SYSTEMVAR;REPPAIR=(TD,RD,CD,DD,RACD:@.@) ECHO ECHO System Leval Variable area created. ECHO ELSE ECHO ECHO You must have System Manager Capability ECHO ENDIF ELSEIF "!_SVINT_TYPE" = "ACCOUNT" SETVAR HPCIERR 0 CONTINUE LISTACCT !_SVINT_ACC >$NULL IF HPCIERR <> 0 ECHO ECHO This account does not exist on your system ECHO ELSEIF FINFO("/SYS/SYSTEMVAR","EXISTS") THEN IF FINFO("/SYS/SYSTEMVAR/_AV_!_SVINT_ACC","EXISTS") THEN ECHO ECHO Account Level Variables for account !_SVINT_ACC already set up. ECHO ELSEIF POS('AM,',HPUSERCAPF) <> 0 NEWDIR /SYS/SYSTEMVAR/_AV_!_SVINT_ACC > $NULL ALTSEC /SYS/SYSTEMVAR/_AV_!_SVINT_ACC;& ADDPAIR=(TD,RD,CD,DD,RACD:@.!_SVINT_ACC) ECHO ECHO Account Level Variables area for account !_SVINT_ACC created. ECHO ELSE ECHO ECHO You must have Account Manager Capability to do this. ECHO ENDIF ELSE ECHO ECHO You must set up the System Level Variable area first. ECHO ENDIF ELSEIF "!_SVINT_TYPE" = "USER" SETVAR _SVINT_USERNAME WORD('!_SVINT_ACC','.',1) SETVAR _SVINT_ACCTNAME WORD('!_SVINT_ACC','.',2) SETVAR HPCIERR 0 CONTINUE LISTUSER !_SVINT_ACC >$NULL IF HPCIERR <> 0 ECHO ECHO This User does not exist on your system ECHO ELSEIF FINFO("/SYS/SYSTEMVAR","EXISTS") THEN IF FINFO("/SYS/SYSTEMVAR/_AV_!_SVINT_ACCTNAME","EXISTS") THEN IF FINFO("/SYS/SYSTEMVAR/_AV_!_SVINT_USERNAME/& _AV_!_SVINT_ACC","EXISTS") THEN ECHO ECHO User Level Variables for User !_SVINT_ACC already set up. ECHO ELSEIF POS('AM,',HPUSERCAPF) <> 0 NEWDIR /SYS/SYSTEMVAR/_AV_!_SVINT_ACCTNAME/_AV_!_SVINT_USERNAME > $NULL ALTSEC /SYS/SYSTEMVAR/_AV_!_SVINT_ACCTNAME/_AV_!_SVINT_USERNAME;& ADDPAIR=(TD,RD,CD,DD,RACD:!_SVINT_USERNAME.!_SVINT_ACCTNAME) ECHO ECHO User Level Variables area for User !_SVINT_USERNAME created. ECHO ELSE ECHO ECHO You must have Account Manager capability for this ECHO ENDIF ELSE ECHO ECHO You must set up the Account Level Variable area first. ECHO ENDIF ELSE ECHO ECHO You must set up the System Level and Account Level ECHO Variable areas first. ECHO ENDIF ELSE ECHO Must be of type SYSTEM,ACCOUNT,USER ENDIF DELETEVAR _SVINT_@ *** DELVAREAREA PARM NAME="";TYPE="" # This command will delete the area that the System or Account variables are # Stored. # Example of purging the System area "DELVARAREA ;SYSTEM" # Example of purging the Variable area for Account PROD # "DELVARAREA PROD;ACCOUNT" # Example of purging the Variable area for User USER.PROD # "DELVARAREA USER.PROD;USER" # WARNING: Purging the System area will also purge all account and user areas!! # WARNING: Purging the Account area will also purge all user areas!! SETVAR _SVPURG_TYPE UPS("!TYPE") SETVAR _SVPURG_ACC UPS("!NAME") IF "!_SVPURG_TYPE" = "SYSTEM" IF FINFO("/SYS/SYSTEMVAR","EXISTS") AND POS('SM,',HPUSERCAPF) <> 0 THEN ECHO ECHO This will delete all System and Account Variables INPUT _SVPURG_YESNO;PROMPT="Are you sure you want to do this? (y/N):" IF (_SVPURG_YESNO = "Y" OR _SVPURG_YESNO = "y") THEN PURGEDIR /SYS/SYSTEMVAR;TREE;NOCONFIRM ENDIF ECHO ELSEIF POS('SM,',HPUSERCAPF) = 0 THEN ECHO ECHO You must have System Manager capability to do this. ECHO ELSE ECHO ECHO System Leval Variable have never been set up. ECHO Use INITVARAREA to create enviroment ECHO ENDIF ELSEIF "!_SVPURG_TYPE" = "ACCOUNT" IF FINFO("/SYS/SYSTEMVAR/_AV_!_SVPURG_ACC","EXISTS") AND & POS('AM,',HPUSERCAPF) <> 0 THEN ECHO ECHO This will delete all Account Variables for !_SVPURG_ACC INPUT _SVPURG_YESNO;PROMPT="Are you sure you want to do this? (y/N):" IF (_SVPURG_YESNO = "Y" OR _SVPURG_YESNO = "y") THEN PURGEDIR /SYS/SYSTEMVAR/_AV_!_SVPURG_ACC;TREE;NOCONFIRM ENDIF ECHO ELSEIF POS('AM,',HPUSERCAPF) = 0 THEN ECHO ECHO You must have Account Manager capability to do this ECHO ELSE ECHO ECHO Account Leval Variable have never been set up for !_SVPURG_ACC ECHO Use INITVARAREA to create enviroment ECHO ENDIF ELSEIF "!_SVPURG_TYPE" = "USER" SETVAR _SVPURG_USERNAME WORD('!_SVINT_ACC','.',1) SETVAR _SVPURG_ACCTNAME WORD('!_SVINT_ACC','.',2) IF FINFO("/SYS/SYSTEMVAR/_AV_!_SVPURG_ACCTNAME/_AV_!_SVPURG_USERNAME",& "EXISTS") AND POS('AM,',HPUSERCAPF) <> 0 THEN ECHO ECHO This will delete all User Variables for !_SVPURG_USERNAME INPUT _SVPURG_YESNO;PROMPT="Are you sure you want to do this? (y/N):" IF (_SVPURG_YESNO = "Y" OR _SVPURG_YESNO = "y") THEN PURGEDIR /SYS/SYSTEMVAR/_AV_!_SVPURG_ACCTNAME/_AV_!_SVPURG_USERNAME;& TREE;NOCONFIRM ENDIF ECHO ELSEIF POS('AM,',HPUSERCAPF) = 0 ECHO ECHO You must have Account Manager capability to do this. ECHO ELSE ECHO ECHO User Leval Variable have never been set up for !_SVPURG_ACC ECHO Use INITVARS to create enviroment ECHO ENDIF ENDIF DELETEVAR _SVPURG_@ *** SETSVARSEC OPTION NOHELP PARM P1 ANYPARM P2=![""] # This command will set variables similar to LOCAL variables only these will # not go away when you log off. You can set them either at the SYSTEM, ACCOUNT, # or USER levels This is done by attaching a ";SYSTEM", ";ACCOUNT" or ";USER" # at the end of the variable statement. They can them be later retrived using # GETVAR" command. These variables are # IF BOUND(INSIDEMPEX) AND INSIDEMPEX = 1 ECHO SETSVARSEC !P1 !P2 > SVTMP RUN CI.PUB.SYS;PARM=3 < SVTMP PURGE SVTMP;TEMP > $NULL ELSE SETVAR _SVSET_STRING,ANYPARM(!P2) SETVAR _SVSET_ENTRY_POINT,UPS(WORD(_SVSET_STRING,,-1)) # Lets see what type this one is. The default is "SYSTEM" SETVAR _SVSET_TRUNC TRUE IF (_SVSET_ENTRY_POINT <> "SYSTEM" & AND _SVSET_ENTRY_POINT <> "ACCOUNT" & AND _SVSET_ENTRY_POINT <> "USER") SETVAR _SVSET_ENTRY_POINT "SYSTEM" SETVAR _SVSET_TRUNC FALSE ENDIF # # If its a System Variable then deal with it here. # IF _SVSET_ENTRY_POINT = "SYSTEM" THEN IF POS('SM,',HPUSERCAPF) = 0 THEN ECHO ECHO You must have SM capability to set a Secure System Variable ECHO DELETEVAR _SV@ RETURN ENDIF IF FINFO("/SYS/SYSTEMVAR","EXISTS") THEN SETVAR _SVSET_VAR_NAME UPS("!P1") IF FINFO("/SYS/SYSTEMVAR/!_SVSET_VAR_NAME","EXISTS") THEN PURGE /SYS/SYSTEMVAR/!_SVSET_VAR_NAME > $NULL ENDIF SETVAR _SVSET_STRING_LEN LEN(_SVSET_STRING) IF _SVSET_TRUNC SETVAR _SVSET_STRING_INT & STR(ANYPARM(!_SVSET_STRING),1,_SVSET_STRING_LEN-7) ELSE SETVAR _SVSET_STRING_INT & STR(ANYPARM(!_SVSET_STRING),1,_SVSET_STRING_LEN) ENDIF SETVAR _SVSET_STRING_FINAL !_SVSET_STRING_INT SETVAR !_SVSET_VAR_NAME !_SVSET_STRING_INT SETVAR _SVSET_X 0 IF SETVAR(_SVSET_TYPEOF,TYPEOF(!_SVSET_VAR_NAME)) = 2 SETVAR _SVSET_X LEN(!_SVSET_VAR_NAME) ENDIF SETVAR _SVSET_ALPHA_LEN RHT("00!_SVSET_X",3) SETVAR _SVSET_TYPEOF,_SVSET_TYPEOF+3 BUILD /SYS/SYSTEMVAR/!_SVSET_VAR_NAME;REC=-200,,F,ASCII;DISC=1;NOCCTL FILE NVARFILE=/SYS/SYSTEMVAR/!_SVSET_VAR_NAME,OLD ECHO ~!_SVSET_TYPEOF!_SVSET_ALPHA_LEN!_SVSET_STRING_FINAL>*NVARFILE ALTSEC /SYS/SYSTEMVAR/!_SVSET_VAR_NAME;REPPAIR=(R,W:@.@) > $NULL ELSE ECHO ECHO System Variable enviroment not set up ECHO ENDIF # # If its an Account variable then deal with it here. # ELSEIF (_SVSET_ENTRY_POINT = "ACCOUNT") THEN IF POS('AM,',HPUSERCAPF) = 0 THEN ECHO ECHO You must have AM capability to set a Secure Account Variable ECHO DELETEVAR _SV@ RETURN ENDIF IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT","EXISTS") THEN SETVAR _SVSET_VAR_NAME UPS("!P1") IF FINFO("/SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME","EXISTS") THEN PURGE /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME > $NULL ENDIF SETVAR _SVSET_STRING_LEN LEN(_SVSET_STRING) SETVAR _SVSET_STRING_INT & STR(ANYPARM(!_SVSET_STRING),1,_SVSET_STRING_LEN-8) SETVAR _SVSET_STRING_FINAL !_SVSET_STRING_INT SETVAR !_SVSET_VAR_NAME !_SVSET_STRING_INT SETVAR _SVSET_X 0 IF SETVAR(_SVSET_TYPEOF,TYPEOF(!_SVSET_VAR_NAME)) = 2 SETVAR _SVSET_X LEN(!_SVSET_VAR_NAME) ENDIF SETVAR _SVSET_ALPHA_LEN RHT("00!_SVSET_X",3) SETVAR _SVSET_TYPEOF,_SVSET_TYPEOF+3 BUILD /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME;& REC=-200,,F,ASCII;DISC=1;NOCCTL FILE NVARFILE=/SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME,OLD ECHO ~!_SVSET_TYPEOF!_SVSET_ALPHA_LEN!_SVSET_STRING_FINAL>*NVARFILE ALTSEC /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME;& ADDPAIR=(R,W:@.!HPACCOUNT) > $NULL ALTSEC /SYS/SYSTEMVAR/_AV_!HPACCOUNT/!_SVSET_VAR_NAME;& DELPAIR=(@.@) > $NULL ELSE ECHO ECHO Account Variable enviroment not set up for this account ECHO ENDIF # # If it's a user level then deal with it here. # ELSEIF (_SVSET_ENTRY_POINT = "USER") THEN ECHO ECHO You can't set Secured Variables at the user level ECHO ENDIF DELETEVAR _SVSET_@ ENDIF