Rational Developer for System z

Construir un programa Assembler y depurarlo utilizando la depuración simbólica de Assembler

Puede interesarle construir un programa Assembler y depurarlo utilizando la depuración simbólica de Assembler, pasando los valores para las variables especificadas por el usuario en el procedimiento JCL.
Copie el Procedimiento Assemble ELAXFASM en otro procedimiento denominado ASMDEBUG. Edite ASMDEBUG para añadir el paso denominado XTRACT que extrae la información de depuración del archivo ADATA creado a partir del paso Assemble. En el siguiente ejemplo se ve el procedimiento ASMDEBUG:
//*************************************************************
//*                                                           *
//* ASMDEBUG -- PROCEDIMIENTO DE EJEMPLO PARA CREAR PROGRAMAS *
//*             ASSEMBLER DE ALTO NIVEL Y DAR EL PASO XTRACT  *
//*             PARA LA DEPURACIÓN SIMBÓLICA DE ASSEMBLER.       *
//*                                                           *
//* Materiales con licencia - Propiedad de IBM                *
//* 5724-B67                                                  *
//* (C) Copyright IBM Corp. 2003                              *
//*                                                           *
//* Opciones WebSphere Studio Enterprise Developer para z/OS  *
//*                                                           *
//*************************************************************
//*                                                           *
//* PERSONALICE ESTE PROCEDIMIENTO COMO REQUIERA SU SITIO     *
//*                                                           *
//* WSED UTILIZARÁ ESTE PROCEDIMIENTO PARA CREAR PROGRAMAS    *
//* ASSEMBLER DE ALTO NIVEL.                                 *
//*                                                           *
//* TAREAS DE PERSONALIZACIÓN:                                *
//*                                                           *
//*    1) MODIFIQUE EL VALOR LNGPRFX COMO REQUIERA SU         *
//*       SITIO. EL VALOR PREDETERMINADO ES 'SYS1'            *
//*                                                           *
//* COMENTARIOS ADICIONALES:                                  *
//*                                                           *
//*       EL CÓDIGO DE GENERACIÓN PROPORCIONARÁ TARJETAS DD   *
//*       SYSIN, SYSLIN Y SYSLIB.                             *
//*                                                           *
//*************************************************************
//ASMDEBUG PROC  LNGPRFX='SYS1'
//ASM EXEC PGM=ASMA90,REGION=2048K,
//             PARM=('TEST',
//             'ADATA',
//             'LIST')
//STEPLIB DD DSN=&LNGPRFX..LINKLIB,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSLIN   DD  DUMMY
//SYSUT1   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSUT2   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSUT3   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSUT4   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSUT5   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSUT6   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSUT7   DD  UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//*
//SYSTERM  DD SYSOUT=*
//SYSADATA DD DSNAME=&ADATADS(&MEM),DISP=SHR
//XTRACT  EXEC PGM=EQALANGX,REGION=32M,
//   PARM='&MEM (ASM ERROR OFT IDILANGX FAULT'
//SYSADATA DD DSNAME=&ADATADS(&MEM),DISP=SHR
//IDILANGX DD DSNAME=&LANGXDX(&MEM),DISP=SHR
//*
Compruebe que ha definido y se ha conectado a un sistema remoto, que ha creado un subproyecto MVS y que le ha asociado un grupo de propiedades.
  1. Edite el grupo de propiedades asociado.
  2. En la página Valores de Assembler, seleccione Procedimientos y pasos.
  3. Expanda ELAXFASM, seleccione el paso ASM y establezca las opciones siguientes de Assembler:
    Opción Assembler Valor
    Nombre de procedimiento ASMDEBUG
    Nombre de paso de procedimiento de Assembler ASM
    Conjunto de datos de baraja de objetos HLQ.ASMOBJS.OBJ
    Bibliotecas de macros SYS1.MACLIB CEEV2R1M0.SCEEMAC
  4. Seleccione Sustitución JCL y pulse el botón Añadir variable de usuario para establecer las siguientes variables de usuario:
    Nombre de variable Valor de variable
    LANGXDS HLQ.EQALANGX
    ADATADS HLQ.ASM.ADATA
  5. Pulse el botón Insertar variable global para añadir la variable MEM.
  6. Cierre y guarde los cambios del grupo de propiedades.
  7. Abra la ventana Propiedades del subproyecto y pulse Punto de entrada de aplicación.
  8. Seleccione el botón de selección para Assembler de alto nivel. Escriba CEESTART. Guarde los cambios de propiedad.
  9. Añada el fuente TESTDBG al subproyecto MVS. (El fuente se muestra al final de esta ventana).
  10. Construya el proyecto para que genere TESTDBG.exe en el conjunto de datos de carga especificado. (Puede ver la Ubicación predeterminada del módulo de carga abriendo la página Grupo de propiedades para las opciones de enlace y seleccionando el paso Enlazar.)
  11. Pulse TESTDBG.exe con el botón derecho del ratón y seleccione Depurar aplicación. Se inicia el depurador.
  12. Abra la consola de depuración y entre LDD TESTDBG en la línea de mandatos.
  13. Recorra paso a paso el depurador para depurar el código Assembler.

Durante el proceso de construcción, cuando se genera el JCL para realizar la construcción, se genera una sentencia SET al principio del trabajo para las variables especificadas en la página Sustitución JCL del grupo de propiedades.

Programa Assembler de ejemplo para construir y depurar

El programa Assembler deberá estar habilitado para LE. Este es el fuente del ejemplo:
TESTDBG  CEEENTRY PPA=MAINPPA,AUTO=WORKSIZE                             
         USING    WORKAREA,R13                                          
*                                                                       
         LA   R02,STRT_MSG                                              
         LA   R03,DEST                                                  
         LA   R04,FBCODE                                                
         STM  R02,R04,PLIST                                             
         LA   R01,PLIST                                                 
         L    R15,MOUT                                                  
         BALR R14,R15                                                   
*                                                                       
         PACK PCKA,ZNA                                                  
         PACK PCKB,ZNB                                                  
         PACK PCKC,ZNC                                                  
         ZAP  PCKSUM,PCKA                                               
         AP   PCKSUM,PCKB                                               
         AP   PCKSUM,PCKC                                               
         MVC  OUTSUM,SUMMSK                                             
         ED   OUTSUM,PCKSUM                                             
         MVC  SUMMSG+1(8),OUTSUM                                        
         MVC  LINE_ST,SUMMSG                                            
*                                                                       
         LA   R02,LINE_MSG                                              
         LA   R03,DEST                                                  
         LA   R04,FBCODE                                                
         STM  R02,R04,PLIST                                             
         LA   R01,PLIST                                                 
         L    R15,MOUT                                                  
         BALR R14,R15                                                   
*                                                                       
         LA   R02,DONE_MSG                                              
         LA   R03,DEST                                                  
         LA   R04,FBCODE                                                
         STM  R02,R04,PLIST                                             
         LA   R01,PLIST                                                 
         L    R15,MOUT                                                  
         BALR R14,R15                                                   
*                                                                       
         CEETERM  RC=0                                                  
* ==============================================================        
*  Constantes y variables                                              
* ==============================================================        
ZLEN     EQU 5                                                          
PLEN     EQU ZLEN/2+1                                                   
*                                                                       
SUMMSG   DC  C'(xxxxxxxx) -- La suma   '                               
SUMMSK   DC  X'4020202020202120'                                        
ZNA      DC  ZL5'100'                                                   
ZNB      DC  ZL5'150'                                                   
ZNC      DC  ZL5'50'                                                    
*                                                                       
PCKA     DS  PL(PLEN)                                                   
PCKB     DS  PL(PLEN)                                                   
PCKC     DS  PL(PLEN)                                                   
PCKSUM   DS  PL(PLEN+1)                                                 
OUTSUM   DS  CL(L'SUMMSK)                                               
*                                                                       
MOUT     DC     V(CEEMOUT)        El servicio de mensajes CEL               
*                                                                       
LINE_MSG DS     0F                                                      
         DC     AL2(LINE_END-LINE_ST)                                   
LINE_ST  DS     CL25                                                    
LINE_END EQU    *                                                       
*                                                                       
STRT_MSG DS     0F                                                      
         DC     AL2(STRT_END-STRT_ST)                                   
STRT_ST  DC     C'Iniciando el programa.'                                
STRT_END EQU    *                                                       
*                                                                       
DONE_MSG DS     0F                                                      
         DC     AL2(DONE_END-DONE_ST)                                   
DONE_ST  DC     C'Terminando el programa.'                             
DONE_END EQU    *                                                       
*                                                                       
DEST     DC     F'2'              El destino es el MSGFILE        
*                                                                       
MAINPPA  CEEPPA                                                         
* ===================================================================   
*  El área de trabajo y DSA                                                 
* ===================================================================   
WORKAREA DSECT                                                          
         ORG    *+CEEDSASZ                                              
PLIST    DS     0D                                                      
PARM1    DS     A                                                       
PARM2    DS     A                                                       
PARM3    DS     A                                                       
PARM4    DS     A                                                       
PARM5    DS     A                                                       
*                                                                       
FBCODE   DS     3F                                                      
*                                                                       
         DS     0D                                                      
WORKSIZE EQU    *-WORKAREA                                              
         CEEDSA                   Correlación del área de guardar dinámica      
         CEECAA                   Correlación del área de ancla común     
*                                                                       
R00      EQU   0                                                        
R01      EQU   1                                                        
R02      EQU   2                                                        
R03      EQU   3                                                        
R04      EQU   4                                                        
R05      EQU   5                                                        
R06      EQU   6                                                        
R07      EQU   7                                                        
R08      EQU   8                                                        
R09      EQU   9                                                        
R10      EQU   10                                                       
R11      EQU   11                                                       
R12      EQU   12                                                       
R13      EQU   13                                                       
R14      EQU   14                                                       
R15      EQU   15                                                       
         END   TESTDBG            

Términos de uso | Comentarios

Este Information Center está basado en tecnología Eclipse. (http://www.eclipse.org)