Cobol - Compilar y ejecutar programa cobol desde Mainframe

 
Vista:
sin imagen de perfil

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Manuel (6 intervenciones) el 03/01/2015 12:40:13
Buenas,

Primero que nada aclarar hasta donde he llegado:
He realizado diversos ejercicios usando el compilador RMCOBOL en windows.

Posteriormente he instalado en mi pc un emulador de mainframe Hercules.
En dicho emulador he realizado un programa básico de cobol que solo muestre un display, y he creado un jcl que lo compile y lo ejecute.

Ahora estoy intentando ejecutar otro programa cobol, esta vez mas complejo, que acepte un fichero de entrada y me escriba en dos ficheros de salida. El problema, compila y ejecuta sin un solo fallo, pero no modifica los ficheros correspondientes.

Este es el fichero de compilación.
****** ***************************** Top of Data ******************************
000100 //P390XCOB JOB (),'CICS ',NOTIFY=&SYSUID,
000200 // CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1)
000800 //PROC JCLLIB ORDER=ADCD.Z110.PROCLIB
001200 // EXEC PROC=IGYWCLG,MEMBER=PROGRAM1
001210 //COBOL.STEPLIB DD DSN=IGY410.SIGYCOMP,DISP=SHR
001600 //COBOL.SYSIN DD DISP=SHR,DSN=P390.CURSOOLD.COBOL(&MEMBER.)
002000 //COBOL.SYSLIB DD DISP=SHR,DSN=P390.COPYS.COBOL
002400 //LKED.SYSLMOD DD DISP=SHR,DSN=P390.FUENTES.LOAD(&MEMBER.)
002500 //
****** **************************** Bottom of Data ****************************
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Sandro
Val: 123
Oro
Ha mantenido su posición en Cobol (en relación al último mes)
Gráfica de Cobol

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Sandro (84 intervenciones) el 04/01/2015 07:33:45
cobol utiliza ciertos archivos para actualizar, que tipo de archivo estas utilizando, si es secuencial no se puede actualizar, lo tendrías que hacer en dos pasos, uno de entrada y otro de salida,

en hercules, no se si se pueda generar vsam con llave, ese si se puede actualizar, seria mas factibles utilizar una base de datos

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Manuel (6 intervenciones) el 05/01/2015 09:24:22
No estoy intentando actualizarlo, como indico, lo que hago es: a partir de un fichero de entrada (secuencial) creo dos ficheros de salida (secuenciales también).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sandro
Val: 123
Oro
Ha mantenido su posición en Cobol (en relación al último mes)
Gráfica de Cobol

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Sandro (84 intervenciones) el 05/01/2015 16:17:42
si no mas me equivoco en el jcl, debes de estar la definición de los archivos de salida, donde esta la definición de los archivos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Manuel (6 intervenciones) el 06/01/2015 13:06:47
Este es el ejecutor.
****** ***************************** Top of Data ******************************
000100 //EJECUTA3 JOB CLASS=A,MSGCLASS=C
000200 //STEP10 EXEC PGM=PROGRAM2
000210 //IN1 DD DISP=SHR,DSN=P390.CURSOOLD.COBOL(VIAJES)
000220 //OUT1 DD DISP=MOD,DSN=P390.CURSOOLD.COBOL(GASTOS)
000230 //OUT2 DD DISP=MOD,DSN=P390.CURSOOLD.COBOL(PROV)
000300 //COBOL.STEPLIB DD DISP=SHR,DSN=P390.FUENTES.LOAD
000400 //SYSOUT DD SYSOUT=*
****** **************************** Bottom of Data ****************************

Y este el compilador.
****** ***************************** Top of Data ******************************
000100 //P390XCOB JOB (),'CICS ',NOTIFY=&SYSUID,
000200 // CLASS=A,MSGCLASS=H,MSGLEVEL=(1,1)
000300 //*
000400 //*
000500 //* COMPILA Y LINKEDITA PROGRAMAS COBOL/BATCH
000600 //*
000700 //*
000800 //PROC JCLLIB ORDER=ADCD.Z110.PROCLIB
000900 //*
001000 //***** Poner el nombre del Programa en **MEMBER**
001100 //*
001200 // EXEC PROC=IGYWCLG,MEMBER=PROGRAM2
001300 //*
001310 //COBOL.STEPLIB DD DSN=IGY410.SIGYCOMP,DISP=SHR
001400 //***** LIBRERIA DONDE SE ENCUENTRA EL FUENTE
001500 //*
001600 //COBOL.SYSIN DD DISP=SHR,DSN=P390.CURSOOLD.COBOL(&MEMBER.)
001700 //*
001800 //***** LIBRERIA DONDE SE ENCUENTRAN LAS COPYS
001900 //*
001910 //SYSOUT DD SYSOUT=*
002000 //COBOL.SYSLIB DD DISP=SHR,DSN=P390.COPYS.COBOL
002100 //*
002200 //***** LIBRERIA DONDE SE ENCUENTRARA EL EJECUTABLE
002300 //*
002400 //LKED.SYSLMOD DD DISP=SHR,DSN=P390.FUENTES.LOAD(&MEMBER.)
002500 //
****** **************************** Bottom of Data ****************************
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sandro
Val: 123
Oro
Ha mantenido su posición en Cobol (en relación al último mes)
Gráfica de Cobol

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Sandro (84 intervenciones) el 06/01/2015 14:26:06
solo faltaría el programa fuente para verificar si hubiese algún error, todo se ve bien hasta aquí.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Manuel (6 intervenciones) el 06/01/2015 18:36:31
EN EL CODIGO QUE ESCRIBO FALTA LA DECLARACIÓN DE ALGUNAS VARIABLES PERO ESTÁ TODO LO REFERIDO A LOS FICHEROS. ADJUNTO EL PROGRAMA QUE HICE PARA QUE COMPILARA EN RMCOBOL QUE HACE LO MISMO.

****** ***************************** Top of Data *****************************
000100 000100 IDENTIFICATION DIVISION.
000200 000200 PROGRAM-ID. PROGRAM2.
000300 000300 AUTHOR. MANUEL MESA.
000400 000400
000500 000500 ENVIRONMENT DIVISION.
000600 000600 CONFIGURATION SECTION.
000700 000700 SPECIAL-NAMES.
000800 000800 DECIMAL-POINT IS COMMA.
000900 000900
001000 001000 INPUT-OUTPUT SECTION.
001100 001100 FILE-CONTROL.
001200 001200 SELECT VIAJES
001300 001300 ASSIGN TO IN1.
001400 001400
001500 001500 SELECT OPTIONAL GASTOS
001600 001600 ASSIGN TO OUT1.
001700 001700
001800 001800 SELECT OPTIONAL PROV
001900 001900 ASSIGN TO OUT2.
002000 002000
002010 002010 SELECT ORDEN
002020 002020 ASSIGN TO DISK.
002100 002100 DATA DIVISION.
002200 002200 FILE SECTION.
002300 002300 FD IN1
002400 002400 LABEL RECORDS ARE STANDARD
002500 002500 BLOCK CONTAINS 0 RECORDS.
002600 002600 01 REG-VIAJES.
002700 002700 05 WS-COD PIC 9(5).
002800 002800 05 FILLER PIC X.
002900 002900 05 WS-PROV PIC 9(2).
003000 003000 05 FILLER PIC X.
003100 003100 05 WS-MES PIC 9(2).
003200 003200 05 FILLER PIC X.
003300 003300 05 WS-GASTOS PIC 9(5).
003400 003400 05 FILLER PIC X.
003500 003500 05 WS-DIAS PIC 9(2).
003600 003600 05 FILLER PIC X.
003700 003700 05 WS-IMPORTE PIC 9(6).
003800 003800 05 FILLER PIC X(2).
003900 003900 FD OUT1
004000 004000 LABEL RECORDS ARE STANDARD
004100 004100 BLOCK CONTAINS 0 RECORDS.
004200 004200 01 REG-GASTOS PIC X(72).
004300 004300 FD OUT2
004400 004400 LABEL RECORDS ARE STANDARD
004500 004500 BLOCK CONTAINS 0 RECORDS.
004600 004600 01 REG-PROV PIC X(72).
004700 004700 SD ORDEN.
004800 004800 01 REG-ORDEN.
004900 004900 05 O-COD PIC 9(5).
005000 005000 05 FILLER PIC X.
005100 005100 05 O-PROV PIC 9(2).
005200 005200 05 FILLER PIC X.
005300 005300 05 O-MES PIC 9(2).
005400 005400 05 FILLER PIC X.
005500 005500 05 O-GASTOS PIC 9(5).
005600 005600 05 FILLER PIC X.
005700 005700 05 O-DIAS PIC 9(2).
005800 005800 05 FILLER PIC X.
005900 005900 05 O-IMPORTE PIC 9(6).
006000 006000 05 FILLER PIC X(2).
006100 006100 WORKING-STORAGE SECTION.
006200 006200 01 REPORTES.
006300 006300 05 RPT-GASTOS.
006400 006400 10 FILLER PIC X(3) VALUE SPACES.
006500 006500 10 RPT-COD PIC 9(5).
006600 006600 10 FILLER PIC X(4) VALUE SPACES.
006700 006700 10 RPT-GAST PIC Z(2).Z(3).Z(3).
006800 006800 10 FILLER PIC X(3) VALUE SPACES.
006900 006900 10 RPT-FAC PIC Z(2).Z(3).Z(3).
007000 007000 10 FILLER PIC X(2) VALUE SPACES.
007100 007100 10 RPT-TOT PIC Z(3).Z(3).Z(3).
007200 007200 05 RPT-PROV OCCURS 6 TIMES.
007300 007300 10 RPT-NOM PIC X(7).
007400 007400 10 RPT-MES PIC B*(3) OCCURS 12 TIMES
007500 007500 VALUE ALL " ***".
007600 007600 01 CABECERAS.
007700 007700 05 CAB-GASTOS PIC X( ) VALUE " CODIGO
007800 007800 " TOTAL DE TOTAL DE TOTAL
007900 007900 10 RPT-L1 PIC X(18)
008000 008000 VALUE "RELACION DE GASTOS".
008100 008100 05 CAB-L1.
008200 008200 10 FILLER PIC X(3) VALUE SPACES.
008300 008300 10 RPT-L1C1 PIC X(6) VALUE "CODIGO".
008400 008400 10 FILLER PIC X(5) VALUE SPACES.
008500 008500 10 RPT-L1C2 PIC X(8) VALUE "TOTAL DE".
008600 008600 10 FILLER PIC X(5) VALUE SPACES.
008700 008700 10 RPT-L1C3 PIC X(8) VALUE "TOTAL DE".
008800 008800 10 FILLER PIC X(6) VALUE SPACES.
008900 008900 10 RPT-L1C4 PIC X(5) VALUE "TOTAL".
009000 009000 10 FILLER PIC X(3) VALUE SPACES.
009100 009100 05 CAB-L2.
009200 009200 10 FILLER PIC X(5) VALUE SPACES.
009300 009300 10 RPT-L2C1 PIC X(2) VALUE "DE".
009400 009400 10 FILLER PIC X(6) VALUE SPACES.
009500 009500 10 RPT-L2C2 PIC X(9) VALUE "GASTOS DE".
009600 009600 10 FILLER PIC X(6) VALUE SPACES.
009700 009700 10 RPT-L2C3 PIC X(5) VALUE "TOTAL".
009800 009800 10 FILLER PIC X(3) VALUE SPACES.



013000 013000 PROCEDURE DIVISION.
013100 013100 MAIN.
013200 013200 PERFORM INICIO
013300 013300 THRU INICIO-EXIT.
013400 013400 PERFORM PROCESO
013500 013500 THRU PROCESO-EXIT
013600 013600 UNTIL FIN.
013700 013700 PERFORM TERMINO
013800 013800 THRU TERMINO-EXIT.
013900 013900
014000 014000 STOP RUN.
014100 014100
014200 014200 INICIO.
014300 014300 SORT ORDEN
014400 014400 ASCENDING KEY REG-ORDEN
014500 014500 USING IN1
014600 014600 GIVING IN1.
014700 014700 OPEN INPUT IN1
014800 014800 OUTPUT OUT1
014900 014900 OUT2.
015000 015000 PERFORM ESCRIBE-CAB
015100 015100 THRU ESCRIBE-CAB-EXIT.
015200 015200 PERFORM LECTURA
015300 015300 THRU LECTURA-EXIT.
015400 015400
015500 015500 MOVE WS-COD TO AUX-SUP.
015600 015600
015700 015700 PERFORM ACUMULA
015800 015800 THRU ACUMULA-EXIT.
015900 015900 PERFORM GUARDA-MES
016000 016000 THRU GUARDA-MES-EXIT.
016100 016100 INICIO-EXIT.
016200 016200 EXIT.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sandro
Val: 123
Oro
Ha mantenido su posición en Cobol (en relación al último mes)
Gráfica de Cobol

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Sandro (84 intervenciones) el 06/01/2015 21:32:34
no cierras los archivo no sera eso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Manuel (6 intervenciones) el 07/01/2015 01:04:19
He cambiado el programa para cerrarlos en la funcion de termino, pero sigue sin modificarme los ficheros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sandro
Val: 123
Oro
Ha mantenido su posición en Cobol (en relación al último mes)
Gráfica de Cobol

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Sandro (84 intervenciones) el 07/01/2015 05:05:38
cambia tu jcl. a disposición shr, y el de salida créalo nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Manuel (6 intervenciones) el 07/01/2015 11:58:51
Modificado y tampoco lo crea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Sandro
Val: 123
Oro
Ha mantenido su posición en Cobol (en relación al último mes)
Gráfica de Cobol

Compilar y ejecutar programa cobol desde Mainframe

Publicado por Sandro (84 intervenciones) el 07/01/2015 13:15:28
por el momento no tengo ninguna propuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar