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

Reply via email to