Ilustraremos el uso de los comandos básicos que nos permitirán realizar las tareas mas comunes con nuestro AWS, DSN, JOB o LIB.
Para ello tomaremos como ejemplo el programa básico ABCBPRU que lee un archivo secuencial para explicar las partes
que componen un programa Cobol batchero .
> APPLID(ROSCOE20) USER(XXX,)
> AWS() SCRL FULL COLS 00001 00072 PAU(XXX.SRC) A
> <...+....1....+....2....+....3....+....4....+....5....+....6....+....7..
...... ============================ T O P =============
000001 *****************************************************************
000002 * INFORMACION ACERCA DEL MANTENIMIENTO DEL PROGRAMA *
000003 *****************************************************************
000004 ID DIVISION.
000005 *===========*
000006 PROGRAM-ID. PROBPRU.
000007 AUTHOR. RICHARD PEREZ CENTENO.
000008
000009 ENVIRONMENT DIVISION.
000010 *====================*
000011 CONFIGURATION SECTION.
000012 INPUT-OUTPUT SECTION.
000013 FILE-CONTROL.
000014
000015 SELECT DATAOP ASSIGN TO DATAOPI
000016 FILE STATUS IS STAT-DATAOP.
000017
000018 DATA DIVISION.
000019 *=============*
000020 FILE SECTION.
000021 *-------------*
000022
000023 FD DATAOP
000024 LABEL RECORD ARE STANDARD
000025 BLOCK CONTAINS 00 RECORDS.
000026 COPY CPYRPRUE.
000027
000028
000029 WORKING-STORAGE SECTION.
000030 *-----------------------*
000031 77 STAT-DATAOP PIC 9(02) VALUE 0.
000032 77 WS-ERROR PIC 9(02) VALUE 0.
000033
000034 01 VARIOS.
000035 02 W-TOT-SOLES PIC S9(13)V99 COMP-3 VALUE +0.
000036 02 W-TOT-DOLAR PIC S9(13)V99 COMP-3 VALUE +0.
000037
000038 01 WF-FIN-DATAOP PIC 9(01) VALUE 0.
000039 88 FIN-FILE-DATAOP VALUE 1.
000040 77 W-LEIDOS-DATAOP PIC 9(05) VALUE 0.
000041
000042
000043 PROCEDURE DIVISION.
000044 *===================*
000045 PERFORM INICIA.
000046
000047 PERFORM PROCESA THRU PROCESA-FIN UNTIL FIN-FILE-DATAOP.
000048
000049 PERFORM FINALIZA.
000050 *
000051 INICIA.
000052 *======*
000053 DISPLAY '*===============================* '
000054 DISPLAY '*== INICIO PROGRAMA XXXXXXX ==* '
000055 DISPLAY '*===============================* '
000056
000057
000058 MOVE 16 TO RETURN-CODE.
000059
000060 OPEN INPUT DATAOP.
000061
000062 IF STAT-DATAOP NOT EQUAL '00'
000063 DISPLAY '*===============================*'
000064 DISPLAY '** ERROR AL ABRIR ARCHIVOS **'
000065 DISPLAY '*===============================*'
000066 DISPLAY '** STAT-DATAOP : ' STAT-DATAOP
000067 DISPLAY '*===============================*'
000068 MOVE 1 TO WS-ERROR
000069 PERFORM FINALIZA
000070 END-IF.
000071
000072 PERFORM LEER-DATAOP.
000073
000074 PROCESA.
000075 *=======*
000076 DISPLAY ' PROCESO NRO OPE ' REG-NRO-DOC
000077 PERFORM LEER-DATAOP.
000078
000079 PROCESA-FIN.
000080 *-----------*
000081 EXIT.
000082
000083 FINALIZA.
000084 *--------*
000085 DISPLAY '**LEIDOS ' W-LEIDOS-DATAOP.
000086
000087
000088 CLOSE DATAOP.
000089
000090 IF STAT-DATAOP NOT EQUAL '00'
000091 DISPLAY '*===============================*'
000092 DISPLAY '** ERROR AL CERRAR ARCHIVOS **'
000093 DISPLAY '*===============================*'
000094 DISPLAY '** STAT-DATAOP : ' STAT-DATAOP
000095 DISPLAY '*===============================*'
000096 MOVE 1 TO WS-ERROR
000097 END-IF.
000098
000099 IF WS-ERROR = 1
000100 MOVE 16 TO RETURN-CODE
000101 ELSE
000102 MOVE 00 TO RETURN-CODE
000103 END-IF
000104
000105 DISPLAY 'FIN DEL PROGRAMA XXXXXXX'
000106
000107 STOP RUN.
000108
000109 LEER-DATAOP.
000110 *------------*
000111 READ DATAOP AT END
000112 MOVE 1 TO WF-FIN-DATAOP.
000113
000114 IF WF-FIN-DATAOP = 0
000115 IF STAT-DATAOP NOT EQUAL '00'
000116 DISPLAY '*============================*'
000117 DISPLAY '** ERROR AL LEER DATAOP **'
000118 DISPLAY '*============================*'
000119 DISPLAY '** STAT-DATAOP : ' STAT-DATAOP
000120 DISPLAY '*============================*'
000121 MOVE 1 TO WS-ERROR
000122 PERFORM FINALIZA
000123 ELSE
000124 ADD 1 TO W-LEIDOS-DATAOP
000125 DISPLAY '**LEIDOS ' W-LEIDOS-DATAOP
000126 DISPLAY '**WF-FIN-DATAOP ' WF-FIN-DATAOP
000127 END-IF
000128 END-IF.
000129
COMANDO INCL
Localiza y muestra todas las lineas que contienen una cadena especifica.
Ingresas:
incl leer
> APPLID(ROSCOE20) USER(XXX,)
> AWS() SCRL FULL COLS 00001 00072 PAU(XXX.SRC) A
> <...+....1....+....2....+....3....+....4....+....5....+....6....+....7..
Obtienes:
> AWS07 LINES 72 THRU BOTTOM SEARCHED WITH 4 MATCHES
> AWS() SCRL FULL COLS 00001 00072 PAU(XXX.SRC) A
> <...+....1....+....2....+....3....+....4....+....5....+....6....+....7..
000072 PERFORM LEER-DATAOP.
000077 PERFORM LEER-DATAOP.
000109 LEER-DATAOP.
000117 DISPLAY '** ERROR AL LEER DATAOP **'
También tiene otros parametros como el rango de lineas a buscar, y el numero de lineas como resultado que podamos desear.
COMANDO NEXT
Localiza la siguiente ocurrencia de una cadena especifica sobre la data atachada(AWS, DSN,JOB,LIB). Cabe mencionar que posee parametros para indicar el rango de columnas a buscar sobre la data atachada.
Ingresas:
n dataop
> APPLID(ROSCOE20) USER(XXX,)
> AWS() SCRL FULL COLS 00001 00072 PAU(XXX.SRC) A
> <...+....1....+....2....+....3....+....4....+....5....+....6....+....7..
000001 *****************************************************************
000002 * INFORMACION ACERCA DEL MANTENIMIENTO DEL PROGRAMA *
000003 *****************************************************************
000004 ID DIVISION.
000005 *===========*
000006 PROGRAM-ID. PROBPRU.
000007 AUTHOR. RICHARD PEREZ CENTENO.
000008
000009 ENVIRONMENT DIVISION.
000010 *====================*
000011 CONFIGURATION SECTION.
000012 INPUT-OUTPUT SECTION.
000013 FILE-CONTROL.
000014
000015 SELECT DATAOP ASSIGN TO DATAOPI
000016 FILE STATUS IS STAT-DATAOP.
000017
000018 DATA DIVISION.
000019 *=============*
000020 FILE SECTION.
000021 *-------------*
Obtienes:
> APPLID(ROSCOE20) USER(XXX,)
> AWS() SCRL FULL COLS 00001 00072 PAU(XXX.SRC) A
> <...+....1....+....2....+....3....+....4....+....5....+....6....+....7..
000015 SELECT DATAOP ASSIGN TO DATAOPI
000016 FILE STATUS IS STAT-DATAOP.
000017
000018 DATA DIVISION.
000019 *=============*
000020 FILE SECTION.
000021 *-------------*Otra opción es indicando el rango de columnas a buscar.
Ingresas:
n 40 70 dataop
> APPLID(ROSCOE20) USER(XXX,)
> AWS() SCRL FULL COLS 00001 00072 PAU(XXX.SRC) A
> <...+....1....+....2....+....3....+....4....+....5....+....6....+....7..
000001 *****************************************************************
000002 * INFORMACION ACERCA DEL MANTENIMIENTO DEL PROGRAMA *
000003 *****************************************************************
000004 ID DIVISION.
000005 *===========*
000006 PROGRAM-ID. PROBPRU.
000007 AUTHOR. RICHARD PEREZ CENTENO.
000008
000009 ENVIRONMENT DIVISION.
000010 *====================*
000011 CONFIGURATION SECTION.
000012 INPUT-OUTPUT SECTION.
000013 FILE-CONTROL.
000014
000015 SELECT DATAOP ASSIGN TO DATAOPI
000016 FILE STATUS IS STAT-DATAOP.
000017
000018 DATA DIVISION.
000019 *=============*
000020 FILE SECTION.
000021 *-------------*
Obtienes:
> APPLID(ROSCOE20) USER(XXX,)
> AWS() SCRL FULL COLS 00001 00072 PAU(XXX.SRC) A
> <...+....1....+....2....+....3....+....4....+....5....+....6....+....7..
000016 FILE STATUS IS STAT-DATAOP.
000017
000018 DATA DIVISION.
000019 *=============*
000020 FILE SECTION.
000021 *-------------*
COMANDO DELETE LINEA
Borra una o mas líneas.
El siguiente ejemplo borra una linea especifica
Ingresas:
000001 *****************************************************************
000002 * INFORMACION ACERCA DEL MANTENIMIENTO DEL PROGRAMA *
000003 *****************************************************************
000004 ID DIVISION.
000005 *===========*
d00006 PROGRAM-ID. PROBPRU.
000007 AUTHOR. RICHARD PEREZ CENTENO.
000008
000009 ENVIRONMENT DIVISION.
000010 *====================*
000011 CONFIGURATION SECTION.
000012 INPUT-OUTPUT SECTION.
000013 FILE-CONTROL.
000014
000015 SELECT DATAOP ASSIGN TO DATAOPI
Obtienes:
000001 *****************************************************************
000002 * INFORMACION ACERCA DEL MANTENIMIENTO DEL PROGRAMA *
000003 *****************************************************************
000004 ID DIVISION.
000005 *===========*
000007 AUTHOR. RICHARD PEREZ CENTENO.
000008
000009 ENVIRONMENT DIVISION.
000010 *====================*
000011 CONFIGURATION SECTION.
000012 INPUT-OUTPUT SECTION.
000013 FILE-CONTROL.
000014
000015 SELECT DATAOP ASSIGN TO DATAOPI
El siguiente ejemplo borra un bloque de lineas
Ingresas:
000001 *****************************************************************
000002 * INFORMACION ACERCA DEL MANTENIMIENTO DEL PROGRAMA *
000003 *****************************************************************
000004 ID DIVISION.
000005 *===========*
dd0006 PROGRAM-ID. PROBPRU.
000007 AUTHOR. RICHARD PEREZ CENTENO.
000008
dd0009 ENVIRONMENT DIVISION.
000010 *====================*
000011 CONFIGURATION SECTION.
000012 INPUT-OUTPUT SECTION.
000013 FILE-CONTROL.
000014
000015 SELECT DATAOP ASSIGN TO DATAOPI
Obtienes:
000001 *****************************************************************
000002 * INFORMACION ACERCA DEL MANTENIMIENTO DEL PROGRAMA *
000003 *****************************************************************
000004 ID DIVISION.
000005 *===========*
000011 CONFIGURATION SECTION.
000012 INPUT-OUTPUT SECTION.
000013 FILE-CONTROL.
000014
000015 SELECT DATAOP ASSIGN TO DATAOPI
El comando DELETE LINE presenta otras opciones como por ejemplo DB que elimina desde la linea indicada hasta la ultima linea, el DU que elimina desde la linea indicada hasta la primera línea, etc.