2014-02-05 3 views
0

, 나는 다음과 같은 상황PARM 값은 해석되지 z/OS의 메인 프레임에서 작업

1) 그건 내가 submited 한 내 JCL,이다 있습니다

//PAYMENT JOB MSGCLASS=H             
//******************************************************************  
//*                  
//* This job can be used to run an MQ application that     
//* communicates with a transaction running in a CICS region.   
//* The CICS transaction records a credit card payment in DB2.                    
//* The payment description has a maximum length of 35 characters.  
//* It is enclosed within quotes below so that you may include   
//* spaces to separate words.                            
//* The monetary values allowed by this tool must be within the   
//* range 0.01 - 9999.99.               
//*                  
//******************************************************************  
//PAYMENT EXEC PGM=PAYMENT,REGION=1024K,        
//    PARM='CSQ1,CARD.PAYMENTS,CCD3050.REPLY,CCD3050,   
//    400.05,"MY PAYMENT"'            
//STEPLIB DD DSN=CCD3050.PART2.LOAD,DISP=SHR  
//   DD DSN=WMQ.V6R0.SCSQLOAD,DISP=SHR        
//   DD DSN=WMQ.V6R0.SCSQANLE,DISP=SHR        
//   DD DSN=WMQ.V6R0.SCSQAUTH,DISP=SHR        
//STDOUT DD SYSOUT=*             
//STDERR DD SYSOUT=*             
//SYSPRINT DD SYSOUT=* 

2) 작업에서 찾고

IRR010I USERID CCD3050 IS ASSIGNED TO THIS JOB.   
$HASP373 PAYMENT STARTED - INIT 1 - CLASS A - SYS MVST 
IEF403I PAYMENT - STARTED - TIME=12.06.31     
-           --TIMINGS (MINS.)- 
-JOBNAME STEPNAME PROCSTEP RC EXCP CPU SRB CLOCK SERV PG PAGE SWAP VIO SWAPS STEPNO 
-PAYMENT   PAYMENT  01  39 .00 .00 .00 122 0  0  0  0  0  1 
IEF404I PAYMENT - ENDED - TIME=12.06.31      
-PAYMENT ENDED. NAME-      TOTAL CPU TIME= .00 TOTAL ELAPSED TIME= .00 
$HASP395 PAYMENT ENDED 
0------ JES2 JOB STATISTICS ------ 
- 01 FEB 2014 JOB EXECUTION DATE 
-   55 CARDS READ  
-   111 SYSOUT PRINT RECORDS            
-   0 SYSOUT PUNCH RECORDS            
-   6 SYSOUT SPOOL KBYTES            
-   0.00 MINUTES EXECUTION TIME           
     1 //PAYMENT JOB MSGCLASS=H            
      //****************************************************************** 
      //*                  
      //* This job can be used to run an MQ application that     
      //* communicates with a transaction running in a CICS region.   
      //* The CICS transaction records a credit card payment in DB2.                    
      //* The payment description has a maximum length of 35 characters.  
      //* It is enclosed within quotes below so that you may include   
      //* spaces to separate words.                            
      //* The monetary values allowed by this tool must be within the   
      //* range 0.01 - 9999.99.               
      //*                  
      //******************************************************************  
     2 //PAYMENT EXEC PGM=PAYMENT,REGION=1024K,        
      //    PARM='CSQ1,CARD.PAYMENTS,CCD3050.REPLY,CCD3050,   
      //    400.05,"MY PAYMENT"'            
     3 //STEPLIB DD DSN=CCD3050.PART2.LOAD,DISP=SHR  
     4 //   DD DSN=WMQ.V6R0.SCSQLOAD,DISP=SHR        
     5 //   DD DSN=WMQ.V6R0.SCSQANLE,DISP=SHR        
     6 //   DD DSN=WMQ.V6R0.SCSQAUTH,DISP=SHR        
     7 //STDOUT DD SYSOUT=*             
     8 //STDERR DD SYSOUT=*             
     9 //SYSPRINT DD SYSOUT=*  
ICH70001I CCD3050 LAST ACCESS AT 15:55:39 ON WEDNESDAY, JANUARY 29, 2014 
IEF236I ALLOC. FOR PAYMENT PAYMENT           
IGD103I SMS ALLOCATED TO DDNAME STEPLIB         
IGD103I SMS ALLOCATED TO DDNAME           
IGD103I SMS ALLOCATED TO DDNAME           
IGD103I SMS ALLOCATED TO DDNAME           
IEF237I JES2 ALLOCATED TO STDOUT           
IEF237I JES2 ALLOCATED TO STDERR           
IEF237I JES2 ALLOCATED TO SYSPRINT           
IEF142I PAYMENT PAYMENT - STEP WAS EXECUTED - COND CODE 0001     
IGD104I CCD3050.PART2.LOAD       RETAINED, DDNAME=STEPLIB 
IGD104I WMQ.V6R0.SCSQLOAD       RETAINED, DDNAME=   
IGD104I WMQ.V6R0.SCSQANLE       RETAINED, DDNAME=   
IGD104I WMQ.V6R0.SCSQAUTH       RETAINED, DDNAME=   
IEF285I CCD3050.PAYMENT.JOB03520.D0000101.?   SYSOUT     
IEF285I CCD3050.PAYMENT.JOB03520.D0000102.?   SYSOUT     
IEF285I CCD3050.PAYMENT.JOB03520.D0000103.?   SYSOUT     
IEF373I STEP/PAYMENT /START 2014036.1206 
IEF374I STEP/PAYMENT /STOP 2014036.1206 CPU 0MIN 00.00SEC SRB 0MIN 00.00SEC VIRT 16K SYS 320K EXT  280K SYS 11012K 
IEF375I JOB/PAYMENT /START 2014036.1206          
IEF376I JOB/PAYMENT /STOP 2014036.1206 CPU 0MIN 00.00SEC SRB 0MIN 00.00SEC 

3) 그리고 나는이 메시지를 참조하십시오 : SDSF 출력 내가 볼

********************************************************       
Credit card payment unit test tool       
********************************************************       

Incorrect usage!                 

Program Usage                 
-------------                 

PAYMENT <queue manager> <cics request queue> <reply queue> <userid> <payment value> <payment description> 

The payment description has a maximum length of 35 characters.     

The monetary value must be within the range 0.01 - 9999.99. 

내가 뭘 잘못하고 있니?

+1

문제는 실제로 사이트에서 특정 사용자 작성 프로그램을 사용할 수 없다는 것입니다. 일반적으로 그것은 우리가 단서를 가질 수없는 것입니다. 그러나, 문제는 PARM 성명서를 계속 작성하는 것과 관련이 있습니다. 이는 귀하를 위해 행운입니다. 프로그램을 변경하여 사용중인 PARM의 값을 표시하고 많은 시간을 절약하며 레코드를 남겨두면 종종 유용하고 결코 상처를 입지 않습니다. –

+0

고맙습니다. 소스 코드에는 다음과 같은 것이 있습니다 : qmgrName = argv [1]; requestQueueName = argv [2]; replyQueueName = argv [3]; userID = argv [4]; – user3275068

+0

어쩌면 필자는 PARM에 userID = CCD3050과 같은 글자를 써야합니까? – user3275068

답변

2

사용중인 프로그램에서 아무런 도움이되지 않습니다. PARM을받은 모든 프로그램이 전달 된 값을 표시하는 것이 좋습니다. 당신이 그것을 지정한로

컴파일하고 정확하게 PARM으로,이 프로그램을 실행합니다

이 당신의 출력으로 볼 수
ID DIVISION. 
    PROGRAM-ID. PROGNAME. 
    ENVIRONMENT DIVISION. 
    DATA DIVISION. 
    WORKING-STORAGE SECTION. 
    01 W-WHEN-COMPILED    PIC X(8)BX(8). 
    LINKAGE SECTION. 
    01 THE-PARM-FROM-THE-JCL. 
     05 TPFTJ-LENGTH    BINARY PIC 9(4). 
     05 TPFTJ-VALUE. 
      10 FILLER OCCURS 0 TO 100 TIMES 
       DEPENDING ON TPFTJ-LENGTH. 
       15 FILLER   PIC X. 
    PROCEDURE DIVISION USING 
            THE-PARM-FROM-THE-JCL 
            . 
     MOVE WHEN-COMPILED   TO W-WHEN-COMPILED 
     DISPLAY "PROGNAME " W-WHEN-COMPILED 
     DISPLAY 
       ">" 
       TPFTJ-VALUE 
       "<" 
     GOBACK 
     . 

:

PROGNAME followed by date-and-time-of-compile            
>CSQ1,CARD.PAYMENTS,CCD3050.REPLY,CCD3050,   400.05,"MY PAYMENT"< 

당신은에 공백의 덩어리를 볼 수 있습니다 중간. 그것이 당신의 문제입니다.

실제로 MY PAYMENT 주위에 큰 따옴표를 넣으 려는지 알 수 없습니다.

>CSQ1,CARD.PAYMENTS,CCD3050.REPLY,CCD3050,400.05,MY PAYMENT< 

이 보면, '

//    PARM=('CSQ1,CARD.PAYMENTS,CCD3050.REPLY,CCD3050', 
//    '400.05,MY PAYMENT') 

은 위의 프로그램은이 값을 표시합니다 :

이 당신의 PARM을 코딩하는 하나 방법이 될 것입니다하지 가정 문제와 설명 된 해결책을 보게됩니다 : http://publib.boulder.ibm.com/infocenter/zvm/v5r4/index.jsp?topic=/com.ibm.zos.r9.ieab100/jclexs.htm. 이 예는 바인더 (IEWL) 용입니다. z/OS의 특정 릴리스에 대한 JCL 참조 서를 참조해야합니다. (필자는 PARM 처리가 z/OS에서 변경된 것으로 생각하지 않습니다.)

JCL에 의미가있는 특정 문자가 있기 때문에 PARM을 계속 사용하는 것은 까다 롭습니다. 계속하는 한 가지 방법은 열 71까지 사용하고 열 16에서 계속하는 것입니다. 이것은 매우 유연하지 않습니다. PARM 값을 괄호로 묶는 것이 더 유연합니다. 또한 몇 개의 정 보/마침표가 있으며이 값은 작은 따옴표 쌍으로 보호해야합니다. JCL 참조서는 모두를 자세히 설명한 다음 위의 프로그램을 시험하여 완전한 명확성을 얻습니다.

+0

감사합니다. Bill! 그랬지만 결과는 동일합니다 ... 하지만 이전 출력과 같은 출력이 있습니다 (한 줄에 모든 PARM 매개 변수를 쓰려고했지만 결과는 같습니다 .. – user3275068

+0

아마도 프로그램은 큰 따옴표를 고집합니까? 단서가 없습니다. 프로그램이나 소스 코드에 대한 추가 문서를 살펴 봐야합니다. PARM이 사용하고있는 프로그램처럼 보이게 할 수 있도록 도와 줄 수 있습니다. 하지만 그 프로그램이 어떻게 보이길 원하는지 말할 수는 없습니다. –

+0

고마워요, 제 일자리를 위해 C 애플리케이션을 보라고해도 될까요? 제가 여기에 붙여 넣으면 – user3275068