Question

Je suis un peu confus sur la façon de créer une variable symbolique dans JCL pour une mission que je fais dans ma classe COBOL.

Par exemple, je suis censé « Spécifier un paramètre symbolique pour l'option PARM et spécifiez TEST et apost comme valeur par défaut. »

Comment désigne l'option « PARM » être un paramètre symbolique?

EDIT: Pardonnez la surveillance; il semble que j'oublié de mentionner ce que je OS en cours d'exécution. Je suis en train d'écrire ce fichier JCL dans z / OS.

Merci d'avance!

EDIT:

@avisser:

Alors, ce que vous dites est que je peux l'appeler « & PARM = « TEST, apost » » et, si je voulais changer ce paramètre quand je lance ce proc avec une autre JCL, les parms énumérés peuvent être changé du JCL appelant?

EDIT:

@avisser:

Ouais, désolé, je dois vraiment travailler sur être plus précis ... Je suis dans ma COBOL JCL, appelle le compilateur COBOL (IGYCRCTL), l'éditeur de liens (HEWL) et un programme fetch (EXEC PGM =).

EDIT:

Peut-être qu'il serait utile de voir ce que ma sortie est. J'apprécie vraiment tous ceux qui ont essayé d'aider à ce jour.

Sortie:

------ ------ STATISTIQUES JES2 JOB

       37 CARDS READ                                                                                                            

       61 SYSOUT PRINT RECORDS                                                                                                  

        0 SYSOUT PUNCH RECORDS                                                                                                  

        3 SYSOUT SPOOL KBYTES                                                                                                   

     0.00 MINUTES EXECUTION TIME                                                                                                

!! FIN DE JES SPOOL FICHIER !!        1 // JOB KC03CEFA, Matt R ', MSGCLASS = H, TYPRUN = SCAN JOB07731          // *
       2 // Step01 EXEC PGM = IGYCRCTL, & REGION = 248K,
         // & PARM = 'TEST, apost'
       3 // STEPLIB DD DSN = IGY340.SIGYCOMP, DISP = SHR
         / *
       4 // syslin DD & DSN = && OBJSET, UNITE = DISK, SPACE = (TRK, (3,3)),
         // & DISP = (NOUVEAU, PASS, DELETE)
       5 // SYSPRINT DD SYSOUT = *
       6 // SYSUT1 DD UNIT = DISK, SPACE = (CYL, (1,1))
       7 // SYSUT2 DD UNIT = DISK, SPACE = (CYL, (1,1))
       8 // SYSUT3 DD UNIT = DISK, SPACE = (CYL, (1,1))
       9 // SYSUT4 DD UNIT = DISK, SPACE = (CYL, (1,1))
      10 // SYSUT5 DD UNIT = DISK, SPACE = (CYL, (1,1))
      11 // SYSUT6 DD UNIT = DISK, SPACE = (CYL, (1,1))
      12 // SYSUT7 DD UNIT = DISK, SPACE = (CYL, (1,1))
         // *
         // *
      13 // STEP02 EXEC PGM = HEWL, & COND =, & reagion = 2048K,
         // & PARM =
      14 // SYSLIB DD DSN = CEE.SCEELKED, DISP = SHR
      15 // syslin DD & DSN = && OBJSET, & DISP = (VIEUX, DELETE)
      16 // SYSLMOD DD DSN = && TEMPLIB (PGM6),
         // SPACE = (1024, (50,20,1)), UNITE = DISK,
         // DISP = (NOUVEAU, CATLG, SUPPRIMER)
      17 // SYSPRINT DD SYSOUT = *
      18 // printer DD SYSOUT = *
      19 // SYSUT1 DD = UNITE DISK, ESPACE = (TRK, (10,10))
         // *
         // *
      20 // Step01 EXEC PGM = PGM6, & PARM = TERMTHDACT (DUMP)
      21 // STEPLIB DD DSN = && TEMPLIB, DISP = SHR
      22 // CEEDUMP
      23 // SYSUDUMP
      24 // printer DD SYSOUT = *
      25 // PRODUITS DD DSN = KC02322.CSCI465.SP09 (DATA1), DISP = SHR
      26 // SYSIN DD *
!! FIN DE JES SPOOL FICHIER !!  STMT NO. MESSAGE         2 IEFC630I NON IDENTIFIE PAR MOTS CLÉS & REGION         2 IEFC630I NON IDENTIFIÉ MOTS CLÉS & PARM         4 IEFC630I MOTS CLÉS & NON IDENTIFIÉ DSN         4 IEFC630I MOTS CLÉS & NON IDENTIFIÉ DISP        13 IEFC630I NON IDENTIFIE PAR MOTS CLÉS & COND        13 IEFC630I NON IDENTIFIÉ MOTS CLÉS & reagion        13 IEFC630I NON IDENTIFIÉ MOTS CLÉS & PARM        15 IEFC630I NON IDENTIFIÉ MOTS CLÉS & DSN        15 IEFC630I NON IDENTIFIÉ MOTS CLÉS & DISP        20 IEFC630I NON IDENTIFIÉ MOTS CLÉS & PARM        22 IEFC605I UNIDENTIFIED DOMAINE D'UTILISATION        23 IEFC605I D'OPÉRATION NON IDENTIFIÉ CHAMP !! FIN DE FICHIER JES SPOOL !!

Était-ce utile?

La solution

paramètres symboliques

sont des noms précédés d'une esperluette. Lorsqu'il est utilisé dans un JCL, lors de l'exécution, ils sont convertis dans la valeur fournie. Une façon de les créer (z / OS) utilise un

// SET name = value

déclaration

. Si vous utilisez un PARM, vous devez concevoir votre programme afin qu'il puisse travailler avec un. la mission est peut-être sur la façon de faire que (indice: section de liaison). Ou est-JCL une partie de votre classe COBOL?

TEST et regard apost à moi comme directives du compilateur. Je ne sais pas si vous pouvez les spécifier dans votre programme, à mon lieu de travail, nous leur fournissons uniquement lorsque vous appelez le compilateur.

EDIT:

Ok cela est un peu inhabituel pour moi, comme nous avons tendance à compiler et exécuter nos programmes en cours d'eau JCL séparés. Mais peu importe.

Prendre votre deuxième déclaration:

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

REGION et PARM sont dits paramètres de position et ils sont des mots clés, pas vraiment destinés à être présentés comme des noms symboliques, bien que vous êtes libre de le faire (ce qui explique les messages « KEYWORD Non Identifiés »).
L'utilisation commune - le cas échéant - est de fournir des noms symboliques pour opérandes de ces paramètres. Et, évidemment, vous devez définir une valeur pour eux d'abord, par exemple:

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

Autres conseils

Ok, je l'ai fait quelques recherches, et, avec les conseils que avisser m'a donné, j'ai pu comprendre ce que je devais faire. Ainsi, à titre de référence pour toute personne qui pourrait avoir cette question (ou similaire), voici ce que j'ai compris:

Étape 1: Créer un "PROC" avec les variables que vous allez utiliser

.

ex. Je voulais utiliser des variables pour le « PARM » dans mon compilateur COBOL qui avait les valeurs par défaut de « TEST » et « apost », donc je l'ai écrit quelque chose comme:

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

Étape 2: Utilisez ces paramètres symboliques nouvellement définis dans votre étape de JCL réelle. Le caractère « & » montre que ce qui le suit est un paramètre symbolique.

ex. J'ai utilisé le mentionné ci-dessus « CPARM » pour ma compilation COBOL étape:

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

Étape 3:. Terminez votre "PROC" une déclaration "PEND" après votre étape réelle

ex. Après avoir énuméré toutes mes variables et j'ai énuméré toutes les étapes de compilation (nom du compilateur, où le compilateur peut être trouvé, et, comme on peut le voir juste avant la déclaration PEND, les déclarations SYSUT1-SYSUT7), placez votre mot-clé PEND:

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

Étape 4: Ajoutez des étapes JCL supplémentaires et / ou du code à votre fichier source et vous êtes hors

Notes:

-Vous pouvez avoir plus d'une instruction PROC dans un seul fichier JCL. J'ai eu trois: un pour la compilation COBOL, un pour l'éditeur de liens et un pour le programme chercher. J'ai également le code COBOL dans le même fichier que mes déclarations PROC sont.

-Ce a eu lieu sur un IBM Mainframe exécutant z / OS.

-Above, on peut voir que mon « CPARM » variable est définie sur la valeur par défaut 'TEST, apost. Il est possible d'avoir une variable être nulle par défaut en laissant simplement le champ vide (ex. CPARM =,).

-Vous avez pu remarquer que, après la définition de CPARM, il y a une virgule; c'est parce que j'ai plusieurs variables après. S'il vous plaît rappelez-vous que le dernier paramètre symbolique que vous créez pour une PROC donnée ne devrait rien le suivant (ie. Pas de virgule). Vous pouvez, bien sûr, placer une ligne de commentaire (// *), un autre PROC ou code réel après, mais le dernier paramètre symbolique ne devrait rien suivant sur la même ligne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top