Has anyone on this list ever heard of or seen a decompiler for ACS object code?
If so
I'm hoping there is a newer / better version of it than what someone used in
2016.
Background: I needed to make a STORCLAS SMS change on a very small seldom
touched LPAR
for my client. When I changed the code I found there were a ton of errors
trying
to compile the code. The ISPF stats said 2016 but the last object change was
in 2014.
When I looked at the code closer, I could tell it was created by some
decompiler. All the filter
lists were named FLT1, FLT2, FLT3, etc. and each filter INCLUDE list item was
on a separate
line. All the logic code was nested IF/THEN/ELSE when I know the original was
better
structured with "SELECT WHEN". I assume the ACS source PDS must have been
migrated
and expired because it hadn't been touched in so long and someone got a hold of
this decompiler to try and recreate the ACS routines. I was never informed and
whomever
did this is long gone and swept it under the rug and didn't tell anyone.
I've spent the entire week fixing the routines based on what I know of the
system, looking
at existing data set allocations, JES2 allocation logs etc. and now have a good
working
set of DATACLAS, STORCLAS, MGMTCLAS and STORGRP routines, but as I wrote above,
I'm curious if there is a better / newer version of whatever was used and I'm
just curious
in general because I have checked the CBT, done some asking around and even
was
put in contact with someone from a well known software company (not IBM) that
has
many SMS tools and they never heard of an ACS decompiler.
Just as an example, the DATACLAS routine looks like it was an original SMS
sample
and I even recognized part of it in a manual and in SYS1.SAMPLIB(DFPSSDCR).
All the
SELECT WHEN code to assign the DATACLAS based on LLQ was just a mess of
nested IF/THEN/ELSE statements:
==============================
IF (&LLQ = &FLT5) THEN DO
SET &DATACLAS = 'LOADLIB'
EXIT
END
ELSE IF (&LLQ = &FLT6) THEN DO
SET &DATACLAS = 'SRCFLIBP'
EXIT
END
ELSE IF (&LLQ = COB*) THEN DO
SET &DATACLAS = 'SRCFLIBS'
EXIT
END
ELSE IF (&LLQ = CLIST*) THEN DO
SET &DATACLAS = 'SRCVLIB'
EXIT
END
ELSE IF (&LLQ = &FLT7) THEN DO
SET &DATACLAS = 'LISTING'
EXIT
END
ELSE IF (&LLQ = &FLT8) THEN DO
SET &DATACLAS = 'DATAF'
EXIT
END
ELSE IF (&LLQ = 'VDATA') THEN DO
SET &DATACLAS = 'DATAV'
EXIT
END
ELSE DO
SET &DATACLAS = ''
EXIT
END
==============================
FYI, here is a summary of the problems I found I put in a $$README member
in the ACS library:
There were many problems with the decompiled code. Literals
weren't quoted, all the FILTLISTs were numbered FLT1, FLT2, FLT3,..
but the logic code had them as FLT11, FLT22, FLT33 and then some
were out of order and called FLT45, FLT56 etc. Some FILTLISTs that
were INCLUDE were set to EXCLUDE instead. FILTLISTs with a single
value were removed and had the value used directly in the logic
code (but not quoted of course). Comparison checks for null values
were wrong. All the original "SELECT WHEN" code was changed to
nested IF/THEN/ELSE statements and sometimes it wasn't done
correctly. Not to mention how much more confusing all the
IF/THEN/ELSE logic is, however, I didn't attempt to change any of
it back to "SELECT WHEN".
Regards,
Mark
--
Mark Zelden - Zelden Consulting Services - z/OS, OS/390 and MVS
ITIL v3 Foundation Certified
mailto:[email protected]
Mark's MVS Utilities: http://www.mzelden.com/mvsutil.html
Systems Programming expert at http://search390.techtarget.com/ateExperts/
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN