On 2015-02-24 11:52, Beesley, Paul wrote:
Robert

Many thanks for your reply. I have added my vote to the RFE.

Here are the compiler options from the latest trial, the LE override options 
from the DCL PLIXOPT statement, and the results of a CLER transaction from the 
relevant CICS region.
I don’t pretend to understand many of them but any comments on these are 
welcome!
Apologies for the length of this post

   AGGREGATE(DECIMAL)
   ARCH(6)

As mentioned by others, try ARCH(8) up to, depending on the system, ARCH(10)

   ATTRIBUTES(FULL)
   BACKREG(5)
   BIFPREC(15)
   BLANK('05'x)
NOBLKOFF
   CASERULES( KEYWORD( MIXED ) )
   CEESTART(FIRST)
   CHECK( NOCONFORMANCE NOSTORAGE )
   CMPAT(V2)
   CODEPAGE(01140)
NOCOMMON
NOCOMPILE(S)
NOCOPYRIGHT
   CSECT
   CSECTCUT(4)
   CURRENCY('£')
   DDSQL('')
   DECIMAL( FOFLONASGN NOFOFLONMULT NOFORCEDSIGN )
   DEFAULT(IBM ASSIGNABLE NOINITFILL NONCONNECTED
           DESCRIPTOR DESCLOCATOR DUMMY(ALIGNED) ORDINAL(MIN)
           BYADDR RETURNS(BYADDR) LINKAGE(OPTLINK) NORETCODE
           NOINLINE REORDER NOOVERLAP NONRECURSIVE ALIGNED NULL370
           BIN1ARG PSEUDODUMMY NULLSTRADDR NULLSTRPTR(NULL) EVENDEC

NOEVENDEC might be better.

           SHORT(HEXADEC) EBCDIC HEXADEC NATIVE NATIVEADDR E(HEXADEC))
   DEPRECATE(
              BUILTIN()
              ENTRY()
              INCLUDE()
              VARIABLE()
              STMT()
            )
   DEPRECATENEXT(
                  BUILTIN()
                  ENTRY()
                  INCLUDE()
                  VARIABLE()
                  STMT()
                )
   DISPLAY( WTO )
NODLLINIT
NOEXIT
   EXTRN(FULL)
   FLAG(W)
   FLOAT( AFP(NOVOLATILE) NODFP )
   FLOATINMATH(ASIS)
NOGOFF
NOGONUMBER
NOGRAPHIC
NOHGPR
NOIGNORE
   INCAFTER(PROCESS(""))
NOINCDIR
   INCLUDE
NOINITAUTO
NOINITBASED
NOINITCTL
NOINITSTATIC
NOINSOURCE
NOINTERRUPT
   LANGLVL(OS)
   LIMITS( EXTNAME(7) FIXEDBIN(31,31) FIXEDDEC(15,15) NAME(100) )
   LINECOUNT(60)
NOLINEDIR
   LIST
   LISTVIEW(SOURCE)
   MACRO
   MAP
   MARGINI(' ')
   MARGINS(2,72,1)
   MAXGEN(100000)
   MAXMEM(1048576)
   MAXMSG(W 250)
   MAXNEST( BLOCK(17) DO(17) IF(17) )
   MAXSTMT(4096)
   MAXTEMP(50000)

I would personally set this lower to flag complex statements!

   MDECK
NOMSGSUMMARY
NONAME
   NAMES('@#£' '@#£')
   NATLANG(ENU)
   NEST
   NOT('¬')
   NUMBER
   OBJECT
NOOFFSET
NOONSNAP
   OPTIMIZE(0)
   OPTIONS(DOC)

OPTIONS (ALL), so that you can see anything that's added later!

   OR('|')
   PP( MACRO )
NOPPCICS
NOPPINCLUDE
   PPLIST(KEEP)
NOPPMACRO
NOPPSQL
NOPPTRACE
   PRECTYPE(ANS)
   PREFIX(CONVERSION FIXEDOVERFLOW INVALIDOP OVERFLOW
          NOSIZE NOSTRINGRANGE NOSTRINGSIZE NOSUBSCRIPTRANGE
          UNDERFLOW ZERODIVIDE)
NOPROCEED(S)
   PROCESS(DELETE)
   QUOTE('"')
NOREDUCE
NORENT
   RESEXP
   RESPECT()
   RTCHECK( NONULLPTR )
   RULES(IBM BYNAME CONTROLLED NODECSIZE ELSEIF EVENDEC GOTO GLOBALDO
         NOLAXBIF NOLAXCTL LAXDCL NOLAXDEF LAXENTRY LAXIF LAXINOUT LAXLINK
         LAXMARGINS LAXNESTED LAXPUNC LAXQUAL LAXRETURN LAXSCALE LAXSEMI LAXSTG
         NOLAXSTRZ MULTICLOSE PADDING PROCENDONLY RECURSIVE SELFASSIGN UNREF)

Use NOLAXDCL, NOLAXPUNC, NOMULTCLOSE, NOSELFASSIGN!

The first three don't have any effects on the performance, but they will point out questionable code!

NOSEMANTIC(S)
NOSERVICE
   SOURCE
   SPILL(512)
   STATIC(FULL)
NOSTDSYS
NOSTMT
   STORAGE
   STRINGOFGRAPHIC(GRAPHIC)
NOSYNTAX(S)
   SYSPARM('')
   SYSTEM(MVS)
NOTEST
   UNROLL(AUTO)
   USAGE( HEX(SIZE) ROUND(IBM) SUBSTR(STRICT) UNSPEC(IBM) )
   WIDECHAR(BIGENDIAN)
   WINDOW(1950)
   WRITABLE
   XINFO(NODEF MSG SYM SYN NOXML)
   XML( CASE(UPPER) )


DCL PLIXOPT                    CHAR(46) VAR STATIC EXTERNAL
   INIT('HEAP(16K),ANYHEAP(1320K),STACK(6K),RPTSTG(OFF)');

Run programs, even if only once with PLIXOPT('RPTSTG(ON)') and check that you allocate enough storage to start with. A bog-standard stack of 6K seems pretty small, from what I remember, we used to have substantially higher values.

LAST WHERE SET                  OPTION
-----------------------------  ------------------------------------------------
PARMLIB(CEEPRM00)                 ABPERC(NONE)
PARMLIB(CEEPRM00)                 ABTERMENC(ABEND)
PARMLIB(CEEPRM00)               NOAIXBLD
PARMLIB(CEEPRM00)                 ALL31(ON)
PARMLIB(CEEPRM00)                 ANYHEAP(4096,4080,ANYWHERE,FREE)
PARMLIB(CEEPRM00)               NOAUTOTASK
PARMLIB(CEEPRM00)                 BELOWHEAP(4096,4080,FREE)
PARMLIB(CEEPRM00)                 CBLOPTS(ON)
PARMLIB(CEEPRM00)                 CBLPSHPOP(ON)
PARMLIB(CEEPRM00)                 CBLQDA(ON)
Installation default              CEEDUMP(60,SYSOUT=*,FREE=END,
                                     SPIN=UNALLOC)
PARMLIB(CEEPRM00)                 CHECK(ON)
PARMLIB(CEEPRM00)                 COUNTRY(GB)
PARMLIB(CEEPRM00)                 DEBUG
PARMLIB(CEEPRM00)                 DEPTHCONDLMT(0)
Installation default              DYNDUMP(*USERID,NODYNAMIC,TDUMP)
Installation default              ENVAR("")
PARMLIB(CEEPRM00)                 ERRCOUNT(0)
PARMLIB(CEEPRM00)                 ERRUNIT(6)
PARMLIB(CEEPRM00)                 FILEHIST
PARMLIB(CEEPRM00)                 FILETAG(NOAUTOCVT,NOAUTOTAG)
Default setting                 NOFLOW
PARMLIB(CEEPRM00)                 HEAP(4096,4080,ANYWHERE,KEEP,4096,
                                     4080)
PARMLIB(CEEPRM00)                 HEAPCHK(OFF,1,0,0,0,1024,0,1024,0)
PARMLIB(CEEPRM00)                 HEAPPOOLS(ON,8,5,32,5,128,5,256,5,
                                     1024,5,2048,5,0,10,0,5,0,5,0,5,0,5,
                                     0,5)
PARMLIB(CEEPRM00)                 INFOMSGFILTER(OFF,,,,)
PARMLIB(CEEPRM00)                 INQPCOPN
PARMLIB(CEEPRM00)                 INTERRUPT(OFF)
PARMLIB(CEEPRM00)                 LIBSTACK(4096,4080,FREE)
PARMLIB(CEEPRM00)                 MSGFILE(SYSOUT,FBA,121,0,NOENQ)
PARMLIB(CEEPRM00)                 MSGQ(15)
PARMLIB(CEEPRM00)                 NATLANG(ENU)
Ignored                         NONONIPTSTACK(See THREADSTACK)
PARMLIB(CEEPRM00)                 OCSTATUS
Installation default              PAGEFRAMESIZE(4K,4K,4K)
PARMLIB(CEEPRM00)               NOPC
PARMLIB(CEEPRM00)                 PLITASKCOUNT(20)
PARMLIB(CEEPRM00)                 POSIX(OFF)
PARMLIB(CEEPRM00)                 PROFILE(OFF,"")
PARMLIB(CEEPRM00)                 PRTUNIT(6)
PARMLIB(CEEPRM00)                 PUNUNIT(7)
PARMLIB(CEEPRM00)                 RDRUNIT(5)
PARMLIB(CEEPRM00)                 RECPAD(OFF)
PARMLIB(CEEPRM00)                 RPTOPTS(OFF)
PARMLIB(CEEPRM00)                 RPTSTG(OFF)
PARMLIB(CEEPRM00)               NORTEREUS
PARMLIB(CEEPRM00)               NOSIMVRD
Region default                    STACK(4096,4080,ANYWHERE,KEEP,4096,
                                     4080)
Region default                    STORAGE(00,NONE,00,0)

The third parameter set to zero is a killer, get rid of it! The consequence of using it is that all automatic storage in a procedure will be set to binary zeroes upon each entry to the procedure, and if you've got deeply nested procedures with lots of local variables, you will suffer, big, big, big time! If you need specific variables to be initialised use INIT(whatever) on those, and only those.

PARMLIB(CEEPRM00)                 TERMTHDACT(UADUMP,CESE,96)
PARMLIB(CEEPRM00)               NOTEST(ALL,"*","PROMPT","INSPPREF")
PARMLIB(CEEPRM00)                 THREADHEAP(4096,4080,ANYWHERE,KEEP)
PARMLIB(CEEPRM00)                 THREADSTACK(OFF,4096,4080,ANYWHERE,
                                     KEEP,4096,4080)
PARMLIB(CEEPRM00)                 TRACE(OFF,4096,NODUMP,LE=0)
PARMLIB(CEEPRM00)                 TRAP(ON,SPIE)
PARMLIB(CEEPRM00)                 UPSI(00000000)
PARMLIB(CEEPRM00)               NOUSRHDLR(,)
PARMLIB(CEEPRM00)                 VCTRSAVE(OFF)
Installation default              XPLINK(OFF)
PARMLIB(CEEPRM00)                 XUFLOW(AUTO)

I cannot see anything more obvious, but you might also ask around on the pl1 list and/or the comp.lang.pl1 Usenet newsgroup. Peter Elderon, one of IBM lead PL/I developer reads the former and may read the latter.

Robert
--
Robert AH Prins
robert(a)prino(d)org

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN

Reply via email to