Handling errors during TTE formatting

If your USRn formatting routine encounters a program check, the ESTAE for the system trace formatter controller gets control. The ESTAE tests the completion code. If it is X'0C6' through X'0CF', indicating a likely data-dependent arithmetic or conversion error, the following takes place:
  • A message is printed in the trace table output saying that the USRn format routine failed and is disabled.
  • The USRn TTE that caused the failure is formatted by ITRFDEFU, the default USRn formatter routine.
  • Future USRn TTEs that would have been formatted by the failing routine will also be formatted.
If the completion code is other than X'0C6' through X'0CF', IEAVETFC terminates and a message is printed saying that the trace formatter failed because of an unrecoverable error.
Figure 1 is a sample of the assembler language code needed to format a USRn trace table entry. The sample CSECT formats a USR0 TTE that was created by the following PTRACE:
PTRACE TYPE=USR0,REGS=(2,4),SAVEAREA=STANDARD
Figure 1. Sample Code for Formatting USRn Trace Table Entries
ITRF007F  CSECT ,
ITRF007F  AMODE 31
ITRF007F  RMODE ANY
*---------------------------------REGISTER EQUATES
R0        EQU   0
R1        EQU   1
R2        EQU   2
TTEPTR    EQU   7                 TTE ADDRESSABILITY
R8        EQU   8                 MODULE ADDRESSABILITY
R9        EQU   9                 DATA AREA ADDRESSABILITY
TROBPTR   EQU   12                TROB ADDRESSABILITY
R12       EQU   12
R13       EQU   13
R14       EQU   14
R15       EQU   15
*---------------------------------STANDARD ENTRY LINKAGE
          DS    0H
          USING *,R15             TEMPORARY MODULE ADDRESSABILITY
          DROP  R15               DROP TEMPORARY ADDRESSABILITY
          STM   R14,R12,12(R13)   SAVE REGISTERS
          BALR  R8,0
          USING *,R8              MODULE ADDRESSABILITY
*****************************************************************************
*         OBTAIN ADDRESSABILITY TO THE PARAMETERS                           *
*****************************************************************************
          L     R9,12(,R1)        ADDRESS OF THE AUTOMATIC DATA AREA
*                                 IS THE FOURTH PARAMETER
          USING DATA,R9           DATA AREA ADDRESSABILITY
          ST    R13,SAVE0001+4    BACKWARD CHAIN SAVEAREAS
          LA    R2,SAVE001        ADDRESS OF MODULE SAVEAREA
          ST    R2,8(R13)         FORWARD CHAIN SAVEAREAS
          LR    R13,R2            POINT TO CURRENT SAVEAREA
*---------------------------------SAVE THE TOKEN
          L     R2,0(,R1)         ADDRESS OF THE TOKEN
          ST    R2,TOKEN          SAVE TOKEN IN AUTOMATIC AREA
*---------------------------------TRACE OUTPUT BUFFER ADDRESSABILITY
          L     TROBPTR,4(,R1)    GET TROB ADDRESS FROM PARMLIST
          USING TROB,TROBPTR      TROB ADDRESSABILITY
*---------------------------------USR0 TTE ADDRESSABILITY
          L     TTEPTR,8(,R1)     ADDRESS OF THE CURRENT TTE
          USING TTE,TTEPTR        SET USR0 TTE ADDRESSABILITY
***********************************************************************
*         FORMAT A HIGHLIGHTING MESSAGE                               *
***********************************************************************
          L     R2,TOKEN          TOKEN TO BE PASSED
          ST    R2,ETPBLIST       SET 1ST PARAMETER(TOKEN)
          LA    R2,HILITE         120 CHAR MESSAGE TO BE OUTPUT
          ST    R2,ETPBLIST+4     SET 2ND PARAMETER
          LA    R2,LINE1          RELATIVE LINE NUMBER OF THE LINE
*                                 TO BE PRINTED
          ST    R2,ETPBLIST+8     SET 3RD PARAMETER
          LA    R2,MAXLINES       NUMBER OF LINES OF OUTPUT EXPECTED
          ST    R2,ETPBLIST+12    SET 4TH PARAMETER
          LA    R2,CPMSG          THE OUTPUT IS A MESSAGE
          ST    R2,ETPBLIST+16    SET 5TH PARAMETER
          LA    R1,ETPBLIST       LOAD ADDRESS OF PARAMETER LIST
          L     R15,IEAVETPB      LOAD ADDRESS OF IEAVETPB ROUTINE
          BALR  R14,R15           CALL IEAVETPB
***********************************************************************
*         INITIALIZE THE OUTPUT BUFFER WITH USR0 DATA WORDS           *
***********************************************************************
          MVC   WORK5,TTEWRD5     MOVE USER WORD TO WORK AREA
          UNPK  WORK10,WORK5      UNPACK USER DATA WORD 1
          TR    WORK10,EBCTABL    TRANSLATE TO PRINTABLE HEX
          MVC   TROBUNQ1,WORK10+1 MOVE TO OUTPUT BUFFER UNIQUE1 COLUMN
          MVC   WORK5,TTEWRD6     MOVE USER WORD TO WORK AREA
          UNPK  WORK10,WORK5      UNPACK USER DATA WORD 2
          TR    WORK10,EBCTABL    TRANSLATE TO PRINTABLE HEX
          MVC   TROBUNQ2,WORK10+1 MOVE TO OUTPUT BUFFER UNIQUE2 COLUMN
          MVC   WORK5,TTEWRD7     MOVE USER WORD TO WORK AREA
          UNPK  WORK10,WORK5      UNPACK USER DATA WORD 3
          TR    WORK10,EBCTABL    TRANSLATE TO PRINTABLE HEX
          MVC   TROBUNQ3,WORK10+1 MOVE TO OUTPUT BUFFER UNIQUE3 COLUMN
***********************************************************************
*         FORMAT THE USR0 TRACE TABLE ENTRY                           *
***********************************************************************
          L     R2,TOKEN          TOKEN TO BE PASSED
          ST    R2,ETPBLIST       SET 1ST PARAMETER(TOKEN)
          LA    R2,TROB           TROB TO BE OUTPUT
          ST    R2,ETPBLIST+4     SET 2ND PARAMETER
          LA    R2,LINE1          RELATIVE LINE NUMBER OF THE LINE
*                                 TO BE PRINTED
          ST    R2,ETPBLIST+8     SET 3RD PARAMETER
          LA    R2,MAXLINES       NUMBER OF LINES OF OUTPUT EXPECTED
          ST    R2,ETPBLIST+12    SET 4TH PARAMETER
          LA    R2,CPTTE          THE OUTPUT IS A PART OF A TTE
          ST    R2,ETPBLIST+16    SET 5TH PARAMETER
          LA    R1,ETPBLIST       LOAD ADDRESS OF PARAMETER LIST
          L     R15,IEAVETPB      LOAD ADDRESS OF IEAVETPB ROUTINE
          BALR  R14,R15           CALL IEAVETPB
***********************************************************************
*        RETURN TO THE CALLER WITH A RETURN CODE OF 0                 *
***********************************************************************
         EXIT  LA R15,0           LOAD UP THE RETURN CODE
         L     R13,4(R13)         LOCATE CALLERS SAVE AREA
         L     R14,12(R13)        RESTORE THE RETURN ADDRESS
         LM    R0,R12,20(R13)     RESTORE REGISTERS
         BR    14
*---------------------------------CONSTANTS
         DS    0D
EBCTABL  EQU   *                  TRANSLATE TABLE FOR PRINTABLE HEX
         ORG   *+240
         DC    C'0123456789ABCDEF'
LINE1    DC    F'1'               RELATIVE LINE NUMBER 1 FOR HILITE
MAXLINES DC    F'1'               TOTAL NUMBER OF OUTPUT LINES
HILITE   DC    CL120'*****************THE MUCH AWAITED USR0 TRACE EVENT
               HAS OCCURRED! ********************************'
*---------------------------------
CPTTE    DC    X'80000000'        IEAVETPB OPTIONS WORD VALUE
*                                 THE OUTPUT IS A TTE
CPMSG    DC    X'01000000'        IEAVETPB OPTIONS WORD VALUE
*                                 THE OUTPUT IS A MESSAGE
*---------------------------------
IEAVETPB DC    V(IEAVETPB)        ADDRESS OF IEAVETPB ROUTINE
*---------------------------------DYNAMIC DATA AREA
DATA     DSECT
SAVE0001 DS    18F                STANDARD SAVEAREA
ETPBLIST DS    5F                 IEAVETPB PARAMETER LIST
TOKEN    DS    F                  ADDRESS OF THE TOKEN TO BE PASSED
*                                 TO IEAVETPB
WORK5    DS   CL5                 INPUT WORK AREA FOR USER DATA
         DS   0F
WORK10   DS   CL10                OUTPUT WORK AREA FOR USER DATA
ENDDATA  EQU  *
ITRF007F CSECT
SIZDATA  DC   AL4(((ENDDATA-DATA+7)/8)*8)
         IHATROB
         IHATTE USRN=YES
         END