Rational Developer for System z

오류 피드백용 어셈블러 프로그램

다음 샘플 어셈블러 프로그램은 전달된 DDName의 DSName을 동적으로 조회합니다. 관련 참조에 있는 COBOL 샘플 프로그램은 오류 피드백을 위해 SYSXMLSD DDName의 DSName 조회를 수행하는 어셈블러 프로그램의 호출을 설명합니다.
DYNQUERY  TITLE 'MVS DYNALLOC 기능 테스트'
DYNQUERY  CSECT                                                         
DYNQUERY  AMODE ANY                                                     
DYNQUERY  RMODE ANY                                                     
***************************************************************         
* This program will dynamically query the specified DDNAME    *
* that is passed to the program and return the DSNAME for     *
* the specified DDNAME, including member name if applicable.  *                 
* RC 1080 means DDNAME not found.                             *
*                                                             *                 
* Syntax from COBOL:                                          *
*   01 DDNAME PIC X(8).                                       *                 
*   01 DSNAME PIC X(54).                                      *                 
*                                                             *                 
*   CALL DYNQUERY USING DDNAME, DSNAME.                       *                 
*                                                             *                 
* Author:                                                     *
*   IBM                                                       *
***************************************************************         
*                                                                       
*        Standard Prolog
*                                                                       
START    STM   R14,R12,12(R13)     Save registers
         LR    R12,R15             Get base address
         USING DYNQUERY,R12        Establish addressability             
         ST    R13,SAVE+4          Forward link of save areas
         LA    R10,SAVE            Address of our save area
         ST    R10,8(,R13)         Backward link of save areas
         LR    R13,R10             Our save area is current one
*                                                                       
         L     R2,0(,R1)           Get addr of DDNAME parm
         L     R3,4(,R1)           Get addr of full DSNAME parm
         MVC   DDNAME,0(R2)        Copy DDNAME
         MVC DSNAMEM(DSNAMEL),BLANKS Clear to blanks
         MVC DSNAME(L'DSNAME),BLANKS Clear to blanks
         MVC MEMNAME(L'MEMNAME),BLANKS Clear to blanks
*                                                                               
         L     R1,RBPTR                                                         
         LA    R1,0(,R1)                                                        
         USING S99RB,R1                                                         
         XC    S99RB(RBLEN),S99RB                                               
         MVI   S99RBLN,RBLEN                                                    
         MVI   S99VERB,S99VRBIN                                                 
         OI    S99FLG11,S99NOCNV   
         LA    R6,TUPL                                                          
         ST    R6,S99TXTPP                                                      
*******************************                                                 
* DDNAME 매개변수 설정        *
*******************************                                                 
         LA    R5,TUDDN1                                                        
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINDDNAM)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DDNAME)                                          
         MVC   S99TUPAR(L'DDNAME),DDNAME                                        
         DROP  R5                                                               
*******************************                                                 
* DSNAME 매개변수 설정        *
*******************************                                                 
         LA    R5,TUDSN1                                                        
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRTDSN)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSNAME)                                          
         MVC   S99TUPAR(L'DSNAME),DSNAME                                        
         DROP  R5                                                               
*********************************                                               
* MEMBER 매개변수 설정          *
*********************************                                               
         LA    R5,TUMEM1                                                        
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRTMEM)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'MEMNAME)                                         
         MVC   S99TUPAR(L'MEMNAME),MEMNAME                                      
         DROP  R5                                                               
*********************************                                               
* DSORG 매개변수 설정           *
*********************************                                               
         LA    R5,TUORG1                                                        
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRTORG)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSORG)                                           
         MVC   S99TUPAR(L'DSORG),DSORG                                          
         DROP  R5                                                               
*********************************                                               
* DSTYPE 매개변수 설정          *
*********************************                                               
         LA    R5,TUTYP1                                                        
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRTTYP)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSTYP)                                           
         MVC   S99TUPAR(L'DSTYP),DSTYP                                          
         DROP  R5                                                               
*********************************                                               
* STATUS 매개변수 설정          *
*********************************                                               
         LA    R5,TUSTAT1                                                       
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRTSTA)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSSTAT)                                          
         MVC   S99TUPAR(L'DSSTAT),DSSTAT                                        
         DROP  R5                                                               
*********************************                                               
* DSTYPE 매개변수 설정          *
*********************************                                               
         LA    R5,TUDSNT1                                                       
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRDSNT)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSDSNT)                                          
         MVC   S99TUPAR(L'DSDSNT),DSDSNT                                        
         DROP  R5                                                               
*********************************                                               
* REC ORG 매개변수 설정         *
*********************************                                               
         LA    R5,TURECO1                                                       
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRRECO)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSRECO)                                          
         MVC   S99TUPAR(L'DSRECO),DSRECO                                        
         DROP  R5                                                               
*********************************                                               
* PATH 매개변수 설정            *
*********************************                                               
         LA    R5,TUPATH1                                                       
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRPATH)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSPATH)                                          
         MVC   S99TUPAR(L'DSPATH),DSPATH                                        
         DROP  R5                                                               
*********************************                                               
* PATHOPTS 매개변수 설정        *
*********************************                                               
         LA    R5,TUPOPT1                                                       
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRPOPT)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSPOPT)                                          
         MVC   S99TUPAR(L'DSPOPT),DSPOPT                                        
         DROP  R5                                                               
*********************************                                               
* PATHMODE 매개변수 설정        *
*********************************                                               
         LA    R5,TUPMODE1                                                      
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRPMDE)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSPMODE)                                         
         MVC   S99TUPAR(L'DSPMODE),DSPMODE                                      
         DROP  R5                                                               
*********************************                                               
* FILEDATA 매개변수 설정        *
*********************************                                               
         LA    R5,TUFDAT1                                                       
         USING S99TUNIT,R5                                                      
         MVC   S99TUKEY,=AL2(DINRFDAT)                                          
         MVC   S99TUNUM,=X'0001'                                                
         MVC   S99TULNG,=AL2(L'DSFDAT)                                          
         MVC   S99TUPAR(L'DSFDAT),DSFDAT                                        
         DROP  R5                                                               
*******************************                                                 
* extension 매개변수 설정     *
*******************************                                                 
         LA    R5,RBX                                                           
         ST    R5,S99S99X                                                       
         USING S99RBX,R5                                                        
         XC    S99RBX(RBXLEN),S99RBX  Clear the RB extension            02140000
         MVC   S99EID,=CL6'S99RBX'                                              
         MVI   S99EVER,S99RBXVR                                                 
*        MVI   S99EOPTS,S99EIMSG+S99EWTP                                        
         MVI   S99EMGSV,S99XINFO                                                
         DROP  R5                                                               
*                                                                               
         DROP  R1                                                               
         LA    R1,RBPTR                                                         
         DYNALLOC                                                               
         LTR   R15,R15                                                          
         BZ    OK                                                               
*                                                                               
*         DYNQUERY 실패
*                                                                               
         LA    R1,RB                                                            
         USING S99RB,R1                                                         
         SR    R15,R15           Clear R15
         ICM   R15,3,S99ERROR    Get the error from DYNALLOC
         DROP  R1                                                               
         B     EXIT                                                             
*                                                                               
OK       DS    0H                DYNQUERY successful
*******************************                                                 
* DSNAME 값 가져오기          *
*******************************                                                 
         LA    R5,TUDSN1                                                        
         USING S99TUNIT,R5                                                      
         MVC   DSNAME,S99TUPAR                                                  
         DROP  R5                                                               
*******************************                                                 
* MEMBER 값 가져오기          *
*******************************                                                 
         LA    R5,TUMEM1                                                        
         USING S99TUNIT,R5                                                      
         MVC   MEMNAME,S99TUPAR                                                 
         DROP  R5                                                               
*******************************                                                 
* DSORG 값 가져오기           *
*******************************                                                 
         LA    R5,TUORG1                                                        
         USING S99TUNIT,R5                                                      
         MVC   DSORG,S99TUPAR                                                   
         DROP  R5                                                               
*******************************                                                 
* DSTYP 값 가져오기           *
*******************************                                                 
         LA    R5,TUTYP1                                                        
         USING S99TUNIT,R5                                                      
         MVC   DSTYP,S99TUPAR                                                   
         DROP  R5                                                               
*******************************                                                 
* STATUS 값 가져오기          *
*******************************                                                 
         LA    R5,TUSTAT1                                                       
         USING S99TUNIT,R5                                                      
         MVC   DSSTAT,S99TUPAR                                                  
         DROP  R5                                                               
*******************************                                                 
* DSNTYPE 값 가져오기         *
*******************************                                                 
         LA    R5,TUDSNT1                                                       
         USING S99TUNIT,R5                                                      
         MVC   DSDSNT,S99TUPAR                                                  
         DROP  R5                                                               
*******************************                                                 
* REC ORG 값 가져오기         *
*******************************                                                 
         LA    R5,TURECO1                                                       
         USING S99TUNIT,R5                                                      
         MVC   DSRECO,S99TUPAR                                                  
         DROP  R5                                                               
*******************************                                                 
* PATH 값 가져오기            *
*******************************                                                 
         LA    R5,TUPATH1                                                       
         USING S99TUNIT,R5                                                      
         MVC   DSPATH,S99TUPAR                                                  
         DROP  R5                                                               
*******************************                                                 
* PATHOPTS 값 가져오기        *
*******************************                                                 
         LA    R5,TUPOPT1                                                       
         USING S99TUNIT,R5                                                      
         MVC   DSPOPT,S99TUPAR                                                  
         DROP  R5                                                               
*******************************                                                 
* PATHMODE 값 가져오기        *
*******************************                                                 
         LA    R5,TUPMODE1                                                      
         USING S99TUNIT,R5                                                      
         MVC   DSPMODE,S99TUPAR                                                 
         DROP  R5                                                               
*******************************                                                 
* FILEDATA 값 가져오기        *
*******************************                                                 
         LA    R5,TUFDAT1                                                       
         USING S99TUNIT,R5                                                      
         MVC   DSFDAT,S99TUPAR                                                  
         DROP  R5                                                               
*******************************                                                 
* 해당 값 검사                *
*******************************                                                 
         SR    R15,R15                                                          
         CLI   DSNAME,C' '                                                      
         BE    CHKMEM                                                           
*                                                                               
*        DSNAME is found
*                                                                               
         MVC   DSNAMEM,DSNAME                                                   
CHKMEM   CLI   MEMNAME,C' '                                                     
         BE    DONE                                                             
*                                                                               
*        MEMBER is found
*                                                                               
         MVI   PARENO,C'('                                                      
         MVC   MBRNAME,MEMNAME                                                  
         MVI   PARENC,C')'                                                      
*                                                                               
DONE     DS    0H                                                               
         MVC   0(DSNAMEL,R3),DSNAMEM                                            
*                                                                       
*        Standard Epilog
*                                                                       
EXIT     L     R13,4(,R13)         Restore previous save area
         L     R14,12(,R13)        Restore reg 14
         LM    R0,R12,20(R13)      Restore remaining regs
         BR    R14                 Return to invoker
*                                                                       
SAVE     DS    18F                 Save area
*                                                                               
RBPTR    DC    A(X'80000000'+RB)                                                
         DS    0F                                                               
RB       DC    XL(RBLEN)'00'                                                    
RBLEN    EQU   S99RBEND-S99RB                                                   
         DS    0F                                                               
RBX      DC    XL(RBXLEN)'00'                                                   
RBXLEN   EQU   S99ERSN-S99RBX+L'S99ERSN                                         
TUPL     DC    A(TUDDN1)                                                        
         DC    A(TUDSN1)                                                        
         DC    A(TUMEM1)                                                        
         DC    A(TUORG1)                                                        
         DC    A(TUTYP1)                                                        
         DC    A(TUSTAT1)                                                       
         DC    A(TUDSNT1)                                                       
         DC    A(TURECO1)                                                       
         DC    A(TUPATH1)                                                       
         DC    A(TUPOPT1)                                                       
         DC    A(TUPMODE1)                                                      
         DC    A(X'80000000'+TUFDAT1)                                           
*                                                                               
TUDDN1   DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+8)'00'                       
TUDSN1   DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+44)'00'                      
TUMEM1   DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+8)'00'                       
TUORG1   DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+2)'00'                       
TUTYP1   DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+1)'00'                       
TUSTAT1  DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+2)'00'                       
TUDSNT1  DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+2)'00'                       
TURECO1  DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+2)'00'                       
TUPATH1  DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+128)'00'                     
TUPOPT1  DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+4)'00'                       
TUPMODE1 DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+4)'00'                       
TUFDAT1  DC    XL(L'S99TUKEY+L'S99TUNUM+L'S99TULNG+1)'00'                       
*                                                                               
         DS    0F                                                               
         DC    CL4'DDN'                                                         
DDNAME   DC    CL8' '                                                           
         DS    0F                                                               
         DC    CL4'DSN'                                                         
DSNAME   DC    CL44' '                                                          
         DS    0F                                                               
         DC    CL4'MEM'                                                         
MEMNAME  DC    CL8' '                                                           
         DS    0F                                                               
         DC    CL4'ORG'                                                         
DSORG    DC    XL2'0000'                                                        
         DS    0F                                                               
         DC    CL4'TYP'                                                         
DSTYP    DC    X'00'                                                            
         DS    0F                                                               
         DC    CL4'STA'                                                         
DSSTAT   DC    X'00'                                                            
         DS    0F                                                               
         DC    CL4'DTY'                                                         
DSDSNT   DC    X'00'                                                            
         DS    0F                                                               
         DC    CL4'ROR'                                                         
DSRECO   DC    X'00'                                                            
         DS    0F                                                               
         DC    CL4'PTH'                                                         
DSPATH   DC    CL128' '                                                         
         DS    0F                                                               
         DC    CL4'POP'                                                         
DSPOPT   DC    XL4'00'                                                          
         DS    0F                                                               
         DC    CL4'PMD'                                                         
DSPMODE  DC    XL4'00'                                                          
         DS    0F                                                               
         DC    CL4'FDT'                                                         
DSFDAT   DC    X'00'                                                            
*                                                                               
DSNAMEM  DC    CL44' '                                                          
PARENO   DC    C' '                                                             
MBRNAME  DC    CL8' '                                                           
PARENC   DC    C' '                                                             
DSNAMEL  EQU   *-DSNAMEM                                                        
BLANKS   DC    CL(DSNAMEL)' '                                                   
*                                                                               
R0       EQU   0                                                        MIN00280
R1       EQU   1                                                        MIN00280
R2       EQU   2                                                        MIN00280
R3       EQU   3                                                        MIN00280
R4       EQU   4                                                        MIN00280
R5       EQU   5                                                        MIN00280
R6       EQU   6                                                        MIN00280
R7       EQU   7                                                        MIN00280
R8       EQU   8                                                        MIN00280
R9       EQU   9                                                        MIN00280
R10      EQU   10                                                       MIN00280
R11      EQU   11                                                       MIN00280
R12      EQU   12                                                       MIN00280
R13      EQU   13                                                       MIN00280
R14      EQU   14                                                       MIN00280
R15      EQU   15                                                       MIN00280
*                                                                               
         IEFZB4D0                                                               
         IEFZB4D2                                                               
*                                                                               
         END

이용 약관 | 피드백

이 Information Center는 Eclipse 기술로 구현됩니다. (http://www.eclipse.org 웹사이트 참조)