Pregunta

Estoy un poco confundido sobre cómo crear una variable simbólica en JCL para un trabajo que estoy haciendo en mi clase de COBOL.

Por ejemplo, se supone que debo "Especificación de un parámetro simbólico para la opción PARM y especificar TEST y Apost como predeterminado."

¿Cómo designo la opción "PARM" a ser un parámetro simbólico?

EDIT: Perdona la supervisión; parece que se me olvidó mencionar qué sistema operativo Estoy corriendo en. Estoy escribiendo este archivo JCL de z / OS.

Gracias de antemano!

EDIT:

@avisser:

Por lo tanto, lo que está diciendo es que solo se puede llamar así "y PARM = 'TEST, Apost'" y, si quería cambiar ese parámetro cuando corro este proc con otro comunicado JCL, los parms mencionados pueden cambiado desde el JCL llamando?

EDIT:

@avisser:

Sí, lo siento, realmente tengo que trabajar en ser más específico ... En mi COBOL JCL, llamo el compilador de COBOL (IGYCRCTL), el Editor de Enlace (HEWL) y un programa de fetch (EXEC PGM =).

EDIT:

Quizás ayudaría a ver lo que mi salida es. Realmente aprecio a todos los que han tratado de ayudar hasta ahora.

Salida:

------ ------ JES2 ESTADISTICAS DE TRABAJO

       37 CARDS READ                                                                                                            

       61 SYSOUT PRINT RECORDS                                                                                                  

        0 SYSOUT PUNCH RECORDS                                                                                                  

        3 SYSOUT SPOOL KBYTES                                                                                                   

     0.00 MINUTES EXECUTION TIME                                                                                                

!! FIN DE JES archivo de cola !!        1 // JOB KC03CEFA, 'MATT R', MSGCLASS = H, TYPRUN = SCAN JOB07731          // *
       2 // Step01 EXEC PGM = IGYCRCTL, y región = 248K, España          // y PARM = 'TEST, Apost'
       3 // STEPLIB DD DSN = IGY340.SIGYCOMP, DISP = SHR
         / *
       4 // syslin DD & DSN = && OBJSET, UNIDAD DE DISCO =, = SPACE (TRK, (3,3)), Francia          // Y DISP = (NUEVO, PASS, DELETE)
       5 // SYSPRINT DD SYSOUT = *
       6 // SYSUT1 DD UNIDAD = DISK, ESPACIO = (CYL, (1,1))
       7 // SYSUT2 DD = UNIDAD DE DISCO, ESPACIO = (CYL, (1,1))
       8 // SYSUT3 DD UNIDAD = DISK, ESPACIO = (CYL, (1,1))
       9 // SYSUT4 DD UNIDAD = DISK, ESPACIO = (CYL, (1,1))
      10 // SYSUT5 DD UNIDAD = DISK, ESPACIO = (CYL, (1,1))
      11 // SYSUT6 DD = UNIDAD DE DISCO, ESPACIO = (CYL, (1,1))
      12 // SYSUT7 DD UNIDAD = DISK, ESPACIO = (CYL, (1,1))
         // *
         // *
      13 // STEP02 EXEC PGM = HEWL, y COND =, y reagion = 2048K, España          // y PARM =
      14 // SYSLIB DD DSN = CEE.SCEELKED, DISP = SHR
      15 // syslin DD & DSN = && OBJSET, y DISP = (OLD, DELETE)
      16 // SYSLMOD DD DSN = && TEMPLIB (PGM6), Francia          // ESPACIO = (1024, (50,20,1)), UNIDAD DE DISCO =, España          // DISP = (NUEVO, CATLG, DELETE)
      17 // SYSPRINT DD SYSOUT = *
      18 // IMPRESORA DD SYSOUT = *
      19 // SYSUT1 DD = UNIDAD DE DISCO, ESPACIO = (TRK, (10,10))
         // *
         // *
      20 // Step01 EXEC PGM = PGM6, y PARM = TERMTHDACT (DUMP)
      21 // STEPLIB DD DSN = && TEMPLIB, DISP = SHR
      22 // CEEDUMP
      23 // SYSUDUMP
      24 // IMPRESORA DD SYSOUT = *
      25 // PRODUCTOS DD DSN = KC02322.CSCI465.SP09 (DATOS1), DISP = SHR
      26 // SYSIN DD *
!! FIN DE JES archivo de cola !!  STMT NO. MENSAJE         2 IEFC630I IDENTIFICADO PALABRA CLAVE Y REGIÓN         2 IEFC630I IDENTIFICADO PALABRA CLAVE y PARM         4 IEFC630I IDENTIFICADO PALABRA CLAVE y DSN         4 IEFC630I IDENTIFICADO PALABRA CLAVE Y DISP        13 IEFC630I IDENTIFICADO PALABRA CLAVE y Condiciones        13 IEFC630I IDENTIFICADO PALABRA CLAVE y reagion        13 IEFC630I IDENTIFICADO PALABRA CLAVE y PARM        15 IEFC630I IDENTIFICADO PALABRA CLAVE y DSN        15 IEFC630I IDENTIFICADO PALABRA CLAVE Y DISP        20 IEFC630I IDENTIFICADO PALABRA CLAVE y PARM        22 IEFC605I IDENTIFICADO campo de operación        23 IEFC605I IDENTIFICADO campo de operación !! FIN DE JES archivo de cola !!

¿Fue útil?

Solución

Los parámetros simbólicos son nombres precedidos por el signo. Cuando se utiliza en un comunicado JCL, en tiempo de ejecución que se convierten en el valor suministrado. Una forma de crearlos (en z / OS) está utilizando un

// SET name = value

declaración. Si utiliza un PARM, debe diseñar su programa para que pueda trabajar con uno. Tal vez la asignación es acerca de cómo hacer que (pista: sección de vinculación). O es JCL una parte de su clase de COBOL?

TEST y Apost vistazo a mí como las directivas del compilador. No sé si se puede especificarlos en su programa, en mi lugar de trabajo que sólo la oferta de ellos cuando se llama al compilador.

EDIT:

Muy bien, este es un poco inusual para mí, ya que tienden a compilar y ejecutar programas en nuestros separada JCL arroyos. Pero de todos modos.

Mejora de su segunda declaración:

2 //STEP01 EXEC PGM=IGYCRCTL,&REGION=248K,
  // &PARM='TEST,APOST'

REGIÓN PARM y son los llamados parámetros de posición y son palabras clave, no es realmente destinado a ser presentado como nombres simbólicos, aunque eres libre de hacerlo (esto explicará los mensajes de "palabra clave no identificados").
El uso común - en su caso - es proporcionar nombres simbólicos para el operandos de tales parámetros. Y, obviamente, tiene que definir un valor para ellos en primer lugar, por ejemplo:

  // SET OPTIONS='TEST,APOST'
  //STEP01 EXEC PGM=IGYCRCTL,REGION=248K,
  // PARM=&OPTIONS

Otros consejos

Ok, hice algo de investigación, y, con la orientación que avisser me dio, yo era capaz de averiguar lo que tenía que hacer. Así, para una futura referencia para cualquiera que pudiera tener esta pregunta (o uno similar), esto es lo que me di cuenta:

Paso 1: Crear un "PROC" con las variables que va a utilizar

.

ex. Quería utilizar variables para el "PARM" en mi compilador de COBOL que tenía los valores por defecto de "prueba" y "Ex", por lo que he escrito algo como:

//PROC1  PROC  CPARM='TEST,APOST',

Paso 2: Utilice los parámetros simbólicos que acaba de definir en su paso JCL real. El carácter "&" indica que lo que sigue es un parámetro simbólico.

ex. He utilizado la ya mencionada "CPARM" para mi paso COBOL de compilación:

//COB    EXEC  PGM=IGYCRCTL,REGION=&CREGION,  
//             PARM='&CPARM'

Paso 3:. Para terminar el "PROC" con una declaración "esperar" después de su paso real

ex. Después hice una lista de todos mis variables, y hice una lista de todos los pasos para la compilación (nombre del compilador, donde el compilador se puede encontrar, y, como se puede ver justo antes de la declaración PEND, las declaraciones SYSUT1-SYSUT7), coloque su palabra clave PEND:

//SYSUT7   DD UNIT=DISK,SPACE=(CYL,(1,1))  
//         PEND

Paso 4: Añadir las medidas y / o código JCL adicionales a su archivo de origen y ya está

!

Notas:

-Se puede tener más de una instrucción PROC en un solo archivo de JCL. Tenía tres: una para la compilación de COBOL, uno para el editor de vinculación y una para el programa de obtención de información. También tengo código COBOL en el mismo archivo que mis declaraciones están en PROC.

: este se llevó a cabo en una unidad central de IBM corriendo z / OS.

-Por encima, se puede ver que mi variable "CPARM" se establece en el valor por defecto de 'TEST, Apost'. Es posible tener una variable sea nula por defecto simplemente dejando el campo en blanco (ex. CPARM =,).

-Se puede haber notado que después de la definición CPARM, hay una coma; esto es porque tengo más variables después de ella. Por favor, recuerde que el último parámetro simbólico se crea para cualquier PROC dado no debería tener nada después de él (es decir. Sin coma). Puede, por supuesto, colocar una línea de comentario (// *), otro PROC o código real después, pero el último parámetro simbólica no debería tener nada que siguiendo en la misma línea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top