主頁 > 後端開發 > 我應該如何在IBMz/OS匯編器中獲取輸入和列印輸出?

我應該如何在IBMz/OS匯編器中獲取輸入和列印輸出?

2021-11-16 17:29:23 後端開發

我正在嘗試使用“IBM Z 系統服務器的匯編語言編程”一書中介紹的一些簡單的 I/O 宏(在附錄 B 部分介紹了宏)。但是當我嘗試運行示例程式時,只要程式到達第一個宏系統轉儲就會發生。輸出中還有 IEF686I。我是一名學習 IBM 匯編語言的學生,我對 JCL 不熟悉,我不知道我是否在其中做錯了什么。獲取輸入和分配輸出區域的格式是否可以,還是我應該以不同的方式進行?這是 JCL:

//XXXXXX     JOB   CLASS=A,MSGCLASS=T,MSGLEVEL=(1,1)
//           EXEC  PROC=ASMACLG
//SYSPRINT   DD    SYSOUT=*
//C.SYSLIB   DD    DSN=SYS1.MACLIB,DISP=SHR
//           DD    DSN=HATAM.MACLIB.SRC,DISP=SHR
//C.SYSIN    DD    DSN=HATAM.ASM.SRC(MACSAMP),DISP=SHR
//G.SYSPRINT DD    SYSOUT=*
//G.SYSIN    DD    *
  123456 * FIRST RECORD
 -000034567890 * SECOND AND LAST RECORD
/*

請注意 HATAM.MACLIB.SRC 是包含 i/o 宏($$GENIO、CONVERTI、...)的資料集。這是輸出:

1                         J E S 2  J O B  L O G  --  S Y S T E M  S Y S 1  --  N O D E  N 1
0
 19.05.18 JOB00756 ---- THURSDAY,  11 NOV 2021 ----
 19.05.18 JOB00756  IRR010I  USERID IBMUSER  IS ASSIGNED TO THIS JOB.
 19.05.18 JOB00756  IEF677I WARNING MESSAGE(S) FOR JOB XXXXXX   ISSUED
 19.05.18 JOB00756  ICH70001I IBMUSER  LAST ACCESS AT 18:48:30 ON THURSDAY, NOVEMBER 11, 2021
 19.05.18 JOB00756  $HASP373 XXXXXX   STARTED - INIT 1    - CLASS A - SYS SYS1
 19.05.18 JOB00756  IEF403I XXXXXX - STARTED - TIME=19.05.18
 19.05.18 JOB00756  IEA995I SYMPTOM DUMP OUTPUT  159
    159             SYSTEM COMPLETION CODE=0C2  REASON CODE=00000002
    159              TIME=19.05.18  SEQ=00021  CPU=0000  ASID=001A
    159              PSW AT TIME OF ERROR  078D1000   00007010  ILC 4  INTC 02
    159                ACTIVE LOAD MODULE           ADDRESS=00007000  OFFSET=00000010
    159                NAME=GO
    159                DATA AT PSW  0000700A - 1EEF80FD  DE080000  70000000
    159                GR 0: FD000008   1: 00000000
    159                   2: 00000040   3: 008D79D4
    159                   4: 008D79B0   5: 008FF350
    159                   6: 008C6FE0   7: FD000000
    159                   8: 008FCC80   9: 008CFCC8
    159                   A: 00000000   B: 008FF350
    159                   C: 834C4BAA   D: 00006008
    159                   E: 80FE507C   F: 00007274
    159              END OF SYMPTOM DUMP
 19.05.18 JOB00756  IEF450I XXXXXX G - ABEND=S0C2 U0000 REASON=00000002  160
    160                     TIME=19.05.18
 19.05.18 JOB00756  IEF404I XXXXXX - ENDED - TIME=19.05.18
 19.05.18 JOB00756  $HASP395 XXXXXX   ENDED
0------ JES2 JOB STATISTICS ------
-  11 NOV 2021 JOB EXECUTION DATE
-           12 CARDS READ
-          695 SYSOUT PRINT RECORDS
-            0 SYSOUT PUNCH RECORDS
-           42 SYSOUT SPOOL KBYTES
-         0.01 MINUTES EXECUTION TIME
         1 //XXXXXX     JOB   CLASS=A,MSGCLASS=T,MSGLEVEL=(1,1)                    JOB00756
         2 //           EXEC  PROC=ASMACLG
         3 XXASMACLG  PROC
           XX*
           XX*********************************************************************
           XX*                                                                   *
           XX*  Licensed Materials - Property of IBM                             *
           XX*                                                                   *
           XX*  5696-234   5694-A01                                              *
           XX*                                                                   *
           XX*  Copyright IBM Corporation 1992, 2008 All Rights Reserved.        *
           XX*                                                                   *
           XX*  US Government Users Restricted Rights - Use, duplication         *
           XX*  or disclosure restricted by GSA ADP Schedule Contract            *
           XX*  with IBM Corp.                                                   *
           XX*                                                                   *
           XX*********************************************************************
           XX*                                                                   *
           XX*  ASMACLG                                                          *
           XX*                                                                   *
           XX*  This procedure runs the High Level Assembler, link-edits the     *
           XX*  newly assembled program and runs the program after the           *
           XX*  link-edit is accomplished.                                       *
           XX*                                                                   *
           XX*********************************************************************
           XX*
         4 XXC        EXEC PGM=ASMA90
           XX*
         5 //C.SYSLIB   DD    DSN=SYS1.MACLIB,DISP=SHR
           X/SYSLIB   DD  DSN=SYS1.MACLIB,DISP=SHR
         6 //           DD    DSN=SYS1.MODGEN,DISP=SHR
         7 //           DD    DSN=HATAM.MACLIB.SRC,DISP=SHR
         8 XXSYSUT1   DD  DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND),
           XX             UNIT=SYSALLDA,BUFNO=1
         9 //SYSPRINT   DD    SYSOUT=*
           X/SYSPRINT DD  SYSOUT=*
        10 XXSYSLIN   DD  DSN=&&OBJ,SPACE=(3040,(40,40),,,ROUND),
           XX             UNIT=SYSALLDA,DISP=(MOD,PASS),
           XX             BLKSIZE=3040,LRECL=80,RECFM=FB,BUFNO=1
           XX*
        11 //C.SYSIN    DD    DSN=HATAM.ASM.SRC(MACSAMP),DISP=SHR
        12 XXL        EXEC PGM=HEWL,PARM='MAP,LET,LIST',COND=(8,LT,C)
           XX*
        13 XXSYSLIN   DD  DSN=&&OBJ,DISP=(OLD,DELETE)
        14 XX         DD  DDNAME=SYSIN
        15 XXSYSLMOD  DD  DISP=(,PASS),UNIT=SYSALLDA,SPACE=(CYL,(1,1,1)),
           XX             DSN=&&GOSET(GO)
        16 XXSYSUT1   DD  DSN=&&SYSUT1,SPACE=(1024,(120,120),,,ROUND),
           XX             UNIT=SYSALLDA,BUFNO=1
        17 XXSYSPRINT DD  SYSOUT=*
           XX*
        18 XXG        EXEC PGM=*.L.SYSLMOD,COND=((8,LT,C),(8,LT,L))
           XX*
        19 //G.SYSPRINT DD    SYSOUT=*
        20 //G.SYSIN    DD    *
  STMT NO. MESSAGE
         2 IEFC001I PROCEDURE ASMACLG WAS EXPANDED USING SYSTEM LIBRARY HLA.SASMSAM1
        18 IEF686I DDNAME REFERRED TO ON DDNAME KEYWORD IN PRIOR STEP WAS NOT RESOLVED
 ICH70001I IBMUSER  LAST ACCESS AT 18:48:30 ON THURSDAY, NOVEMBER 11, 2021
 IEF236I ALLOC. FOR XXXXXX C
 IEF237I 0A81 ALLOCATED TO SYSLIB
 IEF237I 0A81 ALLOCATED TO
 IEF237I 0A81 ALLOCATED TO
 IGD100I 0A95 ALLOCATED TO DDNAME SYSUT1   DATACLAS (        )
 IEF237I JES2 ALLOCATED TO SYSPRINT
 IGD100I 0A95 ALLOCATED TO DDNAME SYSLIN   DATACLAS (        )
 IEF237I 0A81 ALLOCATED TO SYSIN
 IEF142I XXXXXX C - STEP WAS EXECUTED - COND CODE 0000
 IEF285I   SYS1.MACLIB                                  KEPT
 IEF285I   VOL SER NOS= ZARES1.
 IEF285I   SYS1.MODGEN                                  KEPT
 IEF285I   VOL SER NOS= ZARES1.
 IEF285I   HATAM.MACLIB.SRC                             KEPT
 IEF285I   VOL SER NOS= ZARES1.
 IEF285I   SYS21315.T190518.RA000.XXXXXX.SYSUT1.H01     DELETED
 IEF285I   VOL SER NOS= ZASYS1.
 IEF285I   IBMUSER.XXXXXX.JOB00756.D0000102.?           SYSOUT
 IEF285I   SYS21315.T190518.RA000.XXXXXX.OBJ.H01        PASSED
 IEF285I   VOL SER NOS= ZASYS1.
 IEF285I   HATAM.ASM.SRC                                KEPT
 IEF285I   VOL SER NOS= ZARES1.
 IEF373I STEP/C       /START 2021315.1905
 IEF374I STEP/C       /STOP  2021315.1905 CPU    0MIN 00.19SEC SRB    0MIN 00.02SEC VIRT   220K SYS   276K EXT   32768K SYS   10732K
 IEF236I ALLOC. FOR XXXXXX L
 IEF237I 0A95 ALLOCATED TO SYSLIN
 IEF237I DMY  ALLOCATED TO
 IGD100I 0A95 ALLOCATED TO DDNAME SYSLMOD  DATACLAS (        )
 IGD100I 0A95 ALLOCATED TO DDNAME SYSUT1   DATACLAS (        )
 IEF237I JES2 ALLOCATED TO SYSPRINT
 IEF142I XXXXXX L - STEP WAS EXECUTED - COND CODE 0000
 IEF285I   SYS21315.T190518.RA000.XXXXXX.OBJ.H01        DELETED
 IEF285I   VOL SER NOS= ZASYS1.
 IEF285I   SYS21315.T190518.RA000.XXXXXX.GOSET.H01      PASSED
 IEF285I   VOL SER NOS= ZASYS1.
 IEF285I   SYS21315.T190518.RA000.XXXXXX.SYSUT1.H01     DELETED
 IEF285I   VOL SER NOS= ZASYS1.
 IEF285I   IBMUSER.XXXXXX.JOB00756.D0000103.?           SYSOUT
 IEF373I STEP/L       /START 2021315.1905
 IEF374I STEP/L       /STOP  2021315.1905 CPU    0MIN 00.05SEC SRB    0MIN 00.00SEC VIRT   104K SYS   276K EXT    1640K SYS   10724K
 IEF236I ALLOC. FOR XXXXXX G
 IEF237I 0A95 ALLOCATED TO PGM=*.DD
 IEF237I JES2 ALLOCATED TO SYSPRINT
 IEF237I JES2 ALLOCATED TO SYSIN
 IEA995I SYMPTOM DUMP OUTPUT
 SYSTEM COMPLETION CODE=0C2  REASON CODE=00000002
  TIME=19.05.18  SEQ=00021  CPU=0000  ASID=001A
  PSW AT TIME OF ERROR  078D1000   00007010  ILC 4  INTC 02
    ACTIVE LOAD MODULE           ADDRESS=00007000  OFFSET=00000010
    NAME=GO
    DATA AT PSW  0000700A - 1EEF80FD  DE080000  70000000
    GR 0: FD000008   1: 00000000
       2: 00000040   3: 008D79D4
       4: 008D79B0   5: 008FF350
       6: 008C6FE0   7: FD000000
       8: 008FCC80   9: 008CFCC8
       A: 00000000   B: 008FF350
       C: 834C4BAA   D: 00006008
       E: 80FE507C   F: 00007274
  END OF SYMPTOM DUMP
 IEF472I XXXXXX G - COMPLETION CODE - SYSTEM=0C2 USER=0000 REASON=00000002
 IEF285I   SYS21315.T190518.RA000.XXXXXX.GOSET.H01      KEPT
 IEF285I   VOL SER NOS= ZASYS1.
 IEF285I   IBMUSER.XXXXXX.JOB00756.D0000104.?           SYSOUT
 IEF285I   IBMUSER.XXXXXX.JOB00756.D0000101.?           SYSIN
 IEF373I STEP/G       /START 2021315.1905
 IEF374I STEP/G       /STOP  2021315.1905 CPU    0MIN 00.04SEC SRB    0MIN 00.00SEC VIRT     8K SYS   256K EXT       0K SYS   10780K
 IEF237I 0A95 ALLOCATED TO SYS00001
 IEF285I   SYS21315.T190518.RA000.XXXXXX.R0100017       KEPT
 IEF285I   VOL SER NOS= ZASYS1.
 IEF285I   SYS21315.T190518.RA000.XXXXXX.GOSET.H01      DELETED
 IEF285I   VOL SER NOS= ZASYS1.
 IEF375I  JOB/XXXXXX  /START 2021315.1905
 IEF376I  JOB/XXXXXX  /STOP  2021315.1905 CPU    0MIN 00.28SEC SRB    0MIN 00.02SEC
1                                         High Level Assembler Option Summary                   (PTF UK37157)   Page    1
-                                                                                            HLASM R6.0  2021/11/11 19.05
0  No Overriding ASMAOPT Parameters
   No Overriding Parameters
   No Process Statements


   Options for this Assembly
0  NOADATA
     ALIGN
   NOASA
     BATCH
     CODEPAGE(047C)
   NOCOMPAT
   NODBCS
   NODECK
     DXREF
     ESD
   NOEXIT
     FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOPAGE0,PUSH,RECORD,NOSUBSTR,USING0)
   NOFOLD
   NOGOFF
   NOINFO
     LANGUAGE(EN)
   NOLIBMAC
     LINECOUNT(60)
     LIST(121)
     MACHINE(,NOLIST)
     MXREF(SOURCE)
     OBJECT
     OPTABLE(UNI,NOLIST)
   NOPCONTROL
   NOPESTOP
   NOPROFILE
   NORA2
   NORENT
     RLD
     RXREF
     SECTALGN(8)
     SIZE(MAX)
   NOSUPRWARN
     SYSPARM()
   NOTERM
   NOTEST
     THREAD
   NOTRANSLATE
     TYPECHECK(MAGNITUDE,REGISTER)
     USING(NOLIMIT,MAP,WARN(15))
   NOWORKFILE
     XREF(SHORT,UNREFS)

   No Overriding DD Names
1                                              External Symbol Dictionary                                       Page    2
-Symbol   Type   Id     Address  Length   Owner Id Flags Alias-of                            HLASM R6.0  2021/11/11 19.05
0IOSAMP    SD 00000001 00000000 00000251             00
 $$PRTOUT  ER 00000002
 $$IOSECT  SD 00000003 00000258 00000D6C             01
 $$READCD  LD          0000029C           00000003
 $$PRTLIN  LD          00000268           00000003
 $$PRTOUT  LD          00000274           00000003
 $$DMPOUT  LD          00000258           00000003
 $$CNVRTO  LD          00000284           00000003
 $$CNVRTI  LD          00000290           00000003
 $$READCD  ER 00000004
 $$PRTLIN  ER 00000005
 $$CNVRTI  ER 00000006
 $$CNVRTO  ER 00000007
 $$DMPOUT  ER 00000008
1                                                                                                               Page    3
   Active Usings: None
0  Loc  Object Code    Addr1 Addr2  Stmt   Source Statement                                  HLASM R6.0  2021/11/11 19.05
0                                      1         PRINT NOGEN
 000000                00000 00251     2 IOSAMP  CSECT ,
                  R:F  00000           3         USING *,15
 000000 1B11                           4         SR    1,1
                                       5 *
 000002 90EF F00C            0000C     6         PRINTOUT
 000024 0700                         719 READ    READCARD CARDOUT,EOF
 00004A 4110 1001            00001   728         LA    1,1(0,1)
 00004E 90EF F058            00058   729         PRINTOUT 1
 00007C 0700                         740         PRINTLIN OUT,LINELEN
 00009C 0700                         748         CONVERTI 2,CARDOUT
 0000BC 0700                         756         CONVERTO 2,OUTDATA
 0000DC 0700                         764         PRINTLIN OUTDATA,L'OUTDATA
 0000FC 47F0 F026            00026   772         B     READ
 000100 0700                         773 EOF     DUMPOUT IOSAMP,LAST
 000128 B982 0033                    782         XGR   3,3
 00012C B946 0030                    783         BCTGR 3,0
 000130 0700                         784         PRINTOUT 1,19,32,*
 000176 D6C9D5D7E4E340D9             799 OUT  DC   C'OINPUT RECORD = "'
 000187 4040404040404040             800 CARDOUT DC CL80' ',C'"'
                       00062         801 LINELEN EQU *-OUT
 0001D8                              802 OUTDATA DS CL121
                       00251         803 LAST    EQU *
                                     804         END
1                                                 Relocation Dictionary                     
1                                          Macro and Copy Code Source Summary                                   Page    8
- Con Source                                        Volume    Members                        HLASM R6.0  2021/11/11 19.05
0  L1 SYS1.MACLIB                                   ZARES1    CLOSE    DCB      GET      IHBINNRA IHB01    OPEN     PUT
   L3 HATAM.MACLIB.SRC                              ZARES1    $$GENIO  CONVERTI CONVERTO DUMPOUT  PRINTLIN PRINTOUT
                                                              READCARD                           
1                                  Diagnostic Cross Reference and Assembler Summary                             Page   11
-                                                                                            HLASM R6.0  2021/11/11 19.05
0     No Statements Flagged in this Assembly
 HIGH LEVEL ASSEMBLER, 5696-234, RELEASE 6.0, PTF UK37157
0SYSTEM: z/OS 01.10.00              JOBNAME: XXXXXX      STEPNAME: C          PROCSTEP: (NOPROC)
0Data Sets Allocated for this Assembly
  Con DDname   Data Set Name                                Volume  Member
   P1 SYSIN    HATAM.ASM.SRC                                ZARES1  MACSAMP
   L1 SYSLIB   SYS1.MACLIB                                  ZARES1
   L2          SYS1.MODGEN                                  ZARES1
   L3          HATAM.MACLIB.SRC                             ZARES1
      SYSLIN   SYS21315.T190518.RA000.XXXXXX.OBJ.H01        ZASYS1
      SYSPRINT IBMUSER.XXXXXX.JOB00756.D0000102.?

   31992K allocated to Buffer Pool       Storage required     512K
      24 Primary Input Records Read         3805 Library Records Read                  0 Work File Reads
       0 ASMAOPT Records Read                383 Primary Print Records Written         0 Work File Writes
      80 Object Records Written                0 ADATA Records Written
0Assembly Start Time: 19.05.18 Stop Time: 19.05.18 Processor Time: 00.00.00.1433
 Return Code 000

1z/OS V1 R10 BINDER     19:05:17 THURSDAY NOVEMBER 11, 2021
 BATCH EMULATOR  JOB(XXXXXX  ) STEP(L       ) PGM= HEWL
 IEW2278I B352 INVOCATION PARAMETERS - MAP,LET,LIST

 IEW2650I 5102 MODULE ENTRY NOT PROVIDED.  ENTRY DEFAULTS TO SECTION IOSAMP.

1                         *** M O D U L E  M A P ***

 ---------------
 CLASS  B_TEXT            LENGTH =      FC4  ATTRIBUTES = CAT,   LOAD, RMODE= 24
                          OFFSET =        0 IN SEGMENT 001       ALIGN = DBLWORD
 ---------------

  SECTION    CLASS                                      ------- SOURCE --------
   OFFSET   OFFSET  NAME                TYPE    LENGTH  DDNAME   SEQ  MEMBER

                 0  IOSAMP             CSECT       251  SYSLIN    01  **NULL**

               258  $$IOSECT           CSECT       D6C  SYSLIN    01  **NULL**
        0      258     $$DMPOUT           LABEL
       10      268     $$PRTLIN           LABEL
       1C      274     $$PRTOUT           LABEL
       2C      284     $$CNVRTO           LABEL
       38      290     $$CNVRTI           LABEL
       44      29C     $$READCD           LABEL
1          ***  DATA SET SUMMARY  ***

 DDNAME    CONCAT   FILE IDENTIFICATION

 SYSLIN      01     SYS21315.T190518.RA000.XXXXXX.OBJ.H01

           *** E N D  O F  M O D U L E  M A P ***



1PROCESSING OPTIONS:

    ALIASES             NO
    ALIGN2              NO
    AMODE               UNSPECIFIED
    CALL                YES
    CASE                UPPER
    COMPAT              UNSPECIFIED
    COMPRESS            AUTO
    DCBS                NO
    DYNAM               NO
    EXTATTR             UNSPECIFIED
    EXITS:              NONE
    FILL                NONE
    GID                 UNSPECIFIED
    HOBSET              NO
    INFO                NO
    LET                 08
    LINECT              060
    LIST                SUMMARY
    LISTPRIV            NO
    MAP                 YES
    MAXBLK              032760
    MODMAP              NO
    MSGLEVEL            00
    OVLY                NO
    PRINT               YES
    RES                 NO
    REUSABILITY         UNSPECIFIED
    RMODE               UNSPECIFIED
    STORENX             NOREPLACE
    STRIPCL             NO
    STRIPSEC            NO
    TERM                NO
    TRAP                ON
    UID                 UNSPECIFIED
    UPCASE              NO
    WKSPACE             000000K,000000K
    XCAL                NO
    XREF                NO
    ***END OF OPTIONS***



1SAVE OPERATION SUMMARY:

    MEMBER NAME         GO
    LOAD LIBRARY        SYS21315.T190518.RA000.XXXXXX.GOSET.H01
    PROGRAM TYPE        LOAD MODULE
    VOLUME SERIAL       ZASYS1
    MAX BLOCK           32760
    DISPOSITION         ADDED NEW
    TIME OF SAVE        19.05.18  NOV 11, 2021


1SAVE MODULE ATTRIBUTES:

    AC                  000
    AMODE                24
    COMPRESSION         NONE
    DC                  NO
    EDITABLE            YES
    EXCEEDS 16MB        NO
    EXECUTABLE          YES
    MIGRATABLE          YES
    OL                  NO
    OVLY                NO
    PACK,PRIME          NO,NO
    PAGE ALIGN          NO
    REFR                NO
    RENT                NO
    REUS                NO
    RMODE                24
    SCTR                NO
    SSI
    SYM GENERATED       NO
    TEST                NO
    XPLINK              NO
    MODULE SIZE (HEX)   00000FC8






1 ENTRY POINT AND ALIAS SUMMARY:

  NAME:            ENTRY TYPE AMODE C_OFFSET CLASS NAME        STATUS

  IOSAMP            MAIN_EP      24 00000000 B_TEXT

                          ***** E N D  O F  R E P O R T *****




1z/OS V1 R10 BINDER     19:05:17 THURSDAY NOVEMBER 11, 2021
 BATCH EMULATOR  JOB(XXXXXX  ) STEP(L       ) PGM= HEWL
 IEW2008I 0F03 PROCESSING COMPLETED.  RETURN CODE =  0.



1----------------------
 MESSAGE SUMMARY REPORT
 ----------------------
  TERMINAL MESSAGES      (SEVERITY = 16)
  NONE

  SEVERE MESSAGES        (SEVERITY = 12)
  NONE

  ERROR MESSAGES         (SEVERITY = 08)
  NONE

  WARNING MESSAGES       (SEVERITY = 04)
  NONE

  INFORMATIONAL MESSAGES (SEVERITY = 00)
  2008  2278  2650


  **** END OF MESSAGE SUMMARY REPORT ****

JCL 是錯誤的還是我應該在其他地方尋找問題?

uj5u.com熱心網友回復:

您的私有宏 PRINTOUT 有問題,或者在呼叫匯編源代碼第 6 行中的宏之前完成的設定有問題。我不知道它是什么,因為您沒有提供有關該宏的詳細資訊(其他人建議使用 PRINT GEN 重新運行該作業)。

缺乏更多資訊,這是我對發生的事情的分析:

這是joblog中列印的ABEND資訊

 PSW AT TIME OF ERROR  078D1000   00007010  ILC 4  INTC 02
    ACTIVE LOAD MODULE           ADDRESS=00007000  OFFSET=00000010
    NAME=GO
    DATA AT PSW  0000700A - 1EEF80FD  DE080000  70000000
    GR 0: FD000008   1: 00000000
       2: 00000040   3: 008D79D4
       4: 008D79B0   5: 008FF350
       6: 008C6FE0   7: FD000000
       8: 008FCC80   9: 008CFCC8
       A: 00000000   B: 008FF350
       C: 834C4BAA   D: 00006008
       E: 80FE507C   F: 00007274
  END OF SYMPTOM DUMP

INTC 02第一行告訴你該程式失敗,一個“特權操作例外”。非授權程式(例如您的程式)中的特權操作例外通常表明程式跳轉到錯誤地址,并且幸運的是,該地址沒有有效指令。(為什么幸運?因為如果該地址有效指令,除錯會更加困難。)

除了一些與存盤相關的指令例外外,PSW下一個順序指令地址(NSI) 指向失敗指令之后的下一條指令NSI 是以“PSW AT TIME OF ERROR”開頭的行中的第二個數字部分,即00007010

ILC 4第一行告訴你,失敗的指令是一個4位元組的指令。鑒于 NSI 指向下一條指令,失敗的指令在地址處00007010 - 4 = 0000070C(請注意,地址以十六進制表示法顯示,此 10 - 4 = C。)

所以程式一直在執行指令,直到它從地址中獲取下一條指令 0000700C

上面的第二行

ACTIVE LOAD MODULE           ADDRESS=00007000  OFFSET=00000010

告訴您程式已在 address 處加載00007000,并且故障發生在00000010活動加載模塊(程式)內的偏移處

匯編器清單列出了以 offset 開頭的指令0,因此我們可以取上面4的偏移量,并從中減去 ILC ,以了解失敗指令的偏移量是00000C

   Loc  Object Code    Addr1 Addr2  Stmt   Source Statement         
                                       1         PRINT NOGEN
 000000                00000 00251     2 IOSAMP  CSECT ,
                  R:F  00000           3         USING *,15
 000000 1B11                           4         SR    1,1
                                       5 *
 000002 90EF F00C            0000C     6         PRINTOUT
 000024 0700                         719 READ    READCARD CARDOUT,EOF

Offset 00000C is between 000002 and 000024 in the listing, so it is within the code generated by the PRINTOUT macros at line 6 of the assembler source.

Due to the PRINT NOGEN, we can only see the first instruction generated, of which the code is 90EF F00C, which is STM 14,15,12(15). This stores the content of registers 14, and 15 at consecutive bytes starting at offset 12 from the address in register 15.

What is the address in register 15 at that time? Given the assembler instructions shown, we can say it is the value that register 15 had at entry to the program. In z/OS, this is the address of the entry point into program (except from special cases not discussed here). So register 15 is 00007000 at entry and will stay so until modified. It is not modified up to the STM instruction. So, registers 14, and 15 are stored starting at address 0000700C.

Does this address 0000700C, where registers are stored look familiar? Yes, it does. It is the address of the failing instruction (see above).

So the program interprets the bytes starting at address 0000700C as an instruction, where it actually is the content of registers 14, and 15. In z/OS, at entry to a program, register 14 contains the return address (again except from special cases).

The first few bytes of the program storage look like this:

00-01 = 1B11           = SR 1,1
02-05 = 90EF F00C      = STM 14,15,12(15)
06    = ??
07    = ??
08    = ??
09    = ??
0A    = ??
0B    = ??
0C-0F = ???? ????      = content of register 14 at entry (= return address)
10-13 = 0000 7000      = content of register 15 at entry (= program entry point)

We do not know the content of bytes 06-0B, but should expect them to be instrucitons, and possibly data generated by the PRINTOUT macro.

An interesting detail is the content of register 15 (15 is x'0F') at the time of the failure. This is shown in the line just before the line END OF SYMPTOM DUMP

E: 80FE507C   F: 00007274

Register 15 contains 00007274, so it was modified by the instrucitons in the bytes 06-0B. Where does it point to? It points to address 00007274, or 00007274 - 00007000 (the program's address) = offset 274. The assembler listing shows that the program ends at offset 00251, so offset 274is beyond this code.

000187 4040404040404040             800 CARDOUT DC CL80' ',C'"'
                      00062         801 LINELEN EQU *-OUT
0001D8                              802 OUTDATA DS CL121
                      00251         803 LAST    EQU *
                                    804         END   
   

So register 15 points beyond the code generated by the assembler statements show. Lookging at the binder listing, we can find out if offset 274 is still within the storage of the load module, and if so in what part.

  SECTION    CLASS                                      ------- SOURCE --------
   OFFSET   OFFSET  NAME                TYPE    LENGTH  DDNAME   SEQ  MEMBER

                 0  IOSAMP             CSECT       251  SYSLIN    01  **NULL**

               258  $$IOSECT           CSECT       D6C  SYSLIN    01  **NULL**
        0      258     $$DMPOUT           LABEL
       10      268     $$PRTLIN           LABEL
       1C      274     $$PRTOUT           LABEL
   

Offset 274 in the load module is the start of a routine called $$PRTOUT, which somehow seems to relate to the PRINTOUT macro seen in the assembler source. So, register 15 is pointing at the entry point of routine $$PRTOUT. This indicates that register 15 has been loaded with the entry point address of routine $$PRTOUT. This is most likely done by instructions in the area 06-0B in the program.

All seems to fit nicely. The program seems to be prepared to call routine $$PRTOUT, but somehow lacks a 'jump' instruction, such as BALR 14,15, which is most often used to jump to a subroutine.

The exact problem, however, can only be found when the instructions in the area 06-0B are known.

And to answer one of your questions: No there is nothing wrong with the JCL.

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/357364.html

標籤:集会 佐斯 JCL

上一篇:可以在同一個時鐘周期內解碼兩個可熔斷對嗎?

下一篇:我可以做些什么來進一步優化我的MIPS代碼?

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more