/* DVHGLBLV EXEC */ /* modified to not use lasting globalv */ COPYRIGHT_NOTICE = , ' LICENSED MATERIALS - PROGRAM PROPERTY OF IBM.' , ' RESTRICTED MATERIALS OF IBM.' , ' 5748-XE4M (C) COPYRIGHT IBM CORPORATION 1979, 1995.' , ' All rights reserved.' , ' US Government Users Restricted Rights -' , ' Use, duplication, or disclosure restricted by GSA ADP' , ' schedule contract with IBM Corporation.' , ' Part Name: DVHGLBLV EXEC' , ' Interface: 199501' Address 'COMMAND' Parse Arg argstring global_group = 'DVH15' global_get = 'GLOBALV SELECT' global_group 'GET' global_perm = 'GLOBALV SELECT' global_group 'SETL' global_put = 'GLOBALV SELECT' global_group 'PUT' global_set = 'GLOBALV SELECT' global_group 'SET' global_stack = 'GLOBALV SELECT' global_group 'STACK' Call DO_CMD global_get 'TRACE INTERFACE CMDSET VALIDCMDS' Select When Pos(' DVHGLBLV=',' 'trace' ') ^= 0 Then Parse Var trace . 'DVHGLBLV=' trace_opt . When Pos(' DVH*=',' 'trace' ') ^= 0 Then Parse Var trace . 'DVH*=' trace_opt . Otherwise trace_opt = '' End If trace_opt ^= '' Then Do 'EXEC DVHMSG 116101 * DVHGLB' 'DVHGLBLV' argstring Trace Value trace_opt End Parse Upper Arg cmd operand value value = Strip(value) Select When operand = 'CMDLEVEL' Then Signal CMDLEVEL When operand = 'CMDSET' Then Signal CMDSET When operand = 'DASUSER' Then Signal DPREFIX When operand = 'DATNODE' Then Signal DPREFIX When operand = 'DBYUSER' Then Signal DPREFIX When operand = 'DFORUSER' Then Signal DPREFIX When operand = 'DTOSYS' Then Signal DPREFIX When operand = 'LANG' Then Signal LANG When operand = 'NEEDPASS' Then Signal NEEDPASS When operand = 'QUERY' Then Signal QUERY When operand = '?' Then Signal QUERY When operand = 'REQUEST' Then Signal REQUEST When operand = 'TEST' Then Signal TEST When operand = 'TRACE' Then Signal TRACE Otherwise Nop End 'EXEC DVHMSG 112101 * DVHGLB' cmd operand r = rc Signal BAIL_OUT CMDLEVEL: If Words(value) ^= 1 Then Do 'EXEC DVHMSG 112201 * DVHGLB' cmd operand Word(value,2) r = rc Signal BAIL_OUT End If Pos(' 'value' ',' 'validcmds' ') = 0 Then Do 'EXEC DVHMSG 112201 * DVHGLB' cmd operand value r = rc Signal BAIL_OUT End Call DO_CMD global_perm 'CMDLEVEL' value Signal DONE CMDSET: If value = '' , | Verify(value,'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789') ^= 0 Then Do 'EXEC DVHMSG 112201 * DVHGLB' cmd operand value r = rc Signal BAIL_OUT End If Pos('G',value) = 0 Then value = 'G'||value Call DO_CMD global_perm 'CMDSET' value Signal DONE DPREFIX: If Words(value) ^= 1 Then Do 'EXEC DVHMSG 112201 * DVHGLB' cmd operand Word(value,2) r = rc Signal BAIL_OUT End Call DO_CMD global_perm operand value Signal DONE LANG: If Words(value) ^= 1 | Length(Strip(value)) > 5 Then Do 'EXEC DVHMSG 112201 * DVHGLB' cmd operand Word(value,2) r = rc Signal BAIL_OUT End search_string = value'_USER_MSGS_' ssl = Length(search_string) Call DO_CMD 'PIPE (Name Find_User_Msgs)' , ' COMMAND LISTFILE CONFIG* DATADVH *' , '| SORT UNIQUE 1.17 DESCENDING' , '| GETFILES' , '| STRIP' , '| LOCATE (1.'ssl') /'search_string'/' , '| STRIP LEADING STRING /'search_string'/' , '| STRIP' , '| STEM MSGFILES.' If msgfiles.0 = 0 Then Do 'EXEC DVHMSG 112201 * DVHGLB' cmd operand value r = rc Signal BAIL_OUT End status = 'NONEFOUND' Do i = 1 To msgfiles.0 Parse Var msgfiles.i . '=' msgfn msgft . If msgft = '' Then Iterate If Pos(' 'msgft' ',' MSGUDVH MSG1DVH ') ^= 0 Then msgft = 'MSGADVH' 'ESTATE' msgfn msgft '*' If rc = 0 Then status = 'ONEFOUND' End If status = 'NONEFOUND' Then Do 'EXEC DVHMSG 112201 * DVHGLB' cmd operand value r = rc Signal BAIL_OUT End Call DO_CMD global_perm 'LANG' value Signal DONE NEEDPASS: If Pos(' 'value' ',' YES NO ') = 0 Then Do 'EXEC DVHMSG 112201 * DVHGLB' cmd operand value r = rc Signal BAIL_OUT End Call DO_CMD global_perm 'NEEDPASS' value Signal DONE QUERY: If 0 & cmd = 'DEFAULTS' Then glbl_vars = 'CMDLEVEL CMDSET' , 'DASUSER DATNODE DBYUSER DFORUSER DTOSYS' , 'LANG NEEDPASS TEST TRACE' Else glbl_vars = 'INTERFACE ASUSER ATNODE BYUSER CMDLEVEL CMDSET' , 'DASUSER DATNODE DBYUSER DFORUSER DTOSYS' , 'FORUSER IMMED LANG MAILSTAMP NEEDPASS REQUEST' , 'TEST TOSYS TRACE VALIDCMDS VALIDLVLS XMITFILE' If value = '' Then Do value = glbl_vars skip_nulls = 1 End Else skip_nulls = 0 r = 0 Do While value ^= '' Parse Upper Var value varname value If Pos(' 'varname' ',' 'glbl_vars' ') = 0 Then Do 'EXEC DVHMSG 112101 * DVHGLB' cmd varname r = rc Iterate End 'MAKEBUF' bufno = rc q1 = Queued() glbl_cmd = global_stack varname cline= CURLINE();''glbl_cmd If rc ^= 0 Then Do 'EXEC DVHMSG 111901 * DVHGLB' cline rc glbl_cmd r = rc End Else Do If Queued() > q1 Then Parse Pull varvalue Else varvalue = '' End 'DROPBUF' bufno If skip_nulls = 0 | varvalue ^= '' Then 'EXEC DVHMSG 134101 * DVHGLB' varname varvalue End rc = r Signal DONE REQUEST: Call DO_CMD global_perm 'REQUEST' value Signal DONE TEST: If Pos(' 'value' ',' OFF MSG SAY ') = 0 Then Do 'EXEC DVHMSG 112201 * DVHGLB' cmd operand value r = rc Signal BAIL_OUT End Call DO_CMD global_perm 'TEST' value Signal DONE TRACE: trace_list = value Do While trace_list ^= '' Parse Var trace_list trace_entry trace_list If Pos('=',trace_entry) = 0 Then Do 'EXEC DVHMSG 112501 * DVHGLB' trace_entry Signal Done End Parse Var trace_entry trace_part '=' trace_optn If trace_part ^= 'DVH*' Then Do 'ESTATE' trace_part '* *' If rc ^= 0 Then Do 'EXEC DVHMSG 112502 * DVHGLB' trace_entry trace_part Signal Done End 'ESTATE' trace_part 'EXEC *' r1 = rc 'ESTATE' trace_part 'REXX *' r2 = rc 'ESTATE' trace_part 'XEDIT *' r3 = rc If r1*r2*r3 ^= 0 Then Do 'EXEC DVHMSG 112503 * DVHGLB' trace_entry trace_part Signal Done End End Parse Var trace_optn trace_1 2 trace_2 3 . If trace_optn = '' | ( trace_1 = '?' & trace_2 = '') Then Do 'EXEC DVHMSG 112504 * DVHGLB' trace_entry Signal Done End If trace_1 = '?' Then Do If Pos(trace_2,'ACEFILNORS') = 0 Then Do 'EXEC DVHMSG 112505 * DVHGLB' trace_entry Signal Done End End Else Do If Pos(trace_1,'ACEFILNORS') = 0 Then Do 'EXEC DVHMSG 112505 * DVHGLB' trace_entry Signal Done End End End Call DO_CMD global_perm 'TRACE' value Signal DONE DONE: If rc = 0 Then 'EXEC DVHMSG 119001 * DVHGLB' cmd rc r = rc BAIL_OUT: If trace_opt ^= '' Then 'EXEC DVHMSG 116201 * DVHGLB' 'DVHGLBLV' r Exit r DO_CMD: Parse Arg cms_cmd ''cms_cmd r = rc If r ^= 0 Then Do 'EXEC DVHMSG 111901 * DVHGLB' sigl r cms_cmd r = rc Signal BAIL_OUT End Return CURLINE: Return sigl