Thank you all for your help over the many message threads I have
started since joining this list.
The external assembler REXX function I am working on is so that I
don't have to depend upon the built-in REXX VSAMIO function. I don't like
all the conversion, concatenation, and parsing I have to do to make VSAMIO
work. I miss record layouts. My plan is to have my function provide all
of the key and record building and extracting from and into REXX stem
variables based on key and record layouts provided by the caller in the
same stem variable.
So, I have OPEN, CLOSE, and random catalog reads working so far.
The OPEN syntax I support is as follows.
Call RXVSAMIO ddname, 'OPEN'
<, 'INPUT'|'UPDATE'|'OUTPUT'|'APPEND'|'RESET'
<, 'SEQUENCE'|'RANDOM'|'DYNAMIC' > >;
But, I have also built in the ability to retrieve dataset
attributes and statistics -- and that is what you guys (and VSE-L) have
been helping me with. Now with the following REXX statements:
rprtdbs. = '';
Call RXVSAMIO 'rprtdbs', 'attrs';
I get all of the following variables and values created (comments
added manually). As you can see, I keep the numeric data REXX readable. I
will do the same thing with key and record values from the caller's
perspective. All conversions will be handled internally.
RPRTDBS._DDN = RPRTDBS
RPRTDBS._LFN = ATTRS /* Last Function Request */
RPRTDBS._LFM = /* Last Failing Macro */
RPRTDBS._RC = 0 /* VSAM Return Code */
RPRTDBS._EC = 0 /* VSAM Error Code */
RPRTDBS._DSN = DAPSCO.REPORT.DATABASE
RPRTDBS._CATLBL = DAPDCAT
RPRTDBS._CATDSN = DAPSCO.DAPD.CATALOG
RPRTDBS._TYP = XLDS
RPRTDBS._RMX = 2047 /* Record Max Length */
RPRTDBS._RAV = 1845 /* Record Average Length */
RPRTDBS._KMX = 17 /* Key Max Length */
RPRTDBS._RKP = 0 /* Relative Key Position */
RPRTDBS._CREA = 20220123 /* Creation Date */
RPRTDBS._EXPD = 20220123 /* Expiration Date */
RPRTDBS._TSTP = 20220201 030354 /* Last Update Date/Time */
RPRTDBS._SHRO = 4 3 /* Share Options */
RPRTDBS._DATA = DAPSCO.REPORT.DATABASE.DATA
RPRTDBS._DCSZ = 26624 /* DATA CI Size */
RPRTDBS._DEXC = 1384210 /* DATA Number of EXCPs */
RPRTDBS._DEXT = 18 /* DATA Number of Extents */
RPRTDBS._DCIS = 22940 /* DATA CI Splits */
RPRTDBS._DCAS = 2612 /* DATA CA Splits */
RPRTDBS._DFSP = 0 6 /* DATA Freespace CI/CA Pct */
RPRTDBS._DHAL = 1796040 /* DATA High Alloc RBA/CI */
RPRTDBS._DHUS = 1718610 /* DATA High Used RBA/CI */
RPRTDBS._DTAL = CYL /* DATA Allocation Type */
RPRTDBS._DPAL = 3326 /* DATA Primary Alloc */
RPRTDBS._DSAL = 0 /* DATA Secondary Alloc */
RPRTDBS._DVOL = IDD240 IDD241 IDD242 IDD243 IDD250 IDD251 IDD252 IDD253
IDD410 IDD411
IDD412 IDD413 IDD460 IDD461 IDD462 IDD463 IDD490 IDD491
IDD492 IDD493
RPRTDBS._INDX = DAPSCO.REPORT.DATABASE.INDEX
RPRTDBS._ICSZ = 1024 /* INDEX CI Size */
RPRTDBS._IEXC = 1029854 /* INDEX Number of EXCPs */
RPRTDBS._IEXT = 10 /* INDEX Number of Extents */
RPRTDBS._ILVL = 4 /* INDEX Number of Levels */
RPRTDBS._ISSR = 0 /* INDEX Sequence-Set RBA */
RPRTDBS._IHLR = 9507840 /* INDEX High level RBA */
RPRTDBS._IHAL = 60825600 /* INDEX High Alloc RBA */
RPRTDBS._IHUS = 59622400 /* INDEX High Used RBA */
RPRTDBS._ITAL = CYL /* INDEX Allocation Type */
RPRTDBS._IPAL = 12 /* INDEX Primary Alloc */
RPRTDBS._ISAL = 0 /* INDEX Secondary Alloc */
RPRTDBS._IVOL = IDD240 IDD241 IDD242 IDD243 IDD250 IDD251 IDD252 IDD253
IDD410 IDD411
IDD412 IDD413 IDD460 IDD461 IDD462 IDD463 IDD490 IDD491
IDD492 IDD493
RPRTDBS._COMP = 0 /* Compressed? */
RPRTDBS._ERAS = 0 /* Erase? */
RPRTDBS._IMBD = 0 /* Imbed? */
RPRTDBS._ORDR = 0 /* Ordered */
RPRTDBS._RCVR = 0 /* Recover? */
RPRTDBS._REPL = 0 /* Replicate? */
RPRTDBS._REUS = 0 /* Reuse? */
RPRTDBS._SPAN = 0 /* Spanned? */
RPRTDBS._WCHK = 0 /* WriteCheck? */
RPRTDBS._RECS = 23305031 /* Total Records */
RPRTDBS._ADDS = 142063 /* Records Inserted */
RPRTDBS._DELS = 5973 /* Records Deleted */
RPRTDBS._UPDS = 0 /* Records Updated */
RPRTDBS._GETS = 462689 /* Records Retrieved */
Sincerely,
Dave Clark
--
Winsupply Group Services
3110 Kettering Boulevard
Dayton, Ohio 45439 USA
(937) 294-5331
*********************************************************************************************
This email message and any attachments is for use only by the named
addressee(s) and may contain confidential, privileged and/or proprietary
information. If you have received this message in error, please
immediately notify the sender and delete and destroy the message and all
copies. All unauthorized direct or indirect use or disclosure of this
message is strictly prohibited. No right to confidentiality or privilege
is waived or lost by any error in transmission.
*********************************************************************************************