Thank You Michael and Seymour for your thought invoking responses. I will use RENT.
Thanks Again, Dave -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of Toole, Michael Sent: Wednesday, August 21, 2013 3:03 PM To: [email protected] Subject: Re: JES2 EXIT 40 ASMA90 Parm Question Reentrant code considerations are contingent on the calling environment. An exit routine called from the JES2 main task must be reentrant in the JES2 sense. The JES2 dispatching unit, commonly called JES2 processors, running under a processor control element (PCE) perform the processing for the JES2 main task. The JES2 dispatcher controls what PCE is currently active (that is, what JES2 processor is currently running). Because a JES2 processor doesn't relinquish control to another JES2 processor involuntarily, an exit routine, invoked out of a JES2 main task processor may use a nonreentrant work area; the work area is serialized if the exit routine doesn't issue a $WAIT macro or until the exit routine or service called from an exit routine does issue the $WAIT macro. When the exit routine issues the $WAIT macro directly or through a called routine, control returns to the JES2 dispatcher and the serialization on the nonreentrant work area ceases. The nonreentrant work area may also be passed between exit routines, or between an exit routine and JES2, before a $WAIT macro call. Work areas to be used "across" a $WAIT must either be within the processor work area established as part of the processor control element (PCE) or else must be directly owned by the processor. In the same JES2 reentrant sense, an exit routine may search or manipulate a JES2 queue providing it has ownership of the queue and doesn't issue a $WAIT macro until this action is completed. An exit routine called from a JES2 subtask, from the user environment, or from the FSS environment must be reentrant in the MVS sense. The exit routine must be capable of taking an MVS interrupt at any point in its processing. The exit routine must be able to handle the simultaneity of execution with other subtasks and user address space, or functional subsystem (FSS) routines and with the JES2 main task. The following actions may produce unpredictable results: Modifying control block fields designed for use by the JES2 main task only (for example, $DOUBLE, $GENWORK, and so on.) Accessing checkpointed data from the subtask, user, or FSS environment. Mike Michael K. Toole Sr. I.T. Consultant The Auto Club Group 1 Auto Club Drive Dearborn, Mi. 48126 313-336-1783 [email protected] -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of Hansen, Dave L - Eagan, MN Sent: Wednesday, August 21, 2013 11:40 AM To: [email protected] Subject: JES2 EXIT 40 ASMA90 Parm Question CROSS-POSTED to ASSEMBLER-LIST and IBM-MAIN Dear Group, I worked with IBM to determine the best way to move print from one JES2 spool to another was by using EXIT 40. Last time I was assembling a CSECT I needed the PARM RENT. In SYS1.SHASSAMP is HASIASM which has NORENT. In SYS1.SHASSAMP is HASX40A which is what I am modifying. I added the SYS1.SHASMAC DD to the JCL. The z/OS V1R13.0 JES2 Installation Exits talks about Exit 40: Modifying SYSOUT characteristics. I have RMODE ANY. It also says I need AMODE 31. The HLASM V1R5 Language Reference has figure 26 AMODE/RMODE Defaults. It says RMODE 31 (was ANY) defaults to AMODE 31. I think I have meet the requirements. The first two lines in HASX40A are: *PROCESS USING(WARN(15)),SUPRWARN(324,420,436,437) ACONTROL CPAT(NOSYSL,NOCASE),FLAG(PAGE0) But the *PROCESS generates two messages. It looks like WARN(15) may be obsolete. ** ASMA437N Attempt to override invocation parameter in a *PROCESS statement. Suboption 15 of USING option ignored. ** ASMA420N Error in a *PROCESS statement parameter - USING(WARN(15)) My program assembles clean with this JCL: //ASM EXEC PGM=ASMA90, // PARM='NORENT,DECK,NOOBJ,USING(WARN(3))', // REGION=6M //SYSLIB DD DISP=SHR,DSN=SYS1.MACLIB // DD DISP=SHR,DSN=SYS1.SHASMAC // DD DISP=SHR,DSN=SYS1.MODGEN,VOL=SER=S7XPA2,UNIT=3390 //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(10,1)) //SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(10,1)) //SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(10,1)) //SYSPRINT DD SYSOUT=* //SYSIN DD DISP=SHR,DSN=SYS2.LIBRSRC.CNTL(HASX40) //SYSPUNCH DD DSN=&&OBJ,DISP=(,PASS),SPACE=(CYL,(3,1)), // UNIT=SYSDA,DCB=BLKSIZE=1600 //* //LKED EXEC PGM=IEWL,PARM='XREF,LIST,RENT,REFR,AC=0' //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(10,1)) //SYSPRINT DD SYSOUT=* //OBJ DD DSN=&&OBJ,DISP=(OLD,DELETE) //SYSLMOD DD DISP=SHR,DSN=SYS2.LINKLIB //SYSLIN DD * INCLUDE OBJ ENTRY HASX40 NAME HASX40(R) /* Q). Do I want NORENT for my JES2 EXIT 40? It deals with being reentrant. Not sure what this exit should have. Q). Does my PARM=USING(WARN(3)) override the *PROCESS USING(WARN(15))? Then I can remove USING from the *PROCESS (and maybe not get any messages). Thank you, Dave ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
