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:m...@mzelden.com 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 lists...@listserv.ua.edu with the message: INFO IBM-MAIN