I'm guessing the SYSSTATE is required because you don't have a base register 
(specified BASEREG=NONE) which means you want macro's to use relative 
instructions.

DSASIZE= is clearly documented as a required argument. It says that DSASIZE=0 
is a leaf program that requires 3 specific registers not be touched. It also 
says that if not 0, then it must be 80 or greater. If it allows between 1 and 
79, then register it as a bug.

If BASEREG= had a valid register, then your LTORG constants because of the DATA 
LOCTR.  

If EDCXPRLG generates the CSECT, then remove the hardcoded CSECT. 

I wouldn't use FREEMAIN as the ENTNAME= because it creates an external 
reference that may conflict with something.

You might want to consider using STORAGE macro instead of FREEMAIN.

The FREEMAIN is unconditional which would cause an abend if something goes 
wrong. Alternatively, you could make it conditional and give the caller the 
ability to recover or ignore the failure.

Since we don't know how it was allocated, you may need to specify a TCB. Since 
TCB's are 24 bit, you could pass it as part of the subpool register.

It's unlikely the DSA user area is located at the beginning of the DSA. I'm 
guessing that the DSA macro will tell you how to address your user area in the 
DSA.

Reply via email to