Tutorial Quickjob

59
EL QUIKJOB ES UN LENGUAJE DE CONSTRUCCION AUTOMATICA DE PROGRAMAS . SUS CARACTERISTICAS DE DEFINICIONES PRE-ESTABLECIDAS DE LAS AREAS DE TRABAJO, FICHEROS Y DE DIRECCIONES, ASI COMO LA CODIFICACION DIRECTA DE SENTENCIAS DE EJECUCION CON REGLAS ESTRICTAS , AHORRA BASTANTE TIEMPO TANTO EN LA CODIFICACION COMO EN LA COMPROBACION Y ELIMINACION DE ERRORES. ESTE LENGUAJE ES UN INTERPRETE, ES DECIR NO SE COMPILA NI SE LINKEDITA, AUNQUE EN SU EJECUCION EXISTE UN PASO DE TRADUCCION Y ANALISIS SINTACTICO DE LAS SENTENCIAS. EL QUIKJOB SE UTILIZARA, POR TANTO, PARA TODO TRABAJO QUE SEA PUNTUAL, DESECHABLE Y NO EXCESIVAMENTE LARGO O COMPLEJO . REGLAS DE CODIFICACION INDICE DE LOS APARTADOS EL QUIKJOB, COMO CUALQUIER OTRO LENGUAJE DE PROGRAMACION, TIENE UN CONJUNTO DE REGLAS DE CODIFICACION QUE SE DESCRIBEN EN LOS APARTADOS SIGUIENTES DE ESTA SECCION. SINTAXIS DE LAS SENTENCIAS S UNA SENTENCIA QUIKJOB TIENE LA SIGUIENTE ESTRUCTURA: ------------------------------------------------------------------------------ -------- | | | SECUENCIA SENTENCIA OPERANDO-1 OPERANDO-2 OPERANDO-N | | --------- ------------ --------------- -------------- -------------- | NNNN VERBO VARIABLE-1 LITERAL-2 VARIABLE-N | | | ------------------------------------------------------------------------------ -------- SECUENCIA : ES UNA CIFRA DE 1 A 4 DIGITOS, COMENZADO EN LA POSICION 1, Y SEGUIDO DE UNO O MAS ESPACIOS. CON OPTION SEQCHK=YES, SE DEBE CODIFICAR SIEMPRE .

description

Manual bastante completo

Transcript of Tutorial Quickjob

Page 1: Tutorial Quickjob

EL QUIKJOB ES UN LENGUAJE DE CONSTRUCCION AUTOMATICA DE PROGRAMAS. SUS CARACTERISTICAS DE DEFINICIONES PRE-ESTABLECIDAS DE LAS AREAS DE TRABAJO, FICHEROS Y DE DIRECCIONES, ASI COMO LA CODIFICACION DIRECTA DE SENTENCIAS DE EJECUCION CON REGLAS ESTRICTAS, AHORRA BASTANTE TIEMPO TANTO EN LA CODIFICACION COMO EN LA COMPROBACION Y ELIMINACION DE ERRORES.

ESTE LENGUAJE ES UN INTERPRETE, ES DECIR NO SE COMPILA NI SE LINKEDITA, AUNQUE EN SU EJECUCION EXISTE UN PASO DE TRADUCCION Y ANALISIS SINTACTICO DE LAS SENTENCIAS. EL QUIKJOB SE UTILIZARA, POR TANTO, PARA TODO TRABAJO QUE SEA PUNTUAL, DESECHABLE Y NO EXCESIVAMENTE LARGO O COMPLEJO.

REGLAS DE CODIFICACION INDICE DE LOS APARTADOS

EL QUIKJOB, COMO CUALQUIER OTRO LENGUAJE DE PROGRAMACION, TIENE UN CONJUNTO DE REGLAS DE CODIFICACION QUE SE DESCRIBEN EN LOS APARTADOS SIGUIENTES DE ESTA SECCION.

SINTAXIS DE LAS SENTENCIAS S

UNA SENTENCIA QUIKJOB TIENE LA SIGUIENTE ESTRUCTURA: -------------------------------------------------------------------------------------- | | | SECUENCIA SENTENCIA OPERANDO-1 OPERANDO-2 OPERANDO-N | | --------- ------------ --------------- -------------- -------------- | NNNN VERBO VARIABLE-1 LITERAL-2 VARIABLE-N | | | --------------------------------------------------------------------------------------

SECUENCIA : ES UNA CIFRA DE 1 A 4 DIGITOS, COMENZADO EN LA POSICION 1, Y SEGUIDO DE UNO O MAS ESPACIOS. CON OPTION SEQCHK=YES, SE DEBE CODIFICAR SIEMPRE. CON OPTION SEQCHK=NO, SOLO ES OBLIGATORIA PARA LAS INSTRUCCIONES DE INVOCACION Y BIFURCACION, YA QUE SE UTILIZA COMO ETIQUETA. SENTENCIA : ES EL VERBO O INSTRUCCION DE QUIKJOB A UTILIZAR. SOLO SE PUEDE CODIFICAR UNO POR LINEA. CON OPTION SEQCHK=YES, DEBE COMENZAR EN LA COLUMNA 5 EN CASO CONTRARIO PUEDE COMENZAR DESPUES .

OPERANDOS : SON LOS OPERANDOS A APLICAR PARA CADA VERBO EN QUIKJOB. ALGUNOS PODRAN SER OPCIONALES EN FUNCION DEL VERBO O INSTRUCCION UTILIZADA. SI ES UN LITERAL DEBE ESCRIBIRSE ENTRE COMILLAS, ANTECEDIDO POR UNA C, P O X. EJEMPLO. MOVE C'TOTAL REG' TO PRT1.

Page 2: Tutorial Quickjob

SI EL LITERAL LLEVA COMILLAS, SE ESCRIBIRA CON DOBLES COMILLAS. EJEMPLO. MOVE C"O'DONNELL" TO OFA1. COMENTARIOS: SE PUEDEN ESCRIBIR LINEAS DE COMENTARIOS COMO SIGUE: CON OPTION SEQCHK=YES, UN * EN COLUMNA 5 Y EL TEXTO DEL COMENTARIO EN LAS POSICIONES 7 A 80. CON OPTION SEQCHK=NO, SE PERMITE UN * EN LA COLUMNA 1 Y EL TEXTO EN LAS POSICIONES 2 A 80. TAMBIEN SE PERMITE /* COMENTARIO.

_________ | EJEMPLO | |_________| 005 MOVE ZEROS TO WST1-3 010 GET INF ATEND 900 PRINTHEX INF1-90 ADD C'1' TO WST1-3 /* SUMO 1 POR CADA REGISTRO LISTADO. GOTO 010 * IMPRESION DE TOTALES AL TERMINAR EL FICHERO 900 MOVE 'TOTAL REGISTROS LISTADOS' TO PRT1 MOVE WST1-3 TO PRT30 0E PRINT GOTO EOJ END.

FICHEROS DE ENTRADA

EN QUIKJOB SE PUEDEN UTILIZAR UN MAXIMO DE 4 FICHEROS DE ENTRADA, QUE SE REFERENCIAN CON LOS SIGUIENTES NOMBRES: REFERENCIA DD EN QUIKJOB EN EL JCL ---------- --------- INF SYSUT1 - PARA EL PRIMER FICHERO DE ENTRADA. DET SYSDET - PARA EL SEGUNDO FICHERO DE ENTRADA. INC SYSINC - PARA EL TERCER FICHERO DE ENTRADA. IND SYSIND - PARA EL CUARTO FICHERO DE ENTRADA.

LA SENTENCIA GET ABRE EL FICHERO INDICADO Y RECUPERA EL PRIMER REGISTRO. LA SIGUIENTE GET SOBRE EL MISMO FICHERO RECUPERA EL REGISTRO SIGUIENTE. CUANDO DETECTA QUE NO HAY MAS REGISTROS EN EL FICHERO, CON EL OPERANDO ATEND SE PUEDE PARAR EL PROCESO O BIFURCAR A OTRO PUNTO DEL PROGRAMA.

FICHEROS DE SALIDA.

EL QUIKJOB PERMITE TAMBIEN HASTA 4 FICHEROS DE SALIDA, QUE SE

Page 3: Tutorial Quickjob

REFERENCIAN COMO SIGUE: REFERENCIA DD EN QUIKJOB EN EL JCL ---------- --------- OFA SYSUT2 - PARA EL PRIMER FICHERO DE SALIDA. OFB SYSUT3 - PARA EL SEGUNDO FICHERO DE SALIDA. OFC SYSUT4 - PARA EL TERCER FICHERO DE SALIDA. OFD SYSUT5 - PARA EL CUARTO FICHERO DE SALIDA. LA SENTENCIA WRITE ABRE EL FICHERO INDICADO Y GRABA UN REGISTRO. LA SIGUIENTE WRITE SOBRE EL MISMO FICHERO, GRABA UN NUEVO REGISTRO.

_________ | EJEMPLO | |_________| 001 EQU WCONTADOR WST11-14 ZEROES 010 GET INF ATEND 500 MOVE INF1-80 TO OFA1 MOVE INF95-97-P TO OFA81 MOVE BLANK TO OFA84-100 WRITE OFA1-100 ADD C'0001' TO WCONTADOR GOTO 010 500 MOVE C'TOTAL REGISTROS GRABADOS...' TO PRT1 MOVE WCONTADOR TO PRT30 PRINT GOTO EOJ END.

AREAS DE DATOS

ADEMAS DE LAS AREAS DE LOS FICHEROS, EXISTEN OTRAS AREAS QUE SE PUEDEN UTILIZAR Y REFERENCIAR DIRECTAMENTE EN QUIKJOB. LAS MÁS UTILIZADAS SON: REFERENCIA EN QUIKJOB BREVE DESCRIPCION ---------- -------------------------------------------------------- CTA A CTP 16 CONTADORES DE 8 OCTETOS EMPAQUETADOS E INICIALIZADOS A CEROS. SE SUELEN UTILIZAR CON LA SENTENCIA ACCUM. FUN ES UN AREA DE 80 BYTES, DONDE EL QUIKJOB COLOCA SOLO LA PARTE DE FUNCION DE LA ENTRADA DE UNA TABLA CUANDO SE USA LA SENTECIA IF .. ONTABLE Y EL RESULTADO ES VALIDO. HDX AREAS DE IMPRESION DE CABECERAS (HDA HASTA HDF). SE USAN PARA ALMACENAR LAS DISTINTAS CABECERAS DE UN LISTADO CON LA SENTENCIA HDR. PCB UN PUNTERO PARA DIRECCIONAR LAS PCB DE LA PSB QUE UTILICE UN QUIKJOB PARA IMS/DB O DLI. PRT AREA DE 132 POSICIONES QUE SE ESCRIBE EN IMPRESORA CON LA SENTENCIA PRINT POR LA DD SYSPRINT. ESTE AREA DEBE SER RELLENADA PREVIAMENTE CON LOS DATOS A IMPRIMIR. PTX AREA DE PUNTEROS PARA DIRECCIONAR VARIABLES MEDIANTE

Page 4: Tutorial Quickjob

DESPLAZAMIENTOS. (X = A, B, C, D y R). TBH PUNTERO QUE DIRECCIONA A LA ENTRADA DE LA TABLA QUE SE RECUPERA CORRECTAMENTE CON LA SENTENCIA IF .. IS ONTABLE. TSA PUNTERO QUE DIRECCIONA A LA PRIMERA ENTRADA DE UNA TABLA. TANTO TBH COMO TSA, SE PUEDEN INCREMENTAR O DECRECER, CON LA SENTENCIA SET. VAL AREA DE COMUNICACION DE VALORES, DONDE EL QUIKJOB GUARDA INFORMACION ACCESIBLE PARA EL PROGRAMA, TALES COMO FECHA EN DISTINTOS FORMATOS, HORA, INDICADORES DE FIN FICHERO .

WST AREA DISPONIBLE COMO WORKING STORAGE PARA EL USUARIO. PUEDE SER USADA PARA INDICADORES, CONTADORES, AREAS DE TRABAJO, ETC. EL TAMAÑO DE ESTE AREA VIENE DETERMINADO POR EL PARAMETRO WSTSIZE DE LA SENTENCIA OPTION. POR DEFECTO SON 1000 OCTETOS.

AREA VAL

EL AREA VAL CONTIENE UNA SERIE DE CAMPOS QUE PUEDEN SER ACCEDIDOS POR EL PROGRAMA. ALGUNOS DE ESTOS CAMPOS SE DESCRIBEN SEGUIDAMENTE: POSICIONES FORMATO DESCRIPCION ---------- ----------- ------------------------------------------- 30-37 EMPAQUETADO RESTO DE UNA DIVISION DESPUES DE EJECUTAR LA SENTENCIA DIVD. 50-55 CARACTER FECHA EN FORMATO MMDDYY. 56-61 CARACTER FECHA EN FORMATO YYMMDD. 62-66 CARACTER HORA EN FORMATO HH.MM

67-70 CARACTER CODIGO DE ABEND USADO CON LA SENTENCIA ABEND. 71-75 CARACTER FECHA EN FORMATO JULIANO YYDDD. 196 CARACTER VALOR E (X'C5') CUANDO EN EL FICHERO INF SE DETECTA FIN DE FICHERO. 197 CARACTER VALOR E (X'C5') CUANDO EN EL FICHERO DET SE DETECTA FIN DE FICHERO. 198 CARACTER VALOR E (X'C5') CUANDO EN EL FICHERO INC SE DETECTA FIN DE FICHERO.

199 CARACTER VALOR E (X'C5') CUANDO EN EL FICHERO IND SE DETECTA FIN DE FICHERO. 225-228 BINARIO NUMERO DE BYTES RASTREADOS EN UNA CONDICION PRO VERDAD CON LA SENTENCIA WHEN. 229-231 CARACTER NOMBRE DEL ULTIMO FICHERO TRATADO EN UNA OPERACION DE ENTRADA/SALIDA. _________ | EJEMPLO |

Page 5: Tutorial Quickjob

|_________| 010 GET INF /* LEO PRIMER FICHERO ENTRADA 020 GET DET /* LEO SEGUNDO FICHERO ENTRADA

IF VAL196 EQ C'E' AND /* FIN DE FICHERO INF Y IF VAL197 EQ C'E' /* FIN DE FICHERO DET GO TO 200 /* TERMINAR PROCESO. ........... ........... 200 MOVE 'FIN DE LOS DOS FICHEROS' TO PRT1 PRINT GOTO EOJ END.

REGISTROS DE LONGITUD FIJA Y VARIABLE

QUIKJOB ES CAPAZ DE TRATAR REGISTROS DE LONGITUD FIJA Y VARIABLE. CUANDO SE TRATAN REGISTROS DE LONGITUD VARIABLE HAY QUE TENER EN CUENTA LO SIGUIENTE: AL GRABAR: ANTES DE GRABAR EL REGISTRO SE DEBE GUARDAR LA LONGITUD ------------- DEL REGISTRO LOGICO MAS 4 BYTES EN LAS DOS PRIMERAS PO- SICIONES, EN BINARIO, DEL REGISTRO FISICO. LOS DATOS SE ALMACENARAN DESDE LA POSICION 5. AL LEER : CUANDO SE RECUPERA UN REGISTRO DE LONGITUD VARIABLE, ----------- QUIKJOB DEVUELVE EN LOS DOS PRIMEROS BYTES DEL REGISTRO, EN BINARIO, LA LONGITUD DEL MISMO. DESDE EL 5 BYTE EN ADELANTE ESTARAN LOS DATOS. EN LOS REGISTROS DE LONGITUD FIJA, LOS DATOS SE ALMACENAN DESDE LA POSICION 1 EN ADELANTE. NO SE TRATAN POR TANTO LOS 2 BYTES DE LONGITUD NI LOS DOS DE BLOQUE. _________ | EJEMPLO | |_________| PARA CREAR UN REGISTRO. /* SE INFORMA EN LOS 2 PRIMEROS BYTES LA LONGITUD REGISTRO MOVE C'00024' TO OFA1-2-B /* SE INFORMA EN LOS 2 BYTES MOVE C'FRANCISCO GONZALEZ D' TO OFA5

WRITE OFA GOTO EOJ END PARA RECUPERAR UN REGISTRO. GET INF PRINTHEX INF1-24 GOTO EOJ END RESULTADO: INF0001-0024 FRANCISCO GONZALEZ D

0144CDCDCCECD4CDDECDCE4C

Page 6: Tutorial Quickjob

080069153923607659135904 0001..05...10...15...20...2

ERRORES DE CODIFICACION

AL EJECUTAR UN PROGRAMA ESCRITO EN QUIKJOB SE ANALIZA EN ESE MOMENTO LA SINTAXIS DE LAS SENTENCIAS QUE LO CONSTITUYEN. CUANDO EN ESTE ANALISIS SE DETECTA ALGUN ERROR DE SINTAXIS, EL PASO QUE CORRESPONDE A DICHA EJECUCION TERMINA CON UN CODIGO DE CONDICION 12, Y EN LA SALIDA DE LA DD SYSPRINT SE ESCRIBEN LOS ERRORES QUE SE HAN DETECTADO.

RELACION DE SENTENCIAS QUICKJOB

ABEND

PERMITE CANCELAR LA EJECUCION DE UN PROGRAMA QUIKJOB CON UN CODIGO DE ABEND ESPECIFICO COMPRENDIDO ENTRE 0000 Y 4095. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN ABEND OPC1 ----- --------- -----------------------------------------------------

Page 7: Tutorial Quickjob

N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: ABEND

OPERANDOS: OPC1 : OPCIONAL. UN NUMERO COMPRENDIDO ENTRE 0000 Y 4095. SI NO SE CODIFICA ASUME 4095.

_________ | EJEMPLO | |_________| 005 GET INF IF INF12-15 NOT EQ 'FFFF' ABEND. MOVE INF1-94 TO OFA1 WRITE OFA GOTO 005 END.

ACCUM

SE UTILIZA PARA ACUMULAR EL CONTENIDO DE VARIABLES EN TOTALES E IMPRIMIR ESTOS DE FORMA AUTOMATICA. UTILIZADA CON LOS VERBOS BREAK Y CHECKBREAKS FACILITA LA ACUMULACION E IMPRESION AUTOMATICA DE TOTALES POR RUPTURAS DE CONTROL . LOS FORMATOS POSIBLES SON: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN ACCUM OP1 IN A OP2 BYTE OP3 NNN ACCUM OP1 IN A OP2 BYTE OP3, ON BREAK PRINT IN POS OP4 OP5

N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR.

Page 8: Tutorial Quickjob

SENTENCIA: ACCUM OPERANDOS: OP1 : SE PUEDE CODIFICAR, - UNA VARIABLE CON CONTENIDO NUMERICO. - LA PALABRA ONE, ACUMULA 1 CADA VEZ QUE SE EJECUTA. - LA PALABRA NONE, PARA NO ACUMULAR. OP2 : UN VALOR DE 1 A 8, PARA INDICAR LA LONGITUD DEL CONTADOR.

OP3 : PUEDE SER CUALQUIERA DE LOS 16 CONTADORES CTA A CTP. ADEMAS CUANDO SE UTILIZA CON LOS VERBOS BREAK Y CHECHBREAKS SE PUEDE UTILIZAR EL FORMATO 2, EN CUYO CASO LOS OPERANDOS OP4 Y OP5 SON: OP4 : POSICION 1 EXTREMO IZQUIERDA DONDE IMPRIMIR EL TOTAL ACUMULADO. OP5 : NUM. DE DECIMALES Y CODIGO DE EDICION EN LA IMPRESION. NC.- N DE 0 A 9. C INSERTA PUNTO DECIMAL Y COMAS PARA MILES. NE.- N DE 0 A 9. E PUNTUACION EUROPEA. NN.- N DE 0 A 9. N SIN SUPRESION DE CEROS A LA IZQUIERDA.

_________ | EJEMPLO | |_________| 005 EQU AGENTE INF4-8 EQU PRIMA INF11-15-P BREAK 1 AGENTE SB 1 SA 1 PRINT C'TOTAL AGENTE' IN TOT POS 20 010 GET INF CHECKBREAKS ACCUM PRIMA IN A 4 BYTE CTA, ON BREAKS PRINT IN POS 36 C ACCUM ONE IN A 3 BYTE CTB, ON BREAKS PRINT IN POS 48 C MOVE AGENTE TO PRT10 PRINT /* HACE QUE SE IMPRIMA UNA LINEA POR REGISTRO TRATADO GO TO 010.

Page 9: Tutorial Quickjob

ADD

INCREMENTA EL CONTENIDO DEL OPERANDO2 CON EL VALOR DEL OPERANDO1. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN ADD OP1 TO OP2 ----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: ADD

OPERANDOS: OP1 : UNA VARIABLE CON CONTENIDO NUMERICO, O UNA CONSTANTE NUMERICA. OP2 : UNA VARIABLE CON CONTENIDO NUMERICO. TANTO OP1 COMO OP2 PUEDEN SER VARIABLES EBCDIC, EMPEQUETADO O BINARIO. _________ | EJEMPLO | |_________| 005 EQU IMPUESTO INF5-7-B EQU PRIMA INF11-15-P EQU TOTREC WST1-5-P ZEROES 008 MOVE ZEROS TO WST11-19 010 GET INF ATEND 900 ADD PRIMA TO TOTREC ADD IMPUESTO TO TOTREC MOVE C'PRIMA.....' TO PRT1 MOVE PRIMA TO PRT12 0E MOVE C'IMPUESTO..' TO PRT21 MOVE IMPUETO TO PRT32 0E MOVE C'TOTAL RECIBO.' TO PRT41 MOVE TOTREC TO PRT62 0E ADD TOTREC TO WST11-19 PRINT GOTO 010

900 MOVE 'TOTAL FINAL...' TO PRT1 MOVE WST11-19 TO PRT21 0E PRINT GOTO EOJ

Page 10: Tutorial Quickjob

ATEND

PERMITE CONTROLAR EL FINAL DEL FICHERO (INF) DE ENTRADA Y PODER ASI BIFURCAR A OTRO PUNTO DEL PROGRAMA PARA REALIZAR OTRAS OPERACIONES. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN ATEND OP1 ----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: ATEND

OPERANDOS: OP1 : UN NUMERO QUE SIRVE COMO ETIQUETA, A LA CUAL BIFURCA ESTA SENTENCIA CUANDO DETECTA EL FINAL DEL FICHERO INF. ESTA SENTENCIA NO ES FUNCIONAL CUANDO SE USA MAS DE UN FICHERO DE ENTRADA (INF, DET, ETC.) POR OTRO LADO, ES INCOMPATIBLE CON EL OPERANDO ATEND DE LA SENTENCIA GET. _________ | EJEMPLO | |_________| 005 EQU CIA INF1 EQU RAMO INF2-3 EQU POLIZA INF4-10 EQU PRIMA INF11-15-P 008 MOVE ZEROS TO WST11-19 010 GET INF ATEND 900 MOVE CIA TO PRT1 MOVE RAMO TO PRT5 MOVE POLIZA TO PRT11 MOVE PRIMA TO PRT22 0E PRINT ADD C'1' TO WST11-19 GOTO 010 900 MOVE 'TOTAL IMPRESOS' TO PRT1 MOVE WST11-19 TO PRT21 0E PRINT GOTO EOJ

Page 11: Tutorial Quickjob

BREAK

PERMITE DEFINIR CAMPOS PARA RUPTURAS DE CONTROL DE FORMA AUTOMATICA. SE PUEDEN DEFINIR HASTA 9 NIVELES DE RUPTURAS DE CONTROL, ADEMAS DEL TOTAL FINAL . UTILIZADA CON LOS VERBOS CHECKBREAKS Y ACCUM FACILITA LA OBTENCION AUTOMATICA DE INFORMES CON TOTALES POR RUPTURAS DE CONTROL . EL FICHERO DE ENTRADA A TRATAR, DEBE ESTAR ORDENADO POR LOS CAMPOS ESPECIFICADOS EN LA SENTENCIA BREAK . SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN BREAK OP1 OP2 SB OPC3 SA OPC4 PRINT C'OPC5' IN TOT POS OPC6 ----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: BREAK OPERANDOS: OP1 : NIVEL DE RUPTURA. BREAK 1 ES EL MENOR, BREAK 9 ES EL MAS ALTO. HASTA TRES CAMPOS PUEDEN INDICARSE PARA EL MISMO NIVEL, ASI, PUEDE HABER TRES SENTENCIAS BREAK 1, TRES BREAK 2, ETC. EL CAMBIO DE VALOR DE CUALQUIERA DE LOS 3 CAMPOS IMPLICA LA RUPTURA DE CONTROL. OP2 : VARIABLE O CAMPO SOBRE EL CUAL SE DEFINE EL NIVEL DE RUPTURA. OPC3: OPCIONAL. PARA INDICAR EL ESPACIADO ANTES DE IMPRIMIR EL TOTAL. LOS VALORES POSIBLES SON: 0, 1, 2, E. OPC4: OPCIONAL. INDICA EL ESPACIADO DESPUES DE IMPRIMIR EL TOTAL. PUEDE LLEVAR LOS MISMOS VALORES QUE OPC3. SI SE ESCRIBE OPC4, OPC3 ES OBLIGATORIO. OPC5: OPCIONAL. UNA CONSTANTE DE HASTA 13 OCTETOS, QUE SE IMPRIME EN LA POSICION INDICADA POR EL OPC6 SI HAY RUPTURA DE CONTROL. OPC6: OPCIONAL. POSICION 1 DE IMPRESION DE LA CONSTANTE DEL OPC5. UNA RUPTURA DE CONTROL DE NIVEL SUPERIOR IMPLICA RUPTURA DE CONTROL DE LOS NIVELES INFERIORES. _________ | EJEMPLO | |_________| VER SENTENCIA ACCUM Y CHECKBREAKS.

CALL

Page 12: Tutorial Quickjob

PERMITE LLAMAR A UN SUBPROGRAMA DE LA LIBRERIA DE CARGABLES PARA SU EJECUCION. UNA VEZ EJECUTADO SE DEVUELVE CONTROL A LA SIGUIENTE SENTENCIA QUE SIGUE A LA CALL. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN CALL OP1 ... OPN ----- --------- -----------------------------------------------------

N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: CALL OPERANDOS: OP1 : NOMBRE DE LA RUTINA O SUBPROGRAMA AL QUE SE LLAMA. NO SE ESCRIBE ENTRE COMILLAS. OPN : DIRECCIONES DE CADA UNO DE LOS PARAMETROS QUE ESPERA RECIBIR EL SUBPROGRAMA O MODULO. SE PUEDEN PASAR HASTA 999 DIRECCIONES, AUNQUE EL DEFECTO ES 10. PARA AMPLIARLAS SE UTILIZA EL PARAMETRO CALLSZ DE LA SENTENCIA OPTION.

ESTAS DIRECCIONES PUEDEN SER: - UNA VARIABLE QUIKJOB. WST45, INF1. - UNA CONSTANTE EBCDIC. C'123456' - UNA CONSTANTE PACKET. P'12345F' - UNA CONSTANTE BINARIA. X'001A' _______ | EJEMPLO | |________| 05 EQU FECHA WST1-9 00 GET INF MOVE INF25-32 TO FECHA /* MUEVO FECHA ENTRADA A WORKING CALL M0ZFECHA FECHA IF WST9-9 NOT EQ C' ' /* COMPRUEBO SI HAY ERRORES. PRINTHEX FECHA. GOTO 100

CHECKBREAKS

ESTA SENTENCIA TIENE DOS FORMATOS, UNO SIN OPERANDOS Y OTRO CON ELLOS.

Page 13: Tutorial Quickjob

CHECKBREAKS REALIZA LA COMPARACION DE LAS VARIABLES DEFINIDAS EN UNA O VARIAS SENTENCIAS BREAK, DE FORMA QUE COMPARA LOS VALORES DE CADA VARIABLE CON LOS NUEVOS VALORES OBTENIDOS DESPUES DE UNA LECTURA. CUANDO DETECTA RUPTURA DE CONTROL, ACTIVA LA IMPRESION DE LOS TOTALES ESPECIFICADOS EN LAS SENTENCIAS ACCUM Y LOS LITERALES INDICADOS EN LA SENTENCIA BREAK. LOS FORMATOS POSIBLES SON: N.SEC SENTENCIA OPERANDOS ----- ----------- --------------------------------------------------- NNN CHECKBREAKS NNN CHECKBREAKS ON BREAKS PERFORM NNNN THRU ZZZZ ----- ----------- --------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: CHECKBREAKS OPERANDOS: EL PRIMER FORMATO NO TIENE OPERANDOS. EL SEGUNDO FORMATO PERMITE INVOCAR UN SUBCONJUNTO DE SENTENCIAS DESDE UN PUNTO DE REFERENCIA (NNNN) HASTA UN PUNTO DE SALIDA (ZZZZ) CUANDO SE DETECTA UNA RUPTURA DE CONTROL. ESTE SUBCONJUNTO DE SENTENCIAS ES EJECUTADO ANTES DE QUE LOS TOTALES SEAN IMPRESOS E INICIALIZADOS NUEVAMENTE. PARA UTILIZAR ADECUADEMENTE ESTA SENTENCIA DENTRO DE UN QUIKJOB, ES ACONSEJABLE ESCRIBIRLA DESPUES DE LA LECTURA DEL FICHERO. ESTO EVITA OLVIDARLA Y OBTENER ASI LOS RESULTADOS DESEADOS. _________ | EJEMPLO | |________|

005 BREAK 1 INF1-2 SB 1 SA 1 PRINT C'TOTAL RAMO' IN TOT POS 20 BREAK 2 INF3-6 SB 1 SA 1 PRINT C'TOTAL AGEN' IN TOT POS 20 BREAK 3 INF7-7 SB 1 SA 1 PRINT C'TOTAL CIA' IN TOT POS 20 100 GET INF CHECKBREAKS ACCUM INF15-18-P IN A 4 BYTE CTA, ON BREAKS PRINT IN POS 36 C ACCUM INF21-25-P IN A 4 BYTE CTB, ON BREAKS PRINT IN POS 48 C

MOVE INF7-7 TO PRT4 MOVE INF3-6 TO PRT10 MOVE INF1-2 TO PRT20 MOVE INF15-18-P TO PRT37 0E MOVE INF21-25-P TO PRT49 0E PRINT GOTO 100

CLOSE

ESTA SENTENCIA TIENE DOS USOS O POSIBILIDADES: 1.- PERMITE CERRAR UN FICHERO PARA ABRIRLO POSTERIORMENTE Y ASI PODER PROCESARLO NUEVAMENTE DESDE EL PRINCIPIO.

Page 14: Tutorial Quickjob

2.- PERMITE LIBERAR EL BUFFER DEL FICHERO QUE YA NO SE NECESITA PARA OBTENER MEMORIA ADICIONAL. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN CLOSE OP1 ----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: CLOSE OPERANDOS: OP1 : PUEDE SER CUALQUIER FICHERO DE ENTRADA O SALIDA DEL QUIKJOB. (INF, DET, INC, IND, OFA, OFB, OFC Y OFD). SI NO SE ESPECIFICA ASUME INF. _________ | EJEMPLO | |_________| 005 GET INC ATEND 100 IF INC1 IS NOT EQ C'X' GO TO 005. MOVE INC1-1 TO PRT1 .......................... .......................... PRINT GOTO 005 100 CLOSE INC OPEN INC 110 GET INC ATEND EOJ IF INC1 EQ C'X' GOTO 110. ...................... ..................... GOTO 110

DIVD

LA SENTENCIA DIVD, DIVIDE EL OPERANDO1 ENTRE EL OPERANDO3 Y ALMACENA EL COCIENTE EN EL OPERANDO5. EL RESTO DE LA DIVISION SE PUEDE OBTENER DEL AREA VAL, CONCRETAMENTE DE LAS POSICIONES 30-37 (EMPAQUETADO). ES OBLIGATORIO ESPECIFICAR LOS DECIMALES DE LOS OPERANDOS 1, 3 Y 5.

Page 15: Tutorial Quickjob

SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN DIVD OP1 OP2 BY OP3 OP4 GIVING OP5 OP6 ----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: DIVD OPERANDOS: OP1 : ES EL DIVIDENDO. PUEDE SER FORMATO EBCDIC, PACKED O BINARY. OP2 : NUM. DECIMALES DEL OPERANDO1. EJEMPLO, SI EL OP1 TIENE DOS DECIMALES, SE DEBE CODIFICAR 2D. OP3 : ES EL DIVISOR. MISMAS CARACTERISTICAS DEL OPERANDO1. SE PUEDE ESPECIFICAR UNA CONSTANTE NUMERICA DE HASTA 11 BYTES. OP4 : NUM. DECIMALES DEL OPERANDO3. OP5 : ES EL CAMPO QUE DEFINE EL COCIENTE. MISMAS CARACTERISTICAS QUE EL OPERANDO1. OP6 : NUM. POSICIONES DECIMALES DEL OPERANDO5. ADEMAS SE PUEDE SOLICITAR REDONDEO, CODIFICANDO UNA R DESPUES DEL NUMERO DE DECIMALES. (2DR) _________ | EJEMPLO | |________|

005 EQU CANTIDAD INF11-15-P EQU EMPLE INF21-24 EQU COCIEN WST1-5-P EQU RESTO WST11-15-P 010 GET INF DIVD CANTIDAD 0D BY EMPLE 0D GIVING COCIEN 0DR MOVE VAL30-37-P TO RESTO MOVE INF1-24 TO OFA1 MOVE COCIEN TO OFA25-29-P MOVE RESTO TO OFA30-34-P WRITE OFA GOTO 010

Page 16: Tutorial Quickjob

DOHEADERS

PROVOCA EL SALTO A UNA NUEVA PAGINA E IMPRIME LAS CABECERAS, SI ESTAS HAN SIDO ESPECIFICADAS. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN DOHEADERS OPC1 ----- -------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: DOHEADERS

OPERANDOS: OPC1 : OPCIONAL. SI SE ESPECIFICA DEBE ESCRIBIRSE PAGEONE, Y FUERZA A QUE EL NUMERO DE PAGINA COMIENCE DE NUEVO POR 1. SI NO SE ESPECIFICA, SE INCREMENTA EN 1 EL NUMERO DE PAGINA QUE TUVIERE. _________ | EJEMPLO | |_________| IMPRIMIR EN UNA SOLA HOJA CADA REGISTRO CON COCIENTE MAYOR DE 65000 005 EQU CANTIDAD INF11-15-P EQU EMPLE INF21-24 EQU COCIEN WST1-5-P EQU RESTO WST11-15-P 010 GET INF DIVD CANTIDAD 0D BY EMPLE 0D GIVING COCIEN 0DR IF COCIEN GT C'65000' DOHEADERS. MOVE INF11-15-P TO PRT1 0E MOVE INF21-24 TO PRT21 0E MOVE COCIEN TO PRT41 0E MOVE VAL30-37-P TO PRT51 0E PRINT IF COCIEN GT C'65000' DOHEADERS. GOTO 010

END

Page 17: Tutorial Quickjob

ESPECIFICA EL FINAL DE LAS SENTENCIAS EN UN PROGRAMA QUIKJOB. SOLO ES OBLIGATORIA, CUANDO SE CODIFICA UNA TABLA A CONTINUACION DEL PROGRAMA. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- -------- ----------------------------------------------------- NNN END ----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR.

SENTENCIA: END OPERANDOS: NO TIENE. _________ | EJEMPLO | |_________| 005 TABLSPEC 0200 01 05 /* 200 ENTRADAS PARA LA TABLA. 010 GET INF IF INF1-5 IS ONTABLE MOVE INF1-80 TO OFA1-80 WRITE OFA. GOTO 010 800 END 00001 00002 00003 ..... 00200 /*

EQU

PERMITE ASIGNAR UN NOMBRE A UN AREA DE WORKING, FICHERO DE ENTRADA O SALIDA, AL AREA DE IMPRESION, ETC.

Page 18: Tutorial Quickjob

PERMITE ADEMAS ASIGNAR UNOS VALORES DE INICIO A DICHAS AREAS, CON EL OPERANDO4 DE LA SENTENCIA. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN EQU OP1 OP2 OPC3 OPC4 ----- --------- -----------------------------------------------------

N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: EQU OPERANDOS: OP1 : NOMBRE DADO A LA VARIABLE QUE SE ASIGNA AL AREA. PUEDE TENER HASTA 14 CARACTERES, SIN BLANCOS ENTRE MEDIAS Y NO SE PERMITEN PARENTESIS. OP2 : IDENTIFICA AL AREA ASIGNADA, ASI COMO SU LONGITUD Y FORMATO. (WST, INF, DET, OFA, PRT, VAL, ETC.) SE PUEDE ESPECIFICAR LA LONGITUD POR DESPLAZAMIENTO, A PARTIR DE LA PRIMERA DEFINICION. VER EJEMPLO.

OPC3 : OPCIONAL. SE UTILIZA PARA DEFINIR EL FORMATO DE EDICION, QUE SE SUELE UTILIZAR PARA EL AREA PRT (IMPRESION). VALORES POSIBLES: NC, NE, NN. (PRIMERA N= NUM. DECIMALES.) OPC4 : OPCIONAL. SI SE CODIFICA, ES EL VALOR DE INICIALIZACION DE LA VARIABLE. SE PERMITE: C'XXX', P'NNNN', X'...', ZERO(ES), BLANK(S), SPACE(S), HIVALUE(S), LOVALUE(S). _________ | EJEMPLO | |_________| 005 EQU INF-PRIMA INF1-5-P /* POS. 1-5 EMPAQUETADO EQU INF-IMPUE INF11-14-B /* POS. 11-14 BINARIO. EQU W-TAREA WST1-10 BLANKS /* POS. 1-10 WORKING. EQU W-TEXTO WST11-21 C' TEXTO' EQU W-TAREA1 WST1-5 /* 5 PRIMERAS POS DE W-TAREA EQU V-REDOND VAL30-37-P /* REDONDEO AREA VAL. EQU P-PRECIO PRT1-10 2E EQU P-CANT PRT21-25 0E EQU D-NOMBRE DET1-20 EQU D-APELL1 (30) /* POS. 21-50 DEL FICH DET. EQU D-APELL2 (30) /* POS. 51-80 DEL FICH DET. EQU D-DIRECC DET81-110. EXIT

SE UTILIZA COMO PUNTO DE SALIDA EN UN GRUPO DE SENTENCIAS INVOCADAS POR LA SENTENCIA PERFORM. SU FORMATO ES:

Page 19: Tutorial Quickjob

N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN EXIT ----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: EXIT

OPERANDOS: NO TIENE. _________ | EJEMPLO | |_________| EMPAREJAMIENTO DE DOS FICHEROS. 010 PERFORM 100 THRU 110 /* MANDO LEER REGISTRO INF. 020 PERFORM 200 THRU 210 /* MANDO LEER REGISTRO DET. 050 IF INF1-5 IS HIVALUE AND IF DET1-5 IS HIVALUE GOTO EOJ. /* TERMINO PROCESO. IF INF1-5 EQ DET1-5 MOVE INF1-50 TO OFA1 MOVE DET1-25 TO OFA51 WRITE OFA PERFORM 100 THRU 110 GOTO 050. IF INF1-5 GT DET1-5 PERFORM 200 THRU 210 GOTO 050. PERFORM 100 THRU 110 GOTO 050.

100 GET INF IF VAL196 EQ C'E' /* SI FIN FICHERO INF MOVE HIVALUE TO INF1-5. 110 EXIT. 200 GET DET IF VAL197 EQ C'E' /* SI FIN FICHERO DET MOVE HIVALUE TO DET1-5. 210 EXIT.

GET

RECUPERA EL SIGUIENTE REGISTRO DISPONIBLE DEL FICHERO CUYA AREA SE ESPECIFICO EN EL OPERANDO1 Y ALMACENA LOS DATOS EN DICHA AREA. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN GET OP1 OPC2 OPC3

Page 20: Tutorial Quickjob

----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: GET

OPERANDOS: OP1 : ADMITE LOS VALORES INF, DET, INC O IND. SI NO SE CODIFICA, ASUME POR DEFECTO INF. INF.- PRIMER FICHERO DE ENTRADA. EOF EN VAL196 = E. DET.- SEGUNDO FICHERO DE ENTRADA. EOF EN VAL197 = E. INC.- TERCER FICHERO DE ENTRADA. EOF EN VAL198 = E. IND.- CUARTO FICHERO DE ENTRADA. EOF EN VAL199 = E. OPC2 : OPCIONAL. SI SE CODIFICA, SOLO ES VALIDO EL VALOR ATEND. CUANDO SE CODIFICA, BIFURCA AL PUNTO DEL PROGRAMA ESPECIFICADO EN EL OPC3 (OPERANDO3) O TERMINA EL PROCESO (EOJ) AL DETECTAR EL FINAL DEL FICHERO TRATADO.

OPC3 : OPCIONAL. SOLO OBLIGATORIO SI SE CODIFICA EL OPERANDO 2. LOS VALORES POSIBLES SON: EOJ .- TERMINA EL PROCESO AL DETECTAR FINAL DE FICHERO. NNNN.- UN NUMERO DE ETIQUETA O SECUENCIA, AL CUAL BIFURCA EL PROGRAMA CUANDO SE DETECTA EL FINAL DEL FICHERO. _________ | EJEMPLO | |_________| 010 GET INF ATEND EOJ /* LEE FICHERO INF Y TERIMNA EL PROGRAMA /* CUANDO LLEGA A FIN FICHERO (EOJ). PRINTHEX INF1-100 /* IMPRIME EN HEXADECIMAL REG. LEIDO. GOTO 010. /* BIFURCA A 010, PARA LEER OTRO REGISTRO

GOTO

TRANSFIERE EL CONTROL A LA ETIQUETA O NUMERO DE SECUENCIA QUE SE ESPECIFIQUE EN EL OPERANDO1. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN GOTO OP1 ----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR.

Page 21: Tutorial Quickjob

SENTENCIA: GOTO

OPERANDOS: OP1 : LOS VALORES POSIBLES SON: EOJ .- TERMINA EL PROCESO. NNNN.- NUMERO DE SECUENCIA AL CUAL BIFURCA EL PROGRAMA. _________ | EJEMPLO | |_________| 005 EQU CONT WST1-4 ZEROES 010 GET DET ATEND 500 MOVE DET1-20 TO PRT1 PRINT ADD C'0001' TO CONT GOTO 010. 500 MOVE 'TOTAL REGISTROS IMPRESOS' TO PRT1 MOVE CONT TO PRT25 PRINT GOTO EOJ END

HDR

PERMITE DEFINIR LAS LINEAS DE CABECERAS DE UN LISTADO. SU FORMATO ES: COL. COL. COL. COLUMNAS COL. 1-3 5-7 9-10 12 - 71 72 ---- --- ---- ---------------------------------------------- ---- NNN HDR 1A PRIMEROS 60 OCTETOS DE LA LINEA 1 DE CABECERA CONT. 7 OCTETOS DE CONTINUACION HASTA COMPLETAR 66 DE LA LINEA1. NNN HDR 1B SEGUNDOS 60 OCTETOS DE LA LINEA 1 DE CABECERA CONT. 6 OCTETOS DE CONTINUACION HASTA COMPLETAR LOS 132 DE LA LINEA 1. NNN HDR 2A PRIMEROS 60 OCTETOS DE LA LINEA 2 DE CABECERA CONT. 7 OCTETOS DE CONTINUACION HASTA COMPLETAR 66 DE LA LINEA 2.

Page 22: Tutorial Quickjob

NNN HDR 2B SEGUNDOS 60 OCTETOS DE LA LINEA 2 DE CABECERA CONT. 6 OCTETOS DE CONTINUACION HASTA COMPLETAR LOS 132 DE LA LINEA 2. SE PERMITEN HASTA 6 LINEAS DE CABECERAS (HDR 1A, 1B, 2A, 2B,.. 6A, 6B). EN LA COLUMNA 9 SE IDENTIFICA EL NUM. DE LINEA (1 PARA LA PRIMERA, 2 PARA LA SEGUNDA, 6 PARA LA SEXTA). EN LA COLUMNA 10 SE IDENTIFICA LA PARTE DE CADA LINEA. (A PARA LA PRIMERA PARTE, B PARA LA SEGUNDA). EN CADA PARTE DE LA LINEA SE PUEDEN CODIFICAR HASTA 66 CARACTERES, PERO COMO NO CABEN EN UNA LINEA, SE PONE UN CARACTER DE CONTINUACION NO BLANCO EN LA COLUMNA 72 Y SE CONTINUA EN LA COLUMNA 1 DE LA LINEA SIGUIENTE HASTA COMPLETARLA. EN LA COLUMNA 12 DE LA PRIMERA PARTE DE CADA LINEA DE CABECERA, SE ESCRIBE EL CARACTER DE CONTROL DE SALTO DE LINEA, QUE PUEDE SER: BLANCO - AVANZA UNA LINEA ANTES DE IMPRIMIR. 0 - AVANZA DOS LINEAS ANTES DE IMPRIMIR. - - AVANZA TRES LINEAS ANTES DE IMPRIMIR. + - NO AVANZA LINEA ANTES DE IMPRIMIR. 1 - SALTA A NUEVA PAGINA ANTES DE IMPRIMIR. EN LA SEGUNDA PARTE SE ESCRIBE EL CARACTER QUE SE DESEE IMPRIMIR. ADEMAS SE PERMITEN CODIFICAR LAS SIGUIENTES VARIABLES EN LAS LINEAS DE CABECERA: $IPLDAT$ - SE IMPRIME LA FECHA DE IPL EN FORMATO MM/DD/YY. $DATE$ - IMPRIME LA FECHA DEL DIA EN FORMATO YY.DDD. $PG$ - IMPRIME EL N DE PAGINA COMENZANDO EN 1. $TIM$ - IMPRIME LA HORA EN FORMATO HH.MM. POR OTRO LADO, SE PERMITE MODIFICAR LA INFORMACION DE UNA LINEA DE CABECERA DINAMICAMENTE, ES DECIR, ALMACENADO INFORMACION EN UN MOMENTO DADO DENTRO DEL PROGRAMA. HDA1 ES LA PRIMERA POSICION DE LA PRIMERA LINEA DE CABECERA. HDF1 ES LA PRIMERA POSICION DE LA SEXTA LINEA DE CABECERA.

_________ | EJEMPLO | |_________| 1...5... 10.12..15...20... 25..............45...50...55...60...65... 70.. HDR 1A 1 $IPLDAT$ LISTADO MENSUAL DE LAS POLIZAS QUE HAN TENI* DO SINI HDR 1B ESTRO. MES XXXXXXXXXXXX PAG $PG$ HDR 2A --------- ----------------------------------------------------------* ------- HDR 2B --------- ------------------------- ------------- HDR 3A 0 NUMERO POLIZA FECHA SINIESTRO HDR 4A ------------------- --------------------- 005 EQU MES DET1-12 EQU POL INF10-19 EQU FECS INF34-39 010 GET DET MOVE MES TO HDA80-91 020 GET INF ATEND GOTO EOJ MOVE POL TO PRT6 MOVE FECS TO PRT55 PRINT GOTO 020.

Page 23: Tutorial Quickjob

IF

SE UTILIZA PARA COMPARAR EL CONTENIDO DE UNA VARIABLE CON EL DE OTRA, CON UN LITERAL O CON UNA CONSTANTE. CUANDO EL RESULTADO DE LA COMPARACION ES VERDADERO CONTINUA CON LAS SIGUIENTES SENTENCIAS HASTA ENCONTRAR UN PUNTO. SI EL RESULTADO ES FALSO, SALTA A LA SIGUIENTE SENTENCIA DESPUES DEL PUNTO. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ----------------------------------------------------- NNN IF OP1 IS (NOT) OP2 TO OP3 OPC4 ----- --------- ----------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: IF

Page 24: Tutorial Quickjob

OPERANDOS: OP1 : DEFINE EL AREA/CAMPO A COMPARAR. DEBE SER UNA VARIABLE DE TIPO EBCDIC, EMPAQUETADO O BINARIO. OP2 : SON LOS OPERADORES DE COMPARACION Y SON LOS SIGUIENTES: - EQ : OP1 ES IGUAL A (TO) OP3. - GT : OP1 ES MAYOR QUE (TO) OP3. - LT : OP1 ES MENOR QUE (TO) OP3. - ALPHA : OP1 ES ALFABETICO. - NUMERIC : OP1 ES NUMERICO. - SPACE(S) : OP1 ES BLANCOS (MAXIMO 30 BYTES). - BLANK(S) : OP1 ES BLANCOS (MAXIMO 30 BYTES). - ZERO(S) : OP1 ES CEROS (MAXIMO 30 BYTES, 8 PARA PACKET). - HIVALUE(S): OP1 ES MAXIMO VALOR X'FF' (MAXIMO 30 BYTES). - LOVALUE(S): OP1 ES MINIMO VALOR X'00' (MAXIMO 30 BYTES). - ONTABLE : OP1 ESTA COMO ARGUMENTO DENTRO DE UNA TABLA. OP3 : DEFINE EL CAMPO, LITERAL O CONSTANTE CON EL QUE SE COMPARA EL OPERANDO1. SOLO SE DEBE CODIFICAR CUANDO OP2 ES EQ, GT O LT. PUEDE SER:

- UN CAMPO EBCDIC, EMPAQUETADO O BINARIO. - C'LITERAL', P'EMPAQUETADO' , X'BINARIO'. - BLANK(S), SPACE(S), ZERO(ES), HIVALUE(S), LOVALUE(S), SOLO SI OPERANDO2 ES EQ. OPC4 : OPCIONAL. SON LOS OPERADORES LOGICOS OR Y AND. _________ | EJEMPLO | |_________| 005 IF WST1-5 IS NOT NUMERIC GOTO 010. IF WST1-5 GT WST102-106 .......... 010 IF WST1-5 IS BLANKS OR IF WST1-5 IS ZEROS .......... LIMETREADS LIMITA EL NUMERO DE REGISTROS A RECUPERAR DEL FICHERO DE ENTRADA QUE SE HAYA ESPECIFICADO EN EL OPERANDO2. SE DEBE CODIFICAR ANTES DE LA LECTURA DEL FICHERO. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN LIMITREADS OP1 OP2 ----- --------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR.

SENTENCIA: LIMITREADS OPERANDOS: OP1 : NUMERO MAXIMO DE REGISTROS A RECUPERAR. OP2 : NOMBRE DEL AREA DEL FICHERO A TRATAR. ASUME INF POR DEFECTO.

Page 25: Tutorial Quickjob

VALORES POSIBLES: INF, DET, INC E IND. _________ | EJEMPLO | |_________| LIMITREAD 100 DET /* MAXIMO 100 REGISTROS FICHERO DET. 010 GET DET ATEND EOJ MOVE DET1-50 TO OFA1 WRITE OFA GOTO 010.

LINECOUNT

QUIKJOB IMPRIME AUTOMATICAMENTE 54 LINEAS POR PAGINA. ESTA SENTENCIA PERMITE MODIFICAR EL NUMERO DE LINEAS A IMPRIMIR POR PAGINA. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- ------------- ---------------------------------------------------- NNN LINECOUNT OP1 ----- ------------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR.

SENTENCIA: LINECOUNT OPERANDOS: OP1 : SE PUEDE CODIFICAR LO SIGUIENTE: NONE .- SE IGNORA EL CONTADOR DE LINEAS POR PAGINA. LAS PAGINAS SON DE INFINITA LONGITUD. NNN .- UN NUMERO DE HASTA 3 CIFRAS, QUE REPRESENTA EL NUMERO

Page 26: Tutorial Quickjob

DE LINEAS POR PAGINA. EXISTE EL AREA DE DATOS LCT1-2-P, DONDE EL QUIKJOB ALMACENA EL NUMERO DE LINEAS LIBRES O SIN UTILIZAR DE LA PAGINA QUE ESTA TRATANDO. _________ | EJEMPLO | |_________| LINECOUNT 60 /* 60 LINEAS POR PAGINA DEL LISTADO 010 GET INF IF LCT1-2-P IS LT P'5' /* SI NO CABEN 4 LINEAS DOHEADERS PAGEONE. /* SALTO PAGINA E IMPRIMO CABECERAS MOVE INF1-5 TO PRT1 MOVE ........ .. .....

PRINT GOTO 010.

MOVE

TRASLADA EL CONTENIDO DE UNA VARIABLE, LITERAL O CONSTANTE A OTRA VARIABLE. LA EDICION Y SUPRESION DE CEROS ESTA DISPONIBLE EN CAMPOS NUMERICOS. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN MOVE OP1 TO OP2 OPC3 ----- --------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR.

SENTENCIA: MOVE OPERANDOS: OP1 : DESCRIBE EL CAMPO EMISOR, Y PUEDE SER: - UNA VARIABLE DE TIPO EBCDIC, EMPAQUETADO O BINARIO. - UN LITERAL DEL TIPO C'LITERAL'. MAXIMO 40 OCTETOS. - UN LITERAL EMPAQUETADO P'NNNN'. MAXIMO 15 DIGITOS (8 BYTES) - UN LITERAL BINARIO X'...'. MAXIMO 12 BYTES. - LAS CONSTANTES (BLANKS, SPACES, ZEROS, LOVALUE, HIVALUE). OP2 : DESCRIBE EL CAMPO RECEPTOR, Y DEBE SER UNA VARIABLE DE TIPO EBCDIC, EMPAQUETADO O BINARIO.

Page 27: Tutorial Quickjob

CUANDO EL CAMPO EMISOR Y RECEPTOR TIENEN EL MISMO FORMATO, BASTA CON DESCRIBIR LA POSICION DE COMIENZO DEL RECEPTOR. SI EL CAMPO RECEPTOR ES UN AREA PRT (IMPRESION), Y SE DESEA EDICION DEL MISMO, SE PUEDE UTILIZAR EL OPERANDO3. OPC3 : PERMITE LA EDICION Y SUPRESION DE CEROS, SI EL CAMPO RECEPTOR ES UNA AREA PRT. SE PERMITE CODIFICAR: NC, DONDE N=DECIMALES Y C= INSERTA PUNTO DECIMAL Y MILES. NE, DONDE N=DECIMALES Y E= FORMATO PUNTUACION EUROPEA. NN, DONDE N=DECIMALES Y N= SIN SUPRESION DE CEROS. _________ | EJEMPLO | |_________| 005 GET DET MOVE DET1-5-P TO PRT1 2E MOVE DET10-12 TO PRT12 MOVE C'PRIMA..' TO PRT21 MOVE DET21-24-P TO PRT27 1E PRINT GOTO 005.

MOVE CON LONGITUD VARIABLE

TRASLADA EL CONTENIDO DE UNA VARIABLE, LITERAL O CONSTANTE A OTRA VARIABLE CON LA LONGITUD ESPECIFICADA EN EL OPERANDO3. LA EDICION Y SUPRESION DE CEROS NO ESTA DISPONIBLE CON ESTA SENTENCIA SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN MOVE OP1 TO OP2 OP3 ----- --------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: MOVE OPERANDOS: OP1 : DESCRIBE EL CAMPO EMISOR, Y PUEDE SER: - UNA VARIABLE DE TIPO EBCDIC, EMPAQUETADO O BINARIO. - UN LITERAL DEL TIPO C'LITERAL'. MAXIMO 40 OCTETOS. - UN LITERAL EMPAQUETADO P'NNNN'. MAXIMO 15 DIGITOS (8 BYTES) - UN LITERAL BINARIO X'...'. MAXIMO 12 BYTES. OP2 : DESCRIBE EL CAMPO RECEPTOR, Y DEBE SER UNA VARIABLE DE TIPO EBCDIC, EMPAQUETADO O BINARIO. LOS CAMPOS EMISOR Y RECEPTOR DEBEN TENER EL MISMO FORMATO. SE PERMITE MOVER UN HEXADECIMAL SOBRE UNO DE TIPO CARACTER. SOLO SE ESPECIFICA LA POSICION INICIAL EN EL CAMPO RECEPTOR. OP3 : ES UN CAMPO DE 2 O 4 BYTES EN BINARIO, EN EL CUAL SE INDICA

Page 28: Tutorial Quickjob

LA LONGITUD DE LOS DATOS DEL EMISOR QUE SE DESEAN LLEVAR AL CAMPO RECEPTOR. _________ | EJEMPLO | |_________| CREACION DE REGISTROS DE LONGITUD VARIABLE. 005 GET INF ATEND EOJ WHEN INF1-80 INCLUDES X'FF' /* ENCUENTRO FIN REGISTRO MOVE INF1 TO OFA5 VAL225-228-B /* MUEVO INF TO OFA LONG VAL MOVE VAL225-228-B TO OFA1-2-B /* MUEVO LA LONG. DE REG. WRITE OFA1 GO TO 005.

MULT

LA SENTENCIA MULT, MULTIPLICA EL CONTENIDO DEL OPERANDO1 POR EL DEL OPERANDO3 Y ALMACENA EL PRODUCTO EN EL OPERANDO5. ES OBLIGATORIO ESPECIFICAR LOS DECIMALES DE LOS OPERANDOS 1 3 Y 5. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- --------------------------------------------------- NNN MULT OP1 OP2 BY OP3 OP4 GIVING OP5 OP6 ----- --------- --------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: MULT OPERANDOS: OP1 : ES EL MULTIPLICANDO. PUEDE SER EN FORMATO EBCDIC, PACKED O BINARY.

OP2 : NUMERO DE DECIMALES DEL OPERANDO1. EJEMPLO, SI EL OP1 TIENE DOS DECIMALES SE DEBE CODIFICAR 2D. OP3 : ES EL MULTIPLICADOR. MISMAS CARACTERISTICAS DEL OPERANDO1. SE PUEDE ESPECIFICAR UNA CONSTANTE NUMERICA DE HASTA 11 BYTES. OP4 : NUMERO DE DECIMALES DEL OPERANDO3. OP5 : ES EL CAMPO QUE DEFINE EL PRODUCTO. MISMAS CARACTERISTICAS QUE OP1. OP6 : NUMERO DE POSICIONES DECIMALES DEL OPERANDO5. ADEMAS SE PUEDE SOLICITAR REDONDEO CODIFICANDO UNA R DESPUES DEL NUM. DE DECIMALES (EJEMPLO 2DR).

Page 29: Tutorial Quickjob

_________ | EJEMPLO | |_________| 005 EQU CANTIDAD INF11-15-P EQU PRECIO INF21-24 EQU RESULT WST1-5-P 010 GET INF MULT CANTIDAD 0D BY PRECIO 2D GIVING RESULT 2DR MOVE INF1-24 TO OFA1 MOVE RESULT TO OFA25-29-P WRITE OFA GOTO 010

OPEN

ESTA SENTENCIA TIENE DOS USOS O POSIBILIDADES: 1.- PERMITE RETRASAR LA APERTURA DE UN FICHERO DE ENTRADA O DE SALIDA HASTA QUE EL PROGRAMA LO NECESITE. 2.- PERMITE REABRIR UN FICHERO QUE HA SIDO CERRADO PREVIAMENTE EN EL MISMO PROGRAMA POR UNA SENTENCIA CLOSE, PARA PROCESARLO DE NUEVO DESDE EL PRINCIPIO. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN OPEN OP1 OPC2 ----- --------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: OPEN OPERANDOS: OP1 : PUEDE SER CUALQUIER FICHERO DE ENTRADA O SALIDA DEL QUIKJOB. (INF, DET, INC, IND, OFA, OFB, OFC Y OFD). SI NO SE ESPECIFICA ASUME INF. OPC2 : OPCIONAL. PERMITE ESPECIFICAR UNA PASSWORD PARA FICHEROS VSAM. _________ | EJEMPLO | |_________| 005 GET INC ATEND 100 IF INC1 IS NOT EQ C'X' GO TO 005. MOVE INC1-1 TO PRT1 .......................... .......................... PRINT GOTO 005

Page 30: Tutorial Quickjob

100 CLOSE INC OPEN INC 110 GET INC ATEND EOJ IF INC1 EQ C'X' GOTO 110. ...................... ...................... GOTO 110

OPTION

QUIKJOB TIENE PREDEFINIDAS UNAS OPCIONES POR DEFECTO, QUE SE GENERAN EN LA INSTALACION DEL PRODUCTO. LA SENTENCIA OPTION, PERMITE CAMBIAR ESTAS OPCIONES DE CONTROL PARA UN DETERMINADO PROGRAMA. SI SE CODIFICA, DEBE SER LA PRIMERA SENTENCIA DEL PROGRAMA. SU FORMATO ES: COLUMNAS ------------------------------------------------------------------- 1...5...10...15...20...25...30...35...40...45...50...55...60...... OPTION LISTA DE PARAMETROS A CAMBIAR SEPARADOS POR COMAS. ------------------------------------------------------------------- LA PALABRA OPTION DEBE ESCRIBIRSE EN LA COLUMNA 1 Y A CONTINUACION Y DEJANDO UNO O MAS ESPACIOS LOS PARAMETROS A CAMBIAR. ALGUNOS DE LOS PARAMETROS QUE SE PUEDEN SUSTITUIR SON:

?EQU=NNNNN : ESPECIFICA EL NUMERO MAXIMO DE EQU EN UN PROGRAMA. EL DEFECTO ES 100. CADA EQU REQUIERE 30 BYTES DE MEMORIA. SE PERMITE CAMBIAR DE 0 A 99999. EL SIGNO ?, ES LA ALMOHADILLA, PERO CON COMO NO SE PUEDE IMPRIMIR SE HA INDICADO CON ESTE CARACTER. CALLCT=NNN : NUMERO MAXIMO DE CALL EN UN PROGRAMA. DEFECTO 5. SE PERMITE CAMBIAR DESDE 1 A 999. CALLSZ=NNN : NUMERO MAXIMO DE PARAMETROS EN UNA CALL. DEFECTO 10. SE PERMITE CAMBIAR DESDE 1 A 999.

EDIT=YES/NO : PERMITE SIMULAR LA EJECUCION O EJECUTAR UN PROGRAMA. YES.- COMPROBACION SINTACTICA SIN EJECUCION. NO.- EJECUTA EL PROGRAMA. NOLIST : NO IMPRIME EL LISTADO FUENTE DEL PROGRAMA. STMTS=NNNNN : NUMERO MAXIMO DE SENTENCIAS IF-GO PERMITIDAS EN UN PROGRAMA. EL DEFECTO ES 250. SE PUEDE CAMBIAR DESDE 1 A 99999.

WSTSIZE=NNNNNNNN : TAMAÑO MAXIMO EN BYTES DEL AREA DE WORKING (WST) EL DEFECTO ES 1000. SE PUEDE CAMBIAR DESDE 0 A 16.384.000, AUNQUE SOLO

Page 31: Tutorial Quickjob

SE PUEDEN REFERENCIAR DIRECTAMENTE 4096. EL RESTO SE PUEDE REFERENCIAR POR PUNTEROS (PTX). _________ | EJEMPLO | |_________| OPTION NOLIST, WSTSIZE=2000, STMTS=400 005 GET INF MOVE INF1-20 TO OFA1 MOVE SPACES TO OFA21-40 WRITE OFA GOTO 005

Page 32: Tutorial Quickjob

PERFORM

INVOCA AL GRUPO DE SENTENCIAS COMPRENDIDO ENTRE EL OPERANDO1 Y EL OPERANDO2 PARA QUE SE EJECUTEN Y DEVUELVE EL CONTROL A LA SIGUIENTE SENTENCIA QUE SIGUE A LA PERFORM. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- ------------- --------------------------------------- NNN PERFORM OP1 THRU OP2 ----- -------------- ---------------------------------------

N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: PERFORM OPERANDOS: OP1 : NUMERO DE SECUENCIA O ETIQUETA DE LA PRIMERA SENTENCIA DEL GRUPO DE SENTENCIAS A EJECUTAR. OP2 : NUMERO DE SECUENCIA O ETIQUETA DE LA ULTIMA SENTENCIA DEL GRUPO DE SENTENCIAS A EJECUTAR. DEBE SER LA SENTENCIA EXIT. _________ | EJEMPLO | |_________| EMPAREJAMIENTO DE DOS FICHEROS. 010 PERFORM 100 THRU 110 /* MANDO LEER REGISTRO INF.

020 PERFORM 200 THRU 210 /* MANDO LEER REGISTRO DET. 050 IF INF1-5 IS HIVALUE AND IF DET1-5 IS HIVALUE GOTO EOJ. /* TERMINO PROCESO.

IF INF1-5 EQ DET1-5 MOVE INF1-50 TO OFA1 MOVE DET1-25 TO OFA51 WRITE OFA PERFORM 100 THRU 110 GOTO 050. IF INF1-5 GT DET1-5 PERFORM 200 THRU 210 GOTO 050. PERFORM 100 THRU 110 GOTO 050. 100 GET INF

Page 33: Tutorial Quickjob

IF VAL196 EQ C'E' /* SI FIN FICHERO INF MOVE HIVALUE TO INF1-5. 110 EXIT. 200 GET DET IF VAL197 EQ C'E' /* SI FIN FICHERO DET MOVE HIVALUE TO DET1-5. 210 EXIT.

PRINT

IMPRIME EL CONTENIDO DEL AREA PRT. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN PRINT OPC1 ----- --------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: PRINT OPERANDOS: OPC1 : OPCIONAL. SE UTILIZA PARA ESPECIFICAR EL ESPACIADO ENTRE LINEAS. POR DEFECTO ANTES DE IMPRIMIR AVANZA UNA LINEA. SI SE ESPECIFICA PUEDE SER: DOUBLESPACE: ANTES DE IMPRIMIR AVANZA DOS LINEAS, ES DECIR, DEJA UNA LINEA EN BLANCO ENTRE LAS IMPRESAS. TRIPLESPACE: ANTES DE IMPRIMIR AVANZA TRES LINEAS, ES DECIR, DEJA DOS LINEAS EN BLANCO ENTRE LAS IMPRESAS. _________ | EJEMPLO | |_________| HDR 1A 1 LISTADO DE RECIBOS HDR 1B PAG. $PG$ HDR 2A 0 POLIZA NUM. RECIBO PRIMA NETA TOT.RECIBO HDR 3A --------- --------------- -------------- -------------- MOVE ZEROS TO WST1-5-P MOVE ZEROS TO WST11-15-P 005 GET INF ATEND 400 MOVE INF1-8 TO PRT4 MOVE INF9-19 TO PRT16 MOVE INF20-24-P TO PRT35 0E MOVE INF25-29-P TO PRT50 0E PRINT ADD INF20-24-P TO WST1-5-P ADD INF25-29-P TO WST11-15-P GOTO 005 400 MOVE C'TOTALES FINALES ...' TO PRT12 MOVE WST1-5-P TO PRT35 0E MOVE WST11-15-P TO PRT50 0E PRINT DOUBLESPACE GOTO EOJ

Page 34: Tutorial Quickjob

PRINTHEX

IMPRIME LOS CARACTERES Y SUS REPRESENTACIONES HEXADECIMALES DE LAS DISTINTAS AREAS DEL QUIKJOB, A EXEPCION DEL AREA PRT . TIENE DOS FORMATOS: UNO PARA LA IMPRESION DE AREAS FIJAS Y OTRO PARA AREAS VARIABLES. LOS FORMATOS POSIBLES SON: N.SEC SENTENCIA OPERANDOS ----- ------------ ---------------------------------------------------- NNN PRINTHEX OP1 (FIJO) NNN PRINTHEX OP1 OP2 (VARIABLE) ----- ------------ --------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: PRINTHEX OPERANDOS:

OP1 : ESPECIFICA EL CAMPO/AREA QUE SE DESEA IMPRIMIR EN HEXADECIMAL. SI NO ES DE LONGITUD VARIABLE, HAY QUE INDICAR LA POSICION DE COMIENZO Y DE FINAL DEL AREA. EJEMPLO: PRINTHEX INF1-75. SI ES DE LONGITUD VARIABLE SOLO SE ESPECIFICA LA POSICION DE COMIENZO, YA QUE LA LONGITUD SE INDICA EN EL OPERANDO2. EL AREA ES IMPRESA EN INCREMENTOS DE 100 OCTETOS O MENOS. SI EL AREA SUPERA LOS 100 OCTETOS SE IMPRIME EL RESTO EN UNA NUEVA LINEA Y ASI SUCESIVAMENTE. OP2 : ESPECIFICA LA LONGITUD DEL CAMPO/AREA A IMPRIMIR. DEBE SER UN CAMPO O LITERAL DE 2 O 4 BYTES EN BINARIO. _________ | EJEMPLO | |_________| IMPRESION HEXADECIMAL REGISTROS LONGITUD VARIABLE. GET INF PRINTHEX INF1 INF1-2-B /* EN INF1-2-B ESTA LA LONGITUD REGISTRO GOTO EOJ RESULTADO --------- INF0001-0024 FRANCISCO GONZALEZ D 0144CDCDCCECD4CDDECDCE4C 080069153923607659135904 0001..05...10...15...20...2

Page 35: Tutorial Quickjob

SAMPLE

SALTA EL NUMERO DE REGISTROS ESPECIFICADOS EN EL OPERANDO1 CADA VEZ QUE SE LEE UN REGISTRO DEL FICHERO ESPECIFICADO EN EL OPERANDO2. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN SAMPLE OP1 OP2 ----- --------- ----------------------------------------------------

N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: SAMPLE OPERANDOS: OP1 : NUMERO DE REGISTROS A SALTAR O IGNORAR. EJEMPLO. SI SE ESPECIFICA 10, LA PRIMERA LECTURA (GET) RECUPERA EL PRIMER REGISTRO, LA SIGUIENTE GET RECUPERA EL REGISTRO 11 Y ASI HASTA EL FINAL DEL FICHERO.

OP2 : NOMBRE DEL AREA DEL FICHERO A TRATAR. ASUME POR DEFECTO INF. VALORES POSIBLES: INF, DET, INC E IND. SI SE ESPECIFICA UNA SENTENCIA LIMITREADS EN COMBINACION CON ESTA SENTENCIA, SOLO LOS REGISTROS ENTREGADOS AL PROGRAMA HACEN DECRECER EL CONTADOR DE LA SENTENCIA LIMITREADS. _________ | EJEMPLO | |_________|

SAMPLE 100 DET 010 GET DET ATEND EOJ MOVE DET1-50 TO OFA1 WRITE OFA GOTO 010.

SET

Page 36: Tutorial Quickjob

PERMITE INICIALIZAR Y MODIFICAR LAS DIRECCIONES DE LOS PUNTEROS DE UN PROGRAMA QUIKJOB. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN SET OP1 OP2 OP3 ----- --------- ----------------------------------------------------

N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: SET OPERANDOS: OP1 : DESCRIBE EL PUNTERO DEL QUIKJOB A INICIALIZAR O MODIFICAR. ESTOS PUNTEROS SON: TSA : PUNTERO QUE DIRECCIONA EL PRIMER BYTE DE LA PRIMERA ENTRADA DE UNA TABLA DEFINIDA POR UN USUARIO. EJEMPLO: MOVE TSA1-8 TO PRT1, MUEVE AL AREA PRT LA PRIMERA ENTRADA DE UNA TABLA (SUPONIEDO ESTA DE 8 BYTES). CON EL OPERANDO2 (UP) SE PODRIAN RECORRER TODAS LAS ENTRADAS DE LA TABLA. TBH : PUNTERO QUE DIRECCIONA LA ENTRADA DE UNA TABLA QUE SE RECUPERA CORRECTAMENTE CON UNA IF .. ONTABLE. PERMITE MODIFICAR LA FUNCION DE LA ENTRADA DE LA TABLA. EJEMPLO: IF INF1-5 IS ONTABLE ADD C'1' TO TBH6-9-P. PTA, PTB, PTC, PTD: CUATRO PUNTEROS GENERALES QUE PERMITEN DIRECCIONAR AREAS DEL QUIKJOB POR DESPLAZAMIENTO, TALES COMO WST, INF, OFA.

EJEMPLO: SET PTA WST1 /* PUNTERO PTA APUNTA A WST1 SET PTA UP 5 /* PUNTERO PTA APUNTA A WST6 MOVE PTA1-5 TO OFA1 /* AHORA MUEVE WST6-10 A OFA1 WRITE OFA

PTR : PUNTERO QUE DIRECCIONA AL PRIMER BYTE DEL STRING QUE SE ENCUENTRA CON LA SENTENCIA WHEN .... INCLUDES ... OP2 : DESCRIBE LA ACCION A REALIZAR SOBRE EL PUNTERO DEL OPERANDO1. INITIAL : SOLO VALIDO CON TSA O TBH EN OPERANDO1. SET TSA INITIAL HACE QUE EL PUNTERO TSA DIRECCIONE LA PRIMERA ENTRADA DE LA TABLA. SET TBH INITIAL HACE QUE TBH DIRECCIONE AL PRIMER BYTE DE LA ULTIMA ENTRADA DE LA TABLA RECUPERADA CON LA SENTENCIA IF .. ONTABLE. SAVE : SOLO VALIDO CON PTA A PTD O PTR. SALVA LAS DIRECCIONES DE ESTOS PUNTEROS, PARA QUE SE PUEDAN UTILIZAR NUEVAMENTE CON OTROS FINES. POSTERIORMENTE SE PUEDEN RECUPERAR CON RESTORE.

Page 37: Tutorial Quickjob

RESTORE : SOLO VALIDO CON PTA A PTD O PTR. RESTAURA LAS DIRECCIONES DE LOS PUNTEROS SALVADOS CON SAVE.

UP : AUMENTA LA DIRECCION DE MEMORIA DEL PUNTERO INDICADO EN EL OP1 CON EL CONTENIDO DEL OP3. DOWN : DISMINUYE LA DIRECCION DE MEMORIA DEL PUNTERO QUE SE ESPECIFIQUE EN EL OP1 CON EL CONTENIDO DEL OP3. CAMPO : SOLO VALIDO CON PTA, PTB, PTC Y PTD EN EL OPERANDO1. PUEDE SER UN AREA DE WORKING, FICHERO, IMPRESORA, ETC., TALES COMO WST1, INF5, DET7, PRT6.

OP3 : SOLO SE UTILIZA CUANDO OPERANDO2 ES UP O DOWN, Y SIRVE PARA INDICAR EL NUMERO DE BYTES A AUMENTAR O DISMINUIR DEL PUNTERO ESPECIFICADO EN OP1. PUEDE SER: - UN LITERAL NUMERICO DESDE 0 A 4095. SE ESCRIBE SIN C' '. - UN CAMPO EBCDIC, EMPAQUETADO O BINARIO, NUMERICO POSITIVO. _________ | EJEMPLO | |_________|

PROGRAMA QUE IMPRIME LA TABLA DE MULTIPLICAR DEL 1 AL 9 EL RESULTADO SERA UN LISTADO DEL SIGUIENTE TIPO. 1X1= 1 2X1= 2 3X1= 3 4X1= 4 5X1= 5 6X1= 6 7X1= 7 8X1= 8 9X1= 9 1X2= 2 2X2= 4 3X2= 6 4X2= 8 5X2=10 6X2=12 7X2=14 8X2=16 9X2=18 1X3= 3 2X3= 6 3X3= 9 4X3=12 5X3=15 6X3=18 7X3=21 8X3=24 9X3=27 ...... ...... ...... ...... ...... ...... ...... ...... ......

1X9= 9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81 EJEMPLO DEL PROGRAMA. EQU CONT1 WST1-2 C'01' /* CONTADOR TAB1 EQU CONT2 WST3-4 C'01' /* CONTADOR TAB2 EQU TAB1 WST11-19 C'123456789' /* TABLA MULTIPLICADOR EQU TAB2 WST21-29 C'123456789' /* TABLA MULTIPLICANDO SET PTB TAB2 /* PUNTERO PTB A TAB2 SET PTA TAB1 /* PUNTERO PTA A TAB1 SET PTC PRT1 /* PUNTERO PTC A PRT1 010 IF CONT1 GT C'09' GOTO 100. MULT PTA1-1 0D BY PTB1-1 0D GIVING WST201-202 0D MOVE PTA1-1 TO PTC1 /* MUEVO ELEMENTO TAB1 A PRT MOVE C'X' TO PTC2 MOVE PTB1-1 TO PTC3 /* MUEVO ELEMENTO TAB2 A PRT MOVE C'=' TO PTC4 MOVE WST201-202 TO PTC5 0E /* MUEVO RESULTADO A PRT SET PTA UP 1 /* INCREMENTO 1 INDICE TAB1 SET PTC1 UP 9 /* INCREMENTO 9 INDICE PRT ADD C'01' TO CONT1 GOTO 010.

Page 38: Tutorial Quickjob

100 PRINT /* IMPRIMO LINEA RELLENA ADD C'01' TO CONT2 IF CONT2 GT C'09' /* COMPRUEBO SI SE LLEGO A 9X9. PRINT /* IMPRIMO ULTIMA LINEA. GOTO EOJ. SET PTB1 UP 1 /* INCREMENTO 1 INDICE TAB2 SET PTA1 DOWN 9 /* VUELVO A 1 EN TAB1 SET PTC1 DOWN 81 /* VUELVO A 1 EN PRT. MOVE C'01' TO CONT1 /* PONGO A 1 EL CONT. DE TAB1 GOTO 010.

SORT

PERMITE CLASIFICAR TODOS LOS REGISTROS DE UN FICHERO DE ENTRADA ANTES DE ENTREGARSELOS AL PROGRAMA . ESTA RUTINA INVOCA AL UTILITY SORT DE LA INSTALACION. SU FORMATO ES:

Page 39: Tutorial Quickjob

N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN SORT FILE OP1 ON OP2 OPC3 OPN OPCN ...... ----- --------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: SORT FILE OPERANDOS: OP1 : NOMBRE DEL AREA DEL FICHERO DE ENTRADA A CLASIFICAR. ESTAS AREAS SON INF, DET, INC E IND. OP2 : NOMBRE DEL CAMPO O AREA A CLASIFICAR DEL FICHERO ESPECIFICADO EN EL OP1. OPC3 : OPCIONAL. DESCRIBE EL ORDEN DE CLASIFICACION. POR DEFECTO ASUME ASCENDENTE. (D) ORDENA EN DESCENDENTE. DEBE IR ENTRE PARENTESIS. OPN : SIGUIENTE CAMPO A CLASIFICAR. LO MISMO QUE PARA EL OPERANDO OP2. OPCN : ORDEN DE CLASIFICACION DEL OPN. LO MISMO QUE PARA EL OPERANDO OPC3. LIMITACIONES: - TODOS LOS OPERANDOS DEBEN ESTAR EN UNA SENTENCIA. - LA SUMA DE TODOS LOS CAMPOS DE ORDENACION NO DEBEN EXCEDER DE 256 BYTES. - EL NUMERO DE CAMPOS A CLASIFICAR NO DEBE SUPERAR LOS 12. _________ | EJEMPLO | |________|

05 SORT FILE INF ON INF4-5-P (D) INF1-3 INF7-12 (D)

010 GET INF MOVE INF1-3 TO PRT1 MOVE INF30-45 TO PRT6 PRINT GOTO 010.

SUB

RESTA AL CONTENIDO DEL SEGUNDO OPERANDO EL VALOR DEL PRIMER OPERANDO, Y DEJA EL NUEVO RESULTADO EN EL SEGUNDO OPERANDO. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN SUB OP1 FR OP2 ----- -------- ----------------------------------------------------

Page 40: Tutorial Quickjob

N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: SUB OPERANDOS: OP1 : UNA VARIABLE CON CONTENIDO NUMERICO, O UNA CONSTANTE NUMERICA. OP2 : UNA VARIABLE CON CONTENIDO NUMERICO. TANTO OP1 COMO OP2 PUEDEN SER VARIABLES EBCDIC, EMPEQUETADO O BINARIO. _________ | EJEMPLO | |_________| 005 EQU DEVOL INF5-7-B EQU PRIMA INF11-15-P EQU TOTREC WST1-5-P ZEROES 008 MOVE ZEROS TO WST11-19 010 GET INF ATEND 900 MOVE PRIMA TO TOTREC SUB DEVOL FR TOTREC MOVE C'PRIMA.....' TO PRT1 MOVE PRIMA TO PRT12 0E MOVE C'DEVOLUCC..' TO PRT21 MOVE DEVOL TO PRT32 0E MOVE C'TOTAL RECIBO.' TO PRT41 MOVE TOTREC TO PRT62 0E ADD TOTREC TO WST11-19 PRINT GOTO 010 900 MOVE 'TOTAL FINAL...' TO PRT1 MOVE WST11-19 TO PRT21 0E PRINT GOTO EOJ

TABLSPEC

DEFINE EL FORMATO DE UNA TABLA, ES DECIR, EL NUMERO DE ELEMENTOS Y SI CADA ELEMENTO CONSTA DE ARGUMENTO Y FUNCION O SOLAMENTE DE ARGUMENTO, ASI COMO EL FORMATO DE LOS MISMOS. SOLO SE PERMITE UNA SENTENCIA TABLSPEC POR PROGRAMA. LOS ELEMENTOS DE LA TABLA SE PUEDEN INCLUIR AL FINAL DEL PROGRAMA O BIEN DESDE UN FICHERO, PROGRAMANDO LA RUTINA DE CARGA. SU FORMATO ES:

N.SEC SENTENCIA OPERANDOS ----- ------------- ----------------------------------------------------

Page 41: Tutorial Quickjob

NNN TABLSPEC OP1 OP2 OP3 OPC4 OPC5 OPC6 OPC7 ----- ------------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: TABLSPEC OPERANDOS: OP1 : POS. 14-17. NUMERO MAXIMO DE ELEMENTOS EN LA TABLA. PARA CADA EJECUCION DEL PROGRAMA, DEBE CARGARSE AL MENOS UN ELEMENTO, Y NO DEBEN SUPERAR EL NUMERO MAXIMO ESPECIFICADO. OP2 : POS. 19-20. POSICION DE COMIENZO DEL CAMPO ARGUMENTO EN EL REGISTRO DE CARGA QUE CONTIENE LOS DATOS DE LA TABLA. OP3 : POS. 22-23. LONGITUD DEL CAMPO ARGUMENTO DE LA TABLA. NO PUEDE EXCEDER DE 80 BYTES SI SE USA CON IF .. ONTABLE. OPC4 : POS. 25. OPCIONAL. DESCRIBE EL FORMATO DEL CAMPO ARGUMENTO. P - EMPAQUETADO. EN BLANCO SI EBCDIC. OPC5 : POS. 27-28. OPCIONAL. SOLO SI LA TABLA TIENE CAMPO DE FUNCION. DEFINE LA POSICION INCIAL DEL CAMPO EN EL REGISTRO DE CARGA. OPC6 : POS. 30-31. OPCIONAL. LONGITUD DEL CAMPO DE FUNCION DE LA TABLA. OPC7 : POS. 33-36. OPCIONAL. LIST PARA LISTAR LA TABLA.

_________ | EJEMPLO | |_________| EJEMPLO DE UTILIZACION DE UNA TABLA INCLUIDA AL FINAL DEL PROGRAMA. 1...5...10... 15 17 1920 2223. 2728 3031 010 TABLSPEC 0100 01 07 08 07 020 GET /* LEO REGISTRO. IF INF1-7 IS ONTABLE /* BUSCO INF1-7 EN ARGUMENTO TABLA MOVE TBH8-14 TO INF1-7. /* REEMPLAZO INF1-7 CON CAMPO FUNCION MOVE INF1-80 TO OFA1 /* MUEVO REG ENTRADA A SALIDA. WRITE OFA /* GRABO REGISTRO SALIDA. GO TO 020. /* BIFURCO A LEER NUEVO REGISTRO. END 1111111SEAT /* 1111111=ARGUMENTO, SEAT=FUNCION. 3333333RENAULT 7777777PEUGEOT 8888888FIAT

EJEMPLO DE UTILIZACION DE UNA TABLA CARGADA DESDE UN FICHERO.

1...5...10...15...20...25...30...35...40...45...50...55...

010 TABLSPEC 0100 01 07 08 07 SET TSA INITIAL /* DIRECCIONO PRIMERA ENTRA TABLA. MOVE C'000' TO WST1-3 /* INICIALIZO CONTADOR ELEM. TABLA 020 GET DET ATEND 100 /* LEO REGISTRO DE DATOS TABLA. MOVE DET1-14 TO TSA1-14 /* ALMACENO EL ELEMENTO EN TABLA. SET TSA UP 14 /* DIRECCION SIGUIENTE ENTRADA TABLA. ADD C'1' TO WST1-3 /* SUMO 1 AL CONTADOR ELEM. TABLA.

Page 42: Tutorial Quickjob

IF WST1-3 GT C'100' /* COMPRUEBO LIMITE ENTRADAS. MOVE C'TABLA LLENA' TO PRT1 /* AUTOEXPLICATIVO PRINT GOTO EOJ. /* CANCELO PROCESO. GOTO 020 /* BIFURCO A LEER UN NUEVO ELEMENTO.

100 SET TSA INITIAL /* DIRECCIONO PRIMERA ENTRADA TABLA. 120 GET INF ATEND EOJ / * LEO FICHERO DE DATOS. IF INF1-7 IS ONTABLE /* BUSCO INF1-7 EN ARGUMENTO TABLA. MOVE TBH8-14 TO INF1-7. /* REEMPLAZO INF1-7 CON FUNCION

MOVE INF1-80 TO OFA1 /* MUEVO REG ENTRADA A SALIDA. WRITE OFA /* GRABO REGISTRO SALIDA. GO TO 120. /* BIFURCO A LEER NUEVO REGISTRO. END EN ESTE EJEMPLO SE PRESUPONE QUE EL FICHERO QUE CONTIENE LOS DATOS DE LA TABLA ESTA ORDENADO POR EL ARGUMENTO (COLUMNAS 1-7).

TRACE PERMITE SEGUIR EL FLUJO DE UN PROGRAMA. EL ORDEN Y NOMBRE DE LAS SENTENCIAS SON LISTADAS SEGUN SE EJECUTAN. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ----- --------- ---------------------------------------------------- NNN TRACE OP1 ----- -------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: TRACE OPERANDOS: OP1 : ESPECIFICA EL TIPO DE TRACE DESEADO.

Page 43: Tutorial Quickjob

ALL - IMPRIME EL NOMBRE DE TODAS LAS SENTENCIAS QUE SE EJECUTAN EN EL PROGRAMA POR EL ORDEN DE EJECUCION.

LAST50 - IMPRIME EL NOMBRE DE LAS ULTIMAS 50 SENTENCIAS DEL PROGRAMA EN EL ORDEN EN QUE SE EJECUTAN Y SOLO SI SI EL PROGRAMA CANCELA POR UN PROGRAM CHECK. OFF - DESACTIVA LA RUTINA DE TRACE. ¡! SE RECOMIENDA ESPECIFICAR LA SENTENCIA TRACE LAST50, EN LAS PRIMERAS PRUEBAS DE UN PROGRAMA ¡!.

_________ | EJEMPLO | |_________| TRACE LAST50 010 GET INF MOVE ...... WRITE ...... GOTO 010. ------------- OTRO EJEMPLO ---------------------

010 GET DET IF DET10-12 GT C'45' TRACE ALL /* SOLO HACE EL TRACE DESDE MOVE .... MOVE ...... /* HASTA ADD ..... GOTO 010. ADD ..... TRACE OFF GOTO 010. _________________________ FIN DEL DOCUMENTO ____________________________

WHEN

PERMITE EXPLORAR EL OPERANDO1 DE IZQUIERDA A DERECHA, (OPCIONALMENTE DE DERECHA A IZQUIERDA) BUSCANDO EL CONTENIDO ESPECIFICADO EN EL OP2. SI LO ENCUENTRA DEJA EN EL PUNTERO PTR, LA DIRECCION DEL PRIMER BYTE DONDE SE ENCUENTRA EL CONTENIDO BUSCADO EN EL OPERANDO1. EL NUMERO DE OCTETOS EXPLORADOS SE ALMACENA EN EL AREA VAL225-228-B. SU FORMATO ES:

N.SEC SENTENCIA OPERANDOS ------- --------- ---------------------------------------------------- NNN WHEN OP1 INCLUDES OP2 OPC3 OPC4 OPC5 ------- --------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: WHEN OPERANDOS:

Page 44: Tutorial Quickjob

OP1 : CAMPO A SER EXPLORADO. SI ES DE LONGITUD FIJA MAXIMO 4096. SI ES DE LONGITUD VARIABLE, LA LONGITUD SE DA EN EL OPERANDO3. OP2 : DEFINE EL ARGUMENTO DE BUSQUEDA A EXPLORAR EN EL OPERANDO1. PUEDE SER: - UN CAMPO O UN LITERAL TIPO C'XXXX' O X'NNNN'. - LAS CONSTANTES SPACES, BLANKS, NONSPACES, NONBLANKS, SOLO UN BYTE. OPC3 : OPCIONAL. DEFINE LA LONGITUD DE LA VARIABLE DEL OPERANDO1. OPC4 : OPCIONAL. PARA INDICAR LA BUSQUEDA DE DERECHA A IZQUIERDA. SE CODIFICA, REVERSE O SIMPLEMENTE R. OPC5 : OPCIONAL. PARA ESPECIFICAR EL OPERADOR LOGICO OR O AND. SI NO SE ESPECIFICA OR Y EXISTE MAS DE UN WHEN O IF SEGUIDOS ASUME AND. _________ | EJEMPLO | |_________|

010 GET INF WHEN INF1-80 INCLUDES C'PEDRO' AND /* SI INF1-80 TIENE PEDRO IF INF1-2 EQ C'05' /* Y REGISTRO ES 05 Y WHEN INF20-80 INCLUDES C'13021992' /* INF20-80 TIENE 13021992 MOVE INF1-80 TO OFA1 /* MUEVE INF1-80 A SALIDA WRITE OFA. /* GRABA REGISTRO. GOTO 010. /* BIFURCA A LEER.

WRITE

ESCRIBE EL CONTENIDO DEL AREA ESPECIFICADA EN EL OPERANDO1 EN EL FICHERO DE SALIDA AL QUE CORRESPONDA DICHO AREA. SU FORMATO ES: N.SEC SENTENCIA OPERANDOS ------- --------- ---------------------------------------------------- NNN WRITE OP1 ------- --------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: WRITE OPERANDOS: OP1 : ADMITE LOS VALORES OFA, OFB, OFC O OFD: OFA.- PRIMER FICHERO DE SALIDA. OFB.- SEGUNDO FICHERO DE SALIDA. OFC.- TERCER FICHERO DE SALIDA. OFD.- CUARTO FICHERO DE SALIDA.

SI EL REGISTRO ES DE LONGITUD VARIABLE, PREVIAMENTE HAY QUE MOVER LA LONGITUD DEL MISMO A LAS POSICIONES 1-2 EN BINARIO DEL REGISTRO Y LOS DATOS COMENZARAN EN LA POSICION 5. _________

Page 45: Tutorial Quickjob

| EJEMPLO | |_________| 010 GET INF ATEND EOJ MOVE INF1-40 TO OFA1 WRITE OFA MOVE INF1-25 TO OFB1 MOVE INF41-50 TO OFB26 WRITE OFB GOTO 010.

INTERFASES CON B.D. Y MODULOS DL/I. INTRODUCCION

EL QUIKJOB PERMITE TRATAR B.D. DL/I (IMS), BIEN DIRECTAMENTE O BIEN A TRAVES DE MODULOS O SUBPROGRAMAS. PARA ACCEDER A B.D. IMS DIRECTAMENTE DESDE UN QUIKJOB SE UTILIZA LA INTERFASE QUIKIMS. (VER APARTADO EN ESTA SECCION). SI LO QUE SE UTILIZA SON MODULOS QUE, ELLOS MISMOS, ACCEDEN A ESTAS B.D., SE LES DEBE PASAR LA/S DIRECCION/ES DE LA/S DISTINTAS BB.DD. A LAS QUE ACCEDEN MEDIANTE LAS PCB'S CORRESPONDIENTES. VER APARTADO INTERFASE CON MODULOS ACCESO A B.D. DL/I.

INTERFASE QUIKIMS

PERMITE ACCEDER TANTO EN CONSULTA, COMO EN ACTUALIZACION A B.D. IMS. EL FORMATO DE LA SENTENCIA A UTILIZAR ES EL SIGUIENTE: N.SEC SENTENCIA OPERANDOS ----- ---------------- ---------------------------------------------------- NNN CALL QJBTDLI OP1 OP2 OP3 OPC4 ...... OPC10 ----- ---------------- ---------------------------------------------------- N.SEC : NUMERO DE SECUENCIA O ETIQUETA A BIFURCAR. SENTENCIA: CALL QJBTDLI (INVOCA A LA RUTINA DE INTERFASE QUIKIMS).

Page 46: Tutorial Quickjob

OPERANDOS: OP1 : ES EL PARAMETRO FUNCION DE UNA LLAMADA AL DL/I. DEBE TENER UNA LONGITUD DE 4 BYTES, Y SE PUEDE DIRECCIONAR COMO UNA VARIABLE O COMO UNA CONSTANTE DEL TIPO C' '. EJEMPLOS. C'GN '. C'GNP '. C'GHN '. C'ISRT'. OP2 : ES EL PARAMETRO PCBNAME DE UNA LLAMADA AL DL/I. SE PERMITEN HASTA 16 DIRECCIONES DE PCB'S EN UNA LLAMADA. SE DEBEN UTILIZAR DOS DIGITOS NUMERICOS (EJEMPLO. C'02') QUE CORRESPONDEN A LA POSICION RELATIVA QUE OCUPA LA PCB USADA DENTRO DE LA PSB. QUIKJOB TIENE PREDEFINIDA UN AREA PCB ACCESIBLE POR PROGRAMA DONDE EL IMS COLOCA UNA SERIE DE INFORMACION DESPUES DE UNA CALL QJBTDLI. ESTE AREA DE PCB TIENE LA SIGUIENTE ESTRUCTURA: PCB1-8 NOMBRE-BD. PCB9-10 NIVEL-SEGMENTO PCB11-12 CODIGO-ESTADO PCB13-16 OPCION-DE-PROCESO PCB17-20-B RESERVADO-DL/I PCB21-28 NOMBRE-SEGMENTO PCB29-32-B LONGITUD-CLAVE-DEL-SEGMENTO PCB33-36-B NUMERO-SEGMENTOS-SENSIBLES. PCB37-NN CLAVE-CONCATENADA. ANTES DE LA PRIMERA CALL QJBTDLI, ESTE AREA DE PCB APUNTA A LA PRIMERA PCB DENTRO DE LA PSB. DESPUES DE LA CALL QJBTDLI APUNTARA A LA PCB QUE SE HAYA ESPECIFICADO EN EL OP2. EJEMPLO: CALL QJBTDLI C'GU ' C'02' ..... ETC. PCB11-12 TENDRA EL CODIGO DE ESTADO DEVUELTO DEL ACCESO A LA B.D. QUE DIRECCIONA LA PCB NUM. 2 DENTRO DE LA PSB. OP3 : ES EL PARAMETRO QUE CORRESPONDE AL AREA DE ENTRADA/SALIDA, DONDE EL IMS/DB DEJARA EL SEGMENTO RECUPERADO O DONDE EL PROGRAMA ALMACENARA LOS DATOS QUE EL IMS/DB UTILIZARA PARA ACTUALIZAR LOS SEGMENTOS DE LA B.D. ESTE AREA PUEDE SER INF, WST, OFA, ETC. OPC4 : SE UTILIZAN PARA DIRECCIONAR LAS DISTINTAS SSA'S QUE SE USAN A EN UN ACCESO A UNA B.D.. MAXIMO 7 SSA'S POR CADA CALL QJBTDLI. OPC10 ESTOS OPERANDOS SON OPCIONALES. SE DEBEN CODIFICAR CON LAS REGLAS IMS/DB, SEGUN LA NECESIDAD DEL PROGRAMA. PUEDE SER UNA VARIABLE O UN LITERAL DEL TIPO C' '. EJEMPLOS: SSA NO CALIFICADA. CALL QJBTDLI C'GU ' C'01' WST1-100 C'NOMBSEGM ' SSA CALIFICADA. MOVE C'NOMBSEGM(CLAVEX EQ )' TO WST1-25 MOVE C'12345' TO WST20-24 CALL QJBTDLI C'GU ' C'01' WST1-100 WST1-25 _________ | EJEMPLO |

Page 47: Tutorial Quickjob

|_________| EQU PCB-BD PCB1-8 EQU PCB-STATUS PCB11-12 EQU SEGM WST1-120 100 CALL QJBTDLI C'GN ' C'01' SEGM C'SEGRAIZ ' IF PCB-STATUS EQ C'GB' /* FIN B.D. GOTO EOJ. IF PCB-STATUS NOT EQ C' ' /* SI NO ES CORRECTO PRINTHEX PCB1-50 /* IMPRIMO AREA PCB EN HEX. ABEND. MOVE SEGM TO OFA1 /* MUEVO SEGMENTO A OFA1 WRITE OFA GOTO 100.

INTERFASE CON MODULOS ACCESO A B.D. DL/I

QUIKJOB PERMITE LLAMAR A MODULOS O SUBPROGRAMAS QUE ACCEDEN TANTO EN CONSULTA COMO EN ACTUALIZACION A BB.DD. IMS. PARA ELLO SE DEBE TENER EN CUENTA LOS PARAMETROS QUE ESPERA RECIBIR EL MODULO EN SU LINKAGE, ESPECIALMENTE LAS PCB'S. VEAMOS UN EJEMPLO: MODULO: RGNCC001 LINKAGE SECTION. (ACCEDE A DOS BASES DE DATOS) 01 PCB-BD1. 10 BD1-NOMBD PIC X(8). 10 FILLER PIC X(2). 10 BD1-CODES PIC X(2). 01 PCB-BD2. 10 BD2-NOMBD PIC X(8). 10 FILLER PIC X(2). 10 BD2-CODES PIC X(2).

01 DATOS-BUSQUEDA. 10 CLAVE-ACCESO PIC X(5). 01 DATOS-RETORNO. 10 COD-RETORNO PIC X(4). 10 TXT-RETORNO PIC X(72). 10 DATOS-SEGMENTO PIC X(120). PROCEDURE DIVISION USING PCB-BD1 PCB-BD2 DATOS-BUSQUEDA DATOS-RETORNO. ---------------------------------------------------------------------------------------------------- _________ | EJEMPLO | |_________|

Page 48: Tutorial Quickjob

EJEMPLO DE UN QUIKJOB QUE UTILIZA EL MODULO RGNCC001 SET PTA PCB1 /* APUNTO PTA A PRIMERA PCB. CALL QJBTDLI C'GU ' C'02' WST1 /* DIRECCIONAR PCB 2 DE PSB. IF PCB11-12 EQ C' ' /* SI CODIGO ESTADO CORRECTO SET PTB PCB1 /* APUNTO PTB A SEGUNDA PCB. GOTO 010. PRINTHEX PCB1-50 /* IMPRIMO EN HEX. PCB1-50 ABEND. 010 GET INF /* LEO CLAVE SEGMENTO A ACCEDER. CALL RGNCC001 PTA1 PTB1 INF1-5 WST1 /* LLAMO A RUTINA Y PASO LAS /* DIRECCIONES DE PARAMETROS. /* PTA1 = PRIMERA PCB. /* PTA2 = SEGUNDA PCB.

IF WST1-4 EQ C'0000' /* SI RETORNO RGNCC001 ES OK MOVE WST5-124 TO OFA1 /* MUEVO DATOS SEGMENTO A OFA1. WRITE OFA /* GRABO DATOS EN FICHERO OFA. GO TO 010. /* BIFURCO A LEER NUEVA CLAVE. MOVE C'ERROR EN RGNCC001. RETORNO=' TO PRT1 MOVE WST1-4 TO PRT25 MOVE WST5-76 TO PRT29 PRINT GOTO EOJ.

PROCEDIMIENTOS DE EJECUCION INTRODUCCION

PARA EJECUTAR UN PROGRAMA ESCRITO EN QUIKJOB, ES NECESARIO INVOCARLO MEDIANTE UN PROCEDIMIENTO. EXISTEN DISTINTOS PROCEDIMIENTOS SEGUN EL TIPO DE QUIKJOB QUE QUERAMOS EJECUTAR. EN EL APARTADO RELACION DE PROCEDIMIENTOS DE ESTA SECCION SE INDICAN LOS PROCEDIMIENTOS A UTILIZAR SEGUN EL CASO.

PROCEDIMIENTO UTILIZAR EN DESARROLLO CON: ------------- ----------------------------------------------------- DLIQJBD QUIKJOB CON ACCESO A BB.DD. DL/I (INCLUIDO MODULOS) DSNQJBD QUIKJOB CON MODULOS QUE ACCEDEN A B.D. DB2. QJBRUND QUIKJOB SIN ACCESO A B.D. DL/I NI DB2. NOTA: TODOS ESTOS PROCEDIMIENTOS ESTAN DOCUMENTADOS EN EL MANUAL DE DESARROLLO AXA-AURORA, EN EL CAPITULO DE PROCEDIMIENTOS.

Page 49: Tutorial Quickjob