IDMS

  • 1.  Batch system abend codes

    Posted Aug 13, 2008 05:01 AM
    Hello Listers,
    We're running rels 16 under z/OS 1.8.

    Would like to know if someone has configured the IDMS-STATUS module for
    IDMS batch programs to call the abend routine in such a way as to have
    the IDMS abend code show as the MVS abend code.

    For example, we have the standard module that performs a CALL 'ABORT'
    when necessary but that causes our jobs to abend with a U2222. For
    overnight support, the operators will call the support person and
    indicate that the job abended with a U2222 which indicates (most of the
    time) that the job has succumbed to an IDMS related problem but it would
    be nice to be informed of the specific IDMS error that caused the prob
    (short of having our operators search through the JES code to get the
    displayed IDMS abend info).


    -Alex Mc.
    "
    IDMS Public Discussion Forum
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP
    IDMS-L@LISTSERV.IUASSN.COM
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    Re: CPU Time by program
    "There are two PTF's to apply to get the stats by program rather than by task code:

    TFEF255
    TFEF258

    These are for R16 SP2+. They haven't been published yet, so you will have to open an issue with CA to get them.

    You also have to change your Performance Monitor report to display the additional information. I can send you a sample, after you get the PTF's applied.


  • 2.  Re:Batch system abend codes

    Posted Aug 13, 2008 05:01 AM
    Hello Listers,
    We're running rels 16 under z/OS 1.8.

    Would like to know if someone has configured the IDMS-STATUS module for
    IDMS batch programs to call the abend routine in such a way as to have
    the IDMS abend code show as the MVS abend code.

    For example, we have the standard module that performs a CALL 'ABORT'
    when necessary but that causes our jobs to abend with a U2222. For
    overnight support, the operators will call the support person and
    indicate that the job abended with a U2222 which indicates (most of the
    time) that the job has succumbed to an IDMS related problem but it would
    be nice to be informed of the specific IDMS error that caused the prob
    (short of having our operators search through the JES code to get the
    displayed IDMS abend info).


    -Alex Mc.
    "
    IDMS 3rd-party providers forum
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    how to get cobol ii dc cobol to access above-the-line storage?
    "its been so long since i had to deal with this -

    all of our DC COBOL program are loaded to to the non-xa non-reentrant
    program pool

    they were link edited with AMODE ANY RMODE 24 (this does not seem right,
    but oh well)

    one of these program is causing our pool 0 to go short

    there are no funky assembler calls - getstg or any of that ilk ...

    1) what can a "" normal"" cobol program do to use pool 0 storage - just
    allocation of working-storage?

    2) what can I tell them to do to make this program access XA storage pools
    - link edit as AMODE 31 RMODE ANY ?

    the tasks that might cause this program to be invoked all appear to be
    location any

    thanks,

    Chris Hoelscher
    Senior IDMS & DB2 Database Administrator
    Humana Inc
    502-476-2538
    choelscher@humana.com



    The information transmitted is intended only for the person or entity to which it is addressed and may contain CONFIDENTIAL material. If you receive this material/information in error, please contact the sender and delete or destroy the material/information.
    "
    IDMS Public Discussion Forum
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP
    IDMS-L@LISTSERV.IUASSN.COM
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    how to get cobol ii dc cobol to access above-the-line storage?
    "its been so long since i had to deal with this -

    all of our DC COBOL program are loaded to to the non-xa non-reentrant
    program pool

    they were link edited with AMODE ANY RMODE 24 (this does not seem right,
    but oh well)

    one of these program is causing our pool 0 to go short

    there are no funky assembler calls - getstg or any of that ilk ...

    1) what can a "" normal"" cobol program do to use pool 0 storage - just
    allocation of working-storage?

    2) what can I tell them to do to make this program access XA storage pools
    - link edit as AMODE 31 RMODE ANY ?

    the tasks that might cause this program to be invoked all appear to be
    location any

    thanks,

    Chris Hoelscher
    Senior IDMS & DB2 Database Administrator
    Humana Inc
    502-476-2538
    choelscher@humana.com



    The information transmitted is intended only for the person or entity to which it is addressed and may contain CONFIDENTIAL material. If you receive this material/information in error, please contact the sender and delete or destroy the material/information.
    "
    IDMS 3rd-party providers forum
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    CPU Time by program
    "Hello All:

    Does anyone know how to get a report of the CPU time used by a program?

    I know that PMAM can produce reports but they are by TASK CODE and this
    client only sees two task codes coming from CICS and the only other one we see is
    ADS2?

    Maybe someone has custom Performance Monitor reports that they would like to
    share?

    The J-Reports don't appear to give CPU time and this client does not have
    the Log Analyzer installed.

    So all we have is normal reporting members and performance monitor reports.

    Bill Allen
    ARCH Consulting Associates, Ltd.
    (704) 641-0296



    **************Looking for a car that's sporty, fun and fits in your budget?
    Read reviews on AOL Autos.
    (http://autos.aol.com/cars-Volkswagen-Jetta-2009/expert-review?ncid=aolaut00030000000007 )
    "
    IDMS Public Discussion Forum
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP
    IDMS-L@LISTSERV.IUASSN.COM
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    CPU Time by program
    "Hello All:

    Does anyone know how to get a report of the CPU time used by a program?

    I know that PMAM can produce reports but they are by TASK CODE and this
    client only sees two task codes coming from CICS and the only other one we see is
    ADS2?

    Maybe someone has custom Performance Monitor reports that they would like to
    share?

    The J-Reports don't appear to give CPU time and this client does not have
    the Log Analyzer installed.

    So all we have is normal reporting members and performance monitor reports.

    Bill Allen
    ARCH Consulting Associates, Ltd.
    (704) 641-0296



    **************Looking for a car that's sporty, fun and fits in your budget?
    Read reviews on AOL Autos.
    (http://autos.aol.com/cars-Volkswagen-Jetta-2009/expert-review?ncid=aolaut00030000000007 )
    "
    IDMS 3rd-party providers forum
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    CALLING ALL IUA MEMBERS
    "

    NOMINATE YOUR COLLEAGUE (OR YOURSELF) FOR THE IUA BOARD OF DIRECTORS



    How would you like the opportunity to network with IDMS users from all over the world, the opportunity to meet with product managers from Computer Associates and to influence enhancements and changes to IDMS?



    Becoming a member of the IUA board of directors can give you, or your colleague, all of this and more. The deadline for nominations is September 16th, 2008. Watch your mailbox and the IUA Web site (iuassn.com) for more information. If you are interested in running for the IUA board of directors, in nominating a colleague for this unique opportunity, or if you have questions about this opportunity contact the IUA at iua@sba.com.









    Diane Montstream
    Solutions Engineer
    diane.montstream@asg.com

    1333 Third Avenue South
    Naples, Florida 34102 USA
    Tel: 239.435.2236
    Toll-Free: 1.800.932.5536
    Cell: 239.248.8340
    Fax: 239.213.3496

    ASG | www.asg.com <http://www.asg.com/>
    Beyond BSM(tm)

    P Please consider the environment before printing this email.




    ______________________________________________________________________
    This email has been scanned by the MessageLabs Email Security System.
    For more information please visit http://www.messagelabs.com/email
    ______________________________________________________________________
    "
    IDMS Public Discussion Forum
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP
    IDMS-L@LISTSERV.IUASSN.COM
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP








    High

    Normal
    CALLING ALL IUA MEMBERS
    "=20

    NOMINATE YOUR COLLEAGUE (OR YOURSELF) FOR THE IUA BOARD OF DIRECTORS

    =20

    How would you like the opportunity to network with IDMS users from all =
    over the world, the opportunity to meet with product managers from =
    Computer Associates and to influence enhancements and changes to IDMS?

    =20

    Becoming a member of the IUA board of directors can give you, or your =
    colleague, all of this and more. The deadline for nominations is =
    September 16th, 2008. Watch your mailbox and the IUA Web site =
    (iuassn.com) for more information. If you are interested in running for =
    the IUA board of directors, in nominating a colleague for this unique =
    opportunity, or if you have questions about this opportunity contact the =
    IUA at iua@sba.com.

    =20

    =20

    =20

    =20

    Diane Montstream
    Solutions Engineer
    diane.montstream@asg.com

    1333 Third Avenue South
    Naples, Florida 34102 USA
    Tel: 239.435.2236
    Toll-Free: 1.800.932.5536
    Cell: 239.248.8340
    Fax: 239.213.3496

    ASG | www.asg.com <http://www.asg.com/>=20
    Beyond BSM(tm)

    P Please consider the environment before printing this email.

    =20


    ______________________________________________________________________
    This email has been scanned by the MessageLabs Email Security System.
    For more information please visit http://www.messagelabs.com/email=20
    ______________________________________________________________________
    "
    IDMS 3rd-party providers forum
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    shared cache/local buffer thrashing - the verdict
    "I wanted to follow up on a problem i encountered over the last several
    weeks

    we had a heavily hit area (2 billion hits a week on this area) in a
    read-only CV - 8176 pages at 6516 blocksize
    to hopefully improve performance - we increased the size of the buffer
    dedicated to this area to 8176 pages - so that in theory each page should
    only be read into a buffer once during the life of the CV

    however - that was not the case

    this area also participated in a shared cache (as the area was frequently
    updated in another CV) - we had tended to implement shared cache to
    invalidate out-dated buffer pages in read-only CVs, not so mush as a data
    repository - so we were not terrible concerned with the size of the share=
    d
    cache (previously - every time an update was made to the area, the ADS
    dialog submitted a JCL to flush the buffer in the read-only CVs ...)

    what we found was - when the shared cache is smaller than the local buffe=
    r,
    the following happen:

    in the read-only CV, as pages are read into the local buffer for the firs=
    t
    time they are also read into the shared cache. but when the shared cache =
    is
    full, but the buffer is not, it seems that the least-recently accessed pa=
    ge
    in the shared cache is released to make room for the new page in the shar=
    ed
    cache, BUT in doing so .. the local buffer page corresponding to the
    released shared cache page is ALSO released. which meant I was in a cat=
    ch
    22 - since almost the entire area was accessed continuiously diring the
    week- pages would be read - buffer would be loaded - shared cache would b=
    e
    loaded - oldest unused shared cache page freed - corresponding local buff=
    er
    page invalidated - oops - need that page - so that page would be read,
    buffer would be loaded, shared cache would be loaded - oldest released ..=
    =2E
    corresponding local buffer pages released .... so pages were getting
    physically re-read (up to 7000 times the number of pages in the area) eve=
    n
    though none were being updated

    the solution - enlared the shared cache to match the size of the local
    buffer (which in our case matched the size of the area) - physical reads
    have gone down to no more than the number of pages in the area (plus a fe=
    w
    to reflect the REAL updates that were made)

    Chris Hoelscher
    Senior IDMS & DB2 Database Administrator
    Humana Inc
    502-476-2538
    choelscher@humana.com



    The information transmitted is intended only for the person or entity to =
    which it is addressed and may contain CONFIDENTIAL material. If you rece=
    ive this material/information in error, please contact the sender and del=
    ete or destroy the material/information.
    "
    IDMS 3rd-party providers forum
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    IDMSVENDOR-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    shared cache/local buffer thrashing - the verdict
    "I wanted to follow up on a problem i encountered over the last several
    weeks

    we had a heavily hit area (2 billion hits a week on this area) in a
    read-only CV - 8176 pages at 6516 blocksize
    to hopefully improve performance - we increased the size of the buffer
    dedicated to this area to 8176 pages - so that in theory each page should
    only be read into a buffer once during the life of the CV

    however - that was not the case

    this area also participated in a shared cache (as the area was frequently
    updated in another CV) - we had tended to implement shared cache to
    invalidate out-dated buffer pages in read-only CVs, not so mush as a data
    repository - so we were not terrible concerned with the size of the shared
    cache (previously - every time an update was made to the area, the ADS
    dialog submitted a JCL to flush the buffer in the read-only CVs ...)

    what we found was - when the shared cache is smaller than the local buffer,
    the following happen:

    in the read-only CV, as pages are read into the local buffer for the first
    time they are also read into the shared cache. but when the shared cache is
    full, but the buffer is not, it seems that the least-recently accessed page
    in the shared cache is released to make room for the new page in the shared
    cache, BUT in doing so .. the local buffer page corresponding to the
    released shared cache page is ALSO released. which meant I was in a catch
    22 - since almost the entire area was accessed continuiously diring the
    week- pages would be read - buffer would be loaded - shared cache would be
    loaded - oldest unused shared cache page freed - corresponding local buffer
    page invalidated - oops - need that page - so that page would be read,
    buffer would be loaded, shared cache would be loaded - oldest released ...
    corresponding local buffer pages released .... so pages were getting
    physically re-read (up to 7000 times the number of pages in the area) even
    though none were being updated

    the solution - enlared the shared cache to match the size of the local
    buffer (which in our case matched the size of the area) - physical reads
    have gone down to no more than the number of pages in the area (plus a few
    to reflect the REAL updates that were made)

    Chris Hoelscher
    Senior IDMS & DB2 Database Administrator
    Humana Inc
    502-476-2538
    choelscher@humana.com



    The information transmitted is intended only for the person or entity to which it is addressed and may contain CONFIDENTIAL material. If you receive this material/information in error, please contact the sender and delete or destroy the material/information.
    "
    IDMS Public Discussion Forum
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP
    IDMS-L@LISTSERV.IUASSN.COM
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    Re: how to get cobol ii dc cobol to access above-the-line storage?
    "The AMODE=31,RMODE=ANY place your program-code above the line with 31 bit mode addresses.
    data(31) places your working- storage above the line.
    Be carefull with combinations of data(31) and data(24) (it only works one way)

    Peter van de Ven Atos Origin

    * Tel: +31(0)40 2142211 +31(0)622567218
    * Fax: +31(0)402144423


    ü 51 25' 43.86"" 5 31'50.36""


  • 3.  Re:Batch system abend codes

    Posted Aug 13, 2008 05:01 AM
    Hello Listers,
    We're running rels 16 under z/OS 1.8.

    Would like to know if someone has configured the IDMS-STATUS module for
    IDMS batch programs to call the abend routine in such a way as to have
    the IDMS abend code show as the MVS abend code.

    For example, we have the standard module that performs a CALL 'ABORT'
    when necessary but that causes our jobs to abend with a U2222. For
    overnight support, the operators will call the support person and
    indicate that the job abended with a U2222 which indicates (most of the
    time) that the job has succumbed to an IDMS related problem but it would
    be nice to be informed of the specific IDMS error that caused the prob
    (short of having our operators search through the JES code to get the
    displayed IDMS abend info).


    -Alex Mc.
    "
    IDMS Public Discussion Forum
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP
    IDMS-L@LISTSERV.IUASSN.COM
    IDMS-L@LISTSERV.IUASSN.COM
    SMTP








    Normal

    Normal
    Re: Batch system abend codes
    "I've wondered about this, after queries from front-line support folks
    too, but never enough to do anything about it . . . I should have been
    surprised if CA hadn't tho't of it too and rejected it for perfectly
    good, if imperfectly obvious reasons. At any rate: an example:

    IDENTIFICATION DIVISION.
    PROGRAM-ID. TEST2222.
    ENVIRONMENT DIVISION.
    INPUT-OUTPUT SECTION.
    FILE-CONTROL.
    IDMS-CONTROL SECTION.
    PROTOCOL. MODE IS BATCH-AUTOSTATUS DEBUG .
    IDMS-RECORDS MANUAL.
    DATA DIVISION.
    SCHEMA SECTION.
    DB MSTRS001 WITHIN MASTERDB VERSION 1.
    FILE SECTION.
    WORKING-STORAGE SECTION.
    77 YAHOO PIC S9(7) VALUE +0 COMP-3.
    COPY IDMS SUBSCHEMA-DESCRIPTION.
    PROCEDURE DIVISION .
    MOVE 'TEST2222' TO PROGRAM-NAME.
    COPY IDMS SUBSCHEMA-BINDS.
    READY USAGE-MODE UPDATE.
    OBTAIN LAST O-SGEN WITHIN O-SGEN-NDX.
    OBTAIN NEXT O-SGEN WITHIN O-SGEN-NDX.
    FINISH.
    GOBACK.
    COPY IDMS IDMS-STATUS.
    IDMS-ABORT SECTION.
    MOVE ERROR-STATUS TO RETURN-CODE . <<--------

    You need to replace IDMSCANC in the link-edit. IDMSCANC is installed by
    default with an alias of ABORT, which is called by the routine
    IDMS-STATUS after each DML.

    DEMIabrt csect
    #MOPT CSECT=3DDEMIabrt,AMODE=3D31,RMODE=3DANY
    entry ABORT
    ABORT save (14,12)
    lr 12,15 .
    using ABORT,12 .
    st 13,savearea+4
    la 13,savearea
    *
    wto 'Abending Due to Program Request'
    abend 0307
    *
    l 13,savearea+4
    return (14,12),rc=3D0
    savearea ds 18f
    end

    //SYSLIN DD DISP=3D(OLD,DELETE),DSN=3D&&TEMP3
    // DD *
    INCLUDE LOADLIB(IDMS)
    INCLUDE SYSLMOD(DEMIABRT)
    ENTRY TEST2222
    NAME TEST2222(R)

    If you use COBOL compile option DYN, I think it will still find IDMSCANC
    in the IDMS.LOADLIB, unless you precede within the concatenation a
    standalone version of DEMIABRT, also with an alias of ABORT.

    With the NODYN option, and without any other coding the DML error
    major-minor code shows up as the RETCODE, tho the abend is still 2222 .
    . .=20

    ---- THURSDAY, 14 AUG 2008 ----
    $HASP373 TEST2222 STARTED - INIT 1 - CLASS A - SYS AEIS
    ACF9CCCD USERID SCXDEM IS ASSIGNED TO THIS JOB - TEST2222
    IEF403I TEST2222 - STARTED - TIME=3D10.43.56
    +************************** ABORTING - TEST2222, 0307, O-SGEN
    +Abending Due to Program Request
    IEF450I TEST2222 T2222 - ABEND=3DS000 U0307 REASON=3D00000000 36
    TIME=3D10.43.56
    | Job Name | Step| Executing| Invoking | Program | RetCd |
    |__________|__#__|___Step___|___Step___|__________|_______|
    | TEST2222 | 1 | T2222 | ........ | TEST2222 | U0307 | *
    IEF404I TEST2222 - ENDED - TIME=3D10.43.56
    | TEST2222 |______________________________________| EOJ |
    $HASP395 TEST2222 ENDED

    So you could do more, with a lot of trouble,
    Or you could do this much, without much effort -- only adding that one
    statement to each cobol program,
    Or you could teach the frontline people how to spot the DML error in the
    JESLIST

    ...8^)...

    dem


  • 4.  Re: Batch system abend codes

    Posted Aug 14, 2008 10:00 AM
    I've wondered about this, after queries from front-line support folks
    too, but never enough to do anything about it . . . I should have been
    surprised if CA hadn't tho't of it too and rejected it for perfectly
    good, if imperfectly obvious reasons. At any rate: an example:

    IDENTIFICATION DIVISION.
    PROGRAM-ID. TEST2222.
    ENVIRONMENT DIVISION.
    INPUT-OUTPUT SECTION.
    FILE-CONTROL.
    IDMS-CONTROL SECTION.
    PROTOCOL. MODE IS BATCH-AUTOSTATUS DEBUG .
    IDMS-RECORDS MANUAL.
    DATA DIVISION.
    SCHEMA SECTION.
    DB MSTRS001 WITHIN MASTERDB VERSION 1.
    FILE SECTION.
    WORKING-STORAGE SECTION.
    77 YAHOO PIC S9(7) VALUE +0 COMP-3.
    COPY IDMS SUBSCHEMA-DESCRIPTION.
    PROCEDURE DIVISION .
    MOVE 'TEST2222' TO PROGRAM-NAME.
    COPY IDMS SUBSCHEMA-BINDS.
    READY USAGE-MODE UPDATE.
    OBTAIN LAST O-SGEN WITHIN O-SGEN-NDX.
    OBTAIN NEXT O-SGEN WITHIN O-SGEN-NDX.
    FINISH.
    GOBACK.
    COPY IDMS IDMS-STATUS.
    IDMS-ABORT SECTION.
    MOVE ERROR-STATUS TO RETURN-CODE . <<--------

    You need to replace IDMSCANC in the link-edit. IDMSCANC is installed by
    default with an alias of ABORT, which is called by the routine
    IDMS-STATUS after each DML.

    DEMIabrt csect
    #MOPT CSECT=DEMIabrt,AMODE=31,RMODE=ANY
    entry ABORT
    ABORT save (14,12)
    lr 12,15 .
    using ABORT,12 .
    st 13,savearea+4
    la 13,savearea
    *
    wto 'Abending Due to Program Request'
    abend 0307
    *
    l 13,savearea+4
    return (14,12),rc=0
    savearea ds 18f
    end

    //SYSLIN DD DISP=(OLD,DELETE),DSN=&&TEMP3
    // DD *
    INCLUDE LOADLIB(IDMS)
    INCLUDE SYSLMOD(DEMIABRT)
    ENTRY TEST2222
    NAME TEST2222(R)

    If you use COBOL compile option DYN, I think it will still find IDMSCANC
    in the IDMS.LOADLIB, unless you precede within the concatenation a
    standalone version of DEMIABRT, also with an alias of ABORT.

    With the NODYN option, and without any other coding the DML error
    major-minor code shows up as the RETCODE, tho the abend is still 2222 .
    . .

    ---- THURSDAY, 14 AUG 2008 ----
    $HASP373 TEST2222 STARTED - INIT 1 - CLASS A - SYS AEIS
    ACF9CCCD USERID SCXDEM IS ASSIGNED TO THIS JOB - TEST2222
    IEF403I TEST2222 - STARTED - TIME=10.43.56
    +************************** ABORTING - TEST2222, 0307, O-SGEN
    +Abending Due to Program Request
    IEF450I TEST2222 T2222 - ABEND=S000 U0307 REASON=00000000 36
    TIME=10.43.56
    | Job Name | Step| Executing| Invoking | Program | RetCd |
    |__________|__#__|___Step___|___Step___|__________|_______|
    | TEST2222 | 1 | T2222 | ........ | TEST2222 | U0307 | *
    IEF404I TEST2222 - ENDED - TIME=10.43.56
    | TEST2222 |______________________________________| EOJ |
    $HASP395 TEST2222 ENDED

    So you could do more, with a lot of trouble,
    Or you could do this much, without much effort -- only adding that one
    statement to each cobol program,
    Or you could teach the frontline people how to spot the DML error in the
    JESLIST

    ...8^)...

    dem


  • 5.  Re:Re: Batch system abend codes

    Posted Aug 14, 2008 10:00 AM
    I've wondered about this, after queries from front-line support folks
    too, but never enough to do anything about it . . . I should have been
    surprised if CA hadn't tho't of it too and rejected it for perfectly
    good, if imperfectly obvious reasons. At any rate: an example:

    IDENTIFICATION DIVISION.
    PROGRAM-ID. TEST2222.
    ENVIRONMENT DIVISION.
    INPUT-OUTPUT SECTION.
    FILE-CONTROL.
    IDMS-CONTROL SECTION.
    PROTOCOL. MODE IS BATCH-AUTOSTATUS DEBUG .
    IDMS-RECORDS MANUAL.
    DATA DIVISION.
    SCHEMA SECTION.
    DB MSTRS001 WITHIN MASTERDB VERSION 1.
    FILE SECTION.
    WORKING-STORAGE SECTION.
    77 YAHOO PIC S9(7) VALUE +0 COMP-3.
    COPY IDMS SUBSCHEMA-DESCRIPTION.
    PROCEDURE DIVISION .
    MOVE 'TEST2222' TO PROGRAM-NAME.
    COPY IDMS SUBSCHEMA-BINDS.
    READY USAGE-MODE UPDATE.
    OBTAIN LAST O-SGEN WITHIN O-SGEN-NDX.
    OBTAIN NEXT O-SGEN WITHIN O-SGEN-NDX.
    FINISH.
    GOBACK.
    COPY IDMS IDMS-STATUS.
    IDMS-ABORT SECTION.
    MOVE ERROR-STATUS TO RETURN-CODE . <<--------

    You need to replace IDMSCANC in the link-edit. IDMSCANC is installed by
    default with an alias of ABORT, which is called by the routine
    IDMS-STATUS after each DML.

    DEMIabrt csect
    #MOPT CSECT=3DDEMIabrt,AMODE=3D31,RMODE=3DANY
    entry ABORT
    ABORT save (14,12)
    lr 12,15 .
    using ABORT,12 .
    st 13,savearea+4
    la 13,savearea
    *
    wto 'Abending Due to Program Request'
    abend 0307
    *
    l 13,savearea+4
    return (14,12),rc=3D0
    savearea ds 18f
    end

    //SYSLIN DD DISP=3D(OLD,DELETE),DSN=3D&&TEMP3
    // DD *
    INCLUDE LOADLIB(IDMS)
    INCLUDE SYSLMOD(DEMIABRT)
    ENTRY TEST2222
    NAME TEST2222(R)

    If you use COBOL compile option DYN, I think it will still find IDMSCANC
    in the IDMS.LOADLIB, unless you precede within the concatenation a
    standalone version of DEMIABRT, also with an alias of ABORT.

    With the NODYN option, and without any other coding the DML error
    major-minor code shows up as the RETCODE, tho the abend is still 2222 .
    . .=20

    ---- THURSDAY, 14 AUG 2008 ----
    $HASP373 TEST2222 STARTED - INIT 1 - CLASS A - SYS AEIS
    ACF9CCCD USERID SCXDEM IS ASSIGNED TO THIS JOB - TEST2222
    IEF403I TEST2222 - STARTED - TIME=3D10.43.56
    +************************** ABORTING - TEST2222, 0307, O-SGEN
    +Abending Due to Program Request
    IEF450I TEST2222 T2222 - ABEND=3DS000 U0307 REASON=3D00000000 36
    TIME=3D10.43.56
    | Job Name | Step| Executing| Invoking | Program | RetCd |
    |__________|__#__|___Step___|___Step___|__________|_______|
    | TEST2222 | 1 | T2222 | ........ | TEST2222 | U0307 | *
    IEF404I TEST2222 - ENDED - TIME=3D10.43.56
    | TEST2222 |______________________________________| EOJ |
    $HASP395 TEST2222 ENDED

    So you could do more, with a lot of trouble,
    Or you could do this much, without much effort -- only adding that one
    statement to each cobol program,
    Or you could teach the frontline people how to spot the DML error in the
    JESLIST

    ...8^)...

    dem