/*
Author: Les Koehler, Gil Barmwater and Walter Pachl
Date: 17 Oct 2015 - Initial release
Update: 31 Oct 2015 03:36:08 - Use showit.rex for Help
*/ beghelp=thisline()+1 /*
&lcsme.rex: See "Purpose", below
Copyright (C) 2015 Leslie L. Koehler
This is free software. See "Notice:" at the bottom of
&this file.
Author: Les Koehler vmrexx@tampabay.rr.com
Purpose: Replace SysDumpVariables with Object code that avoids the
"Carriage Return/Linefeed in data" problem and optionally
puts the "Name=" data in a fixed width column, along with
special data validation and hex display of non-printable
data.
&pad 15 ]
Syntax: Call &lcsme .context~variables , outfile [, width]
If width=0 then expanded_dumpvars.rex will not be executed for the
optional validation and hex features, thus CR and LF will be shown as
<CR> and <LF>.
Help: &lcsme [&helps]
Credits: Gil Barmwater for LOTS of help with the Object code. In fact,
his examples were actually copied into the code!
Walter Pachl for expanded_dumpvars.rex which he wrote for
my dumpvars.rex and I reused here.
see also: oodumpvars.rex which is a wrapper that adds more features.
*/
endhelp=thisline()-2
use Arg vardir,outfile,width=15 -- directory of variable names and current values
--trace r
parse source . how fullme
hit=lastpos('\',fullme)
parse var fullme =(hit+1) lcsme'.' .
sme=translate(lcsme)
lcsme=lower(sme)
--trace r
--if \vardir~isa(.Rexxcontext) then do
if \vardir~isa(.Directory) then do
signal help
End
expand?=0
If Datatype(width,'W') Then Do
If width>0 Then expand?=1
End
-- trace ?i
-- trace r
varnames = varDir~allIndexes~sort
out.0=0
Do i = 1 To varNames~items
thename = varNames[i]
thevalue = varDir[theName]
If theValue~isA(.stem) Then Do
thestemname = thename
thestemvalue = thevalue
alltails = theStemValue~allIndexes~sort
Do j = 1 To allTails~items
thetail = allTails[j]
thename = thestemname||thetail
thevalue = theStemValue[theTail]
Call save
End
End
Else Call save
End
Call sysfiledelete outfile
outobject = .stream~new(outfile)
outObject~open("WRITE")
Do l=1 To out.0
outobject~lineout(out.l)
End
outobject~close()
call sort_dumpvars outfile
If expand? Then Call expanded_dumpvars width outfile
Return
SAVE:
out.0=out.0+1
o=out.0
out.o="Name="thename", Value='"thevalue"'"
out.o=Changestr('0d'x,out.o,'<CR>')
out.o=Changestr('0a'x,out.o,'<LF>')
Return
thisline: return sigl
HELP:
helps='? /? -? Help /Help -Help --Help' /* Keywords */
pad=copies('ff'x,61)'['
outvar=beghelp endhelp fullme
call showit fullme ,, outvar ,
,'&lcsme='lcsme , '&helps='helps , '&this file.='fullme , '&pad='pad
exit
dump:
interpret dumpvars()
--interpret z
exit
/* Notice:
This program is free software: you can redistribute it and/or modify
it under the terms of the EPL (Eclipse Public License) as published by
the Open Source Initiative, either version 1.0 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
EPL for more details.
You should have received a copy of the EPL along with this program.
If not, see:
http://www.opensource.org/licenses/eclipse-1.0.php
*/