Академический Документы
Профессиональный Документы
Культура Документы
Se espera que un REXX cumpla una serie de requisitos para que se lo considere profesional o avanzado:
Estandares prediseados por la instalacin. RAS (Reliability,Availability,Serviciability) Signal ON . Diagnstico automtico. Documentacin. Pseudo cdigo (si fuera necesario).
Copyright 2005 - N. Bocalandro 2
2. 3. 4.
Codigo principal. Subrutinas (con su propio prlogo). Rutinas de recovery (con su propio prlogo).
Nombre de variables lgicos y breves. Diseo del flujo estructurado, natural y de acuerdo al usuario. Analizar SIEMPRE los cdigos de retorno de los comandos externos. Evitar a toda costa trucos que demuestran que se mucho de REXX. Cdigos de retorno lgicos y DOCUMENTADOS.
Copyright 2005 - N. Bocalandro 3
Enable traps RC=0 Idem anterior (casi igual) Interrupcin Variable no asignada Error de sintaxis trapname es el label de la rutina de recovery
El esfuerzo de testeo depende de que tan intensivo va a ser su uso y quien la va a usar (nosotros, usuarios finales, etc). Testear TODAS las lineas de cdigo. Forzar errorres ya sea en datos como dentro de la misma REXX. Usar la instruccin TRACE para el testeo.
1. 2. 3. 4. TRACE R (results) Trace N (normal ) Trace O (OFF) A, C, E, F, I, L, S, ?, !
(otras opciones)
EXECUTIL TS (antes de ejecutar la exec fuerza el TRACE desde afuera) TRACE() (Funcin muy util) Comandos inmediatos tiles para toda ocasin (PA1 mediante):
1. 2. 3. 4. HE Halt execution HI Halt execution TS Trace start TE Trace end
Copyright 2005 - N. Bocalandro 5
2.
3. 4. 5. 6. 7.
Un comando externo es denominado Host command, y puede ser de TSO de ISPF, de Netview, etc. A cada uno de esos entornos los llamaremos Host command enviroment. Por default se va a TSO, pero puedo alterar esto con la sentencia REXX address(xxxxxx) donde xxxxx es el enviroment que deseo usar. Para volver al anterior enviroment uso address(). EJ: Address(TSO) /* switch a TSO */ TIME /* ejecuto el comando TIME */ Address() /* vuelvo al entorno anterior */ Address TSO TIME /* es equivalente a lo anterior */
10
RECUERDEN SIEMPRE ANALIZAR EL CDIGO DE RETORNO DE LOS COMANDOS (viene en la variable llamada RC)
11
O bien
1. 2.
De donde se ejecutan:
1. 2. 3. 4. REXX de la DD SYSEXEC o SYSPROC CLIST de la DD SYSPROC Programas de la DD STEPLIB o ISPLLIB Programas de LPA o de LINKLIST
Copyright 2005 - N. Bocalandro 12
*/ */ */
x es tan solo de forma, no se usa su contenido. (es el RC ) Se pueden atrapar tantos comandos como se quiera, pero una buena prctica es de a uno por vez. Captura solo comandos de TSO bien escritos (no soporta macros TPUT o WTO)
Copyright 2005 - N. Bocalandro 13
El stack es un area de memoria para guardar elementos. Normalmente lo mismo que entro por el teclado. Se lo maneja con 3 sentencias:
1. 2. 3. Push Pull Queue Queued() Introduce un elmento arriba (LIFO) Saca un elemento de arriba Introduce un elemento abajo (FIFO) Devuelve la cantidad de elementos en el stack
Si se acaban los elementos del stack el PULL lee el teclado de la terminal. Si se quiere leer el teclado sin importar el stack se usa:
1. Parse external
Cuando una REXX termina el stack es leido por el TSO, por eso se DEBE usar DROPBUF para limpiar el mismo previo a terminar una REXX.
Copyright 2005 - N. Bocalandro 15
numlineas: cantidad de lineas a transferir funcin: DISKR (read) DISKW (write) DISKRU (read for update) ddname: nombre de la DD STEM : si est indica operacin con stem stemname: nombre del stem si es usado FINIS : si est hace CLOSE del archivo Si no se usa stem va contra el stack Tiene mas opciones (ver el manual)
Copyright 2005 - N. Bocalandro 16
17
Parse upper arg p1 p2p p3 . Lee los tres primeros parmetros, en maysculas y descarta el resto Parse var 18:40:35 hh : mm : ss Parsea la hora en hh mm ss Parse arg command ( parms Lee argumentos y lo que est antes del (lo pone en commands y el resto en parms respetando minsculas. Parse pull 5 var1 +2 14 var2 +3 . La var1 empieza en columna 5 y es de 2 de longitud, y var2 empieza en 14 y es 3 de longitud. Respeta minsculas y descarta resto.
Copyright 2005 - N. Bocalandro 19
3. 4. 5.
6.
7.
21
//xxxxTST JOB MSGCLASS=X,CLASS=A,NOTIFY=&SYSUID //*********************************************************** //** TSO BATCH ** //*********************************************************** //AA1 EXEC PGM=IKJEFT01,TIME=1440,DYNAMNBR=250 PARM='TEST1 ' //STEPLIB DD DISP=SHR,DSN=REXX.V1R3M0.SEAGLPA //SYSEXEC DD DSN=xxxx.EXEC,DISP=SHR //SYSTSPRT DD SYSOUT=* //SYSTSIN DD * LU &SYSUID
23
7. 8.
9.