Aller au contenu

DCLPRCOPT

Déclarer options de traitement

En bref

La commande DCLPRCOPT vous permet définir les options de traitement du compilateur.

Syntaxe minimale

DCLPRCOPT

Paramètres

Astuce : dans une session 5250, tapez DCLPRCOPT puis F4 pour l'invite de saisie, et F1 sur un paramètre pour son aide.

Aide IBM i de la commande

Texte du F1, IBM i 7.5 en français (bibliothèque QSYS)

Où s'exécute :

  • Programme batch (*BPGM)
  • Programme interactif (*IPGM)
Compatible multitâche : Oui

La commande DCLPRCOPT vous permet définir les options de traitement du compilateur. Ces options peuvent contrôler le comportement du compilateur ou modifier les attributs du programme ou de l'objet modèle généré par le compilateur CL.

Vous pouvez utiliser la commande DCLPRCOPT pour définir les paramètres de compilateur dans votre programme source CL au lieu d'indiquer les mêmes paramètres dans la commande CL utilisée pour appeler le compilateur CL (CRTCLPGM, CRTCLMOD ou CRTBNDCL).

  • Ces paramètres dans DCLPRCOPT ne possèdent pas de valeurs par défaut. Si aucune valeur n'est indiquée, le compilateur CL utilise la valeur indiquée ou proposée par défaut dans la commande CL utilisée pour appeler le compilateur CL.
  • La définition d'une valeur de paramètre dans la commande DCLPRCOPT remplace toute valeur indiquée ou proposée par défaut pour le paramètre correspondant dans la commande CRTCLPGM, CRTCLMOD ou CRTBNDCL.
  • Si une liste du compilateur est générée, la première page affiche les paramètres du compilateur transmis à partir de la commande CL pour appeler le compilateur CL. Chacun de ces paramètres écrasés par une commande DCLPRCOPT affectera le programme ou module CL et apparaîtra donc sur la première page de la liste de compilateur.
  • Certains paramètres et certaines valeurs de paramètre ne s'appliquent qu'au compilateur CL OPM (Original Program Model) ou ILE (Integrated Language Environment). Par exemple, le paramètre ACTGRP n'est applicable qu'au compilateur CL ILE appelé par la commande CRTBNDCL. Les paramètres ou les valeurs indiqués dans la commande DCLPRCOPT, qui ne s'appliquent pas au compilateur CL appelé pour compiler le programme source CL ne sont pas pris en compte.

Restrictions :

  • Cette commande est valide uniquement dans un programme CL ou une procédure CL ILE. Toutes les commandes de déclaration (DCL, COPYRIGHT, DCLF et DCLPRCOPT) doivent suivre la commande PGM (Programme) et précéder les autres commandes du programme. Elles peuvent être entrées dans n'importe quel ordre.
  • Une seule commande DCLPRCOPT est admise par le compilateur CL. Si vous en indiquez plusieurs dans le programme source CL, le message CPD0323 est envoyé et la compilation échoue.

Paramètres

Mot-clé Description Valeurs possibles Remarques
SUBRSTACK Position dans pile sous-pgms 20-9999, 99 Facultatif, positionnel 1
LOG Consigner les commandes *JOB, *YES, *NO Facultatif
ALWRTVSRC RTVCLSRC admise *YES, *NO Facultatif
TEXT Texte 'descriptif' Valeur caractère, *SRCMBRTXT, *BLANK Facultatif
USRPRF Profil utilisateur *USER, *OWNER Facultatif
AUT Droits Nom, *LIBCRTAUT, *CHANGE, *ALL, *USE, *EXCLUDE Facultatif
DBGENCKEY Clé de chiffrement de débogage Valeur caractère, *NONE Facultatif
STGMDL Modèle d'espace mémoire *SNGLVL, *TERASPACE Facultatif
DFTACTGRP Groupe d'activation par défaut *YES, *NO Facultatif
ACTGRP Groupe d'activation Nom, *STGMDL, *NEW, *CALLER Facultatif
BNDSRVPGM Lier programme de service Valeurs uniques: *NONE
Autres valeurs (jusqu'à 300 répétitions): Liste d'éléments
Facultatif
Élément 1: Programme de service Nom d'objet qualifié
Qualificatif 1: Programme de service Nom générique, nom, *ALL
Qualificatif 2: Biblio Nom, *LIBL
Élément 2: Activation *IMMED, *DEFER
BNDDIR Répertoire de liage Valeurs uniques: *NONE
Autres valeurs (jusqu'à 300 répétitions): Nom d'objet qualifié
Facultatif
Qualificatif 1: Répertoire de liage Nom
Qualificatif 2: Biblio Nom, *LIBL, *CURLIB, *USRLIBL

Position dans pile sous-pgms (SUBRSTACK)

Indique le nombre de postes pouvant être admis dans la pile de sous-programmes. Chaque fois qu'une commande CALLSUBR est exécutée, un poste est ajouté dans la pile de sous-programmes. Un poste est supprimé lorsqu'une commande RTNSUBR ou ENDSUBR est exécutée. La pile de sous-programmes peut comporter plusieurs postes lorsque des commandes CALLSUBR sont exécutées depuis un sous-programme ; un sous-programme peut appeler un autre sous-programme ou s'appeler lui-même de manière récursive.

99
Le nombre maximal de postes de pile de sous-programmes admis lorsque ce programme CL est exécuté est 99.
20 à 9999
Indiquez le nombre maximal de postes de pile de sous-programmes admis lorsque ce programme CL est exécuté.

Consigner les commandes (LOG)

Indique les options de consignation pour un programme ou un module CL créé.

*JOB
La consignation des commandes dans un programme CL en cours d'exécution dépend de l'état de l'indicateur de consignation du travail (paramètre LOGCLPGM de la commande CHGJOB). Pour afficher la liste des commandes consignées, indiquez 3 ou 4 comme niveau de consignation des travaux.

La valeur *YES ou *NO annule toute valeur indiquée précédemment dans la commande CHGJOB.

*YES
Les commandes sont consignées dans tous les cas.
*NO
Les commandes ne sont pas consignées.

RTVCLSRC admise (ALWRTVSRC)

Indique si le source CL est sauvegardé avec l'objet module ou programme. Le source sauvegardé peut alors être extrait à l'aide de la commande RTVCLSRC (Extraire un source CL).

*YES
Le source CL est sauvegardé avec le programme.
*NO
Le source CL n'est pas sauvegardé avec le programme.

Texte 'descriptif' (TEXT)

Indique le texte qui décrit brièvement l'objet programme ou module CL compilé.

*SRCMBRTXT
Le texte est extrait du membre de fichier source utilisé pour créer le programme ou le module CL. Si ce fichier source est un fichier spoule en entrée ou un fichier unité, la zone de texte est à blanc.
*BLANK
Aucun texte n'est indiqué.
valeur-alphanumérique
Indiquez, entre apostrophes, un texte de 50 caractères au maximum.

Profil utilisateur (USRPRF)

Indique si le contrôle des droits effectué lors de l'exécution de ce programme concerne uniquement l'utilisateur (*USER) du programme ou bien à la fois l'utilisateur et le propriétaire (*OWNER) du programme. Les droits mentionnés dans le profil utilisateur ou bien dans le profil utilisateur et dans le profil propriétaire servent à contrôler l'utilisation des objets par le programme, y compris les droits du programme sur chaque objet.

Remarque :Ce paramètre n'est pas pris en compte si REPLACE(*YES) est indiqué et qu'il existe déjà un programme avec le nom indiqué par le paramètre PGM dans la commande CRTCLPGM ou CRTBNDCL.

Remarque :Ce paramètre n'est applicable que si le source CL est compilé à l'aide de la commande CRTCLPGM ou CRTBNDCL. Pour CRTCLMOD, les valeurs indiquées pour ce paramètre ne sont pas prises en compte.

*USER
Le programme s'exécute sous le profil de l'utilisateur qui l'a démarré.
*OWNER
Les profils du propriétaire et de l'utilisateur sont utilisés lors du traitement du programme. L'ensemble des droits sur les objets figurant dans ces deux profils permettent de rechercher et d'accéder aux objets pendant le traitement du programme. Les droits du profil de groupe du propriétaire ne sont pas inclus dans la liste des droits utilisés pour l'exécution du programme.

Droits (AUT)

Indique les droits que vous accordez aux utilisateurs qui n'ont pas de droit spécifique sur l'objet, qui ne figurent pas dans la liste d'autorisation et dont le groupe utilisateur ne détient pas de droit spécifique sur l'objet.

Remarque :Ce paramètre n'est pas pris en compte si REPLACE(*YES) est indiqué et qu'un objet portant le nom indiqué existe dans la bibliothèque définie.

*LIBCRTAUT
Le système détermine les droits sur l'objet à l'aide de la valeur précisée à l'invite Droits pour objets créés (paramètre CRTAUT) dans la commande CRTLIB pour la bibliothèque contenant l'objet à créer. Si la valeur précisée au paramètre CRTAUT est modifiée, la nouvelle valeur n'affecte pas les objets existants.
*CHANGE
L'utilisateur peut effectuer toutes les opérations sur l'objet, à l'exception de celles réservées au propriétaire ou contrôlées par les droits d'existence de l'objet (*OBJEXIST) et de gestion de l'objet (*OBJMGT). L'utilisateur peut réaliser des fonctions de base sur l'objet et le modifier. Le droit *CHANGE fournit le droit d'opération sur l'objet (*OBJOPR) ainsi que les droits sur toutes les données. Si l'objet est une liste d'autorisation, vous pouvez ajouter, modifier ou supprimer des utilisateurs dans cette liste.
*ALL
L'utilisateur peut effectuer toutes les opérations, à l'exception de celles réservées au propriétaire ou soumises au droit de gestion de la liste d'autorisation (*AUTLMGT). L'utilisateur a un droit d'existence sur l'objet Il peut également effectuer des fonctions de base sur ce dernier, le modifier, définir son niveau de protection et en transférer la propriété.
*USE
L'utilisateur peut effectuer des opérations de base sur l'objet, telles que l'exécution d'un programme ou la lecture d'un fichier. Il ne peut pas le modifier. Le droit d'utilisation (*USE) fournit le droit d'opération sur l'objet (*OBJOPR) ainsi que le droit d'exécution (*EXECUTE).
*EXCLUDE
L'utilisateur n'a pas accès à l'objet.
nom
Indiquez le nom d'une liste d'autorisation permettant de déterminer les droits sur l'objet. Les droits sur l'objet précisés dans la liste sont accordés aux utilisateurs qui figurent sur cette liste. La liste d'autorisation doit exister à la création de l'objet.

Clé de chiffrement de débogage (DBGENCKEY)

Indique la clé de chiffrement à utiliser pour chiffrer le source programme imbriqué dans les vues de débogage.

Remarque :Ce paramètre n'est applicable que si le source CL est compilé à l'aide des commandes CRTBNDCL (Créer un programme CL lié) ou CRTCLMOD (Créer un module CL). Dans le cas de CRTCLPGM (Créer un programme CL), toute valeur indiquée pour ce paramètre est ignorée.

*NONE
Aucune clé de chiffrement n'est indiquée.
valeur-alphanumérique
Indiquez la clé à utiliser pour chiffrer le source programme imbriqué dans les vues de débogage. La longueur de cette clé peut être comprise entre 1 et 16 octets. Toute clé d'une longueur comprise entre 1 et 15 octets sera complétée par des blancs jusqu'à concurrence de 16 octets pour le chiffrement. L'indication d'une clé de 0 octet revient à spécifier *NONE.

Si la clé contient des caractères qui ne sont pas constants pour toutes les pages de codes, il appartient à l'utilisateur de s'assurer que le système cible utilise la même page de codes que le système source ; si tel n'est pas le cas, la clé pourra ne pas correspondre et le déchiffrement pourra échouer. Si la clé de chiffrement doit être entrée sur des systèmes dont les pages de codes diffèrent, il est recommandé d'utiliser une clé composée de caractères constants pour toutes les pages de codes EBCDIC.

Modèle d'espace mémoire (STGMDL)

Indique l'attribut du modèle d'espace mémoire du programme CL ILE.

Remarque :Ce paramètre n'est applicable que si le source CL est compilé à l'aide de la commande CRTBNDCL. Pour CRTCLPGM et CRTCLMOD, les valeurs indiquées pour ce paramètre ne sont pas prises en compte.

*SNGLVL
Le programme est créé avec un modèle d'espace adressable unique. Lorsque ce programme est activé et exécuté, il bénéficie d'un espace adressable unique pour le stockage automatique et statique. Ce type de programme ne s'exécute que dans un groupe d'activation d'espace adressable unique.
*TERASPACE
Le programme est créé avec un modèle d'espace mémoire à téraoctets. Lorsque ce programme est activé et exécuté, il bénéficie d'un espace mémoire à téraoctets pour le stockage automatique et statique. Ce type de programme ne s'exécute que dans un groupe d'activation d'espace mémoire à téraoctets. STGMDL(*TERASPACE) ne peut pas être indiqué si DFTACTGRP(*YES) est indiqué.

Groupe d'activation par défaut (DFTACTGRP)

Indique si le programme CL ILE est associé au groupe d'activation par défaut.

Remarque :Ce paramètre n'est applicable que si le source CL est compilé à l'aide de la commande CRTBNDCL. Pour CRTCLPGM et CRTCLMOD, les valeurs indiquées pour ce paramètre ne sont pas prises en compte.

*YES
Le programme est associé au groupe d'activation par défaut.

Remarque :Si cette valeur est indiquée, le paramètre ACTGRP ne peut pas être précisé.

*NO
Le programme n'est pas associé au groupe d'activation par défaut.

Groupe d'activation (ACTGRP)

Indique le groupe d'activation auquel est associé le programme CL ILE au moment où il est appelé. Ce groupe d'activation assure un certain nombre de fonctions :

  • Structures de données pour gérer l'exécution des programmes
  • Protection d'adressage
  • Frontière logique pour la création de messages
  • Frontière logique pour l'apurement de l'application

Remarque :Ce paramètre n'est applicable que si le source CL est compilé à l'aide de la commande CRTBNDCL. Pour CRTCLPGM et CRTCLMOD, les valeurs indiquées pour ce paramètre ne sont pas prises en compte.

*STGMDL
Si STGMDL(*SNGLVL) est indiqué, ce programme est activé dans le groupe d'activation QILE lorsqu'il est appelé. Si STGMDL(*TERASPACE) est indiqué, le programme est activé dans le groupe d'activation QILETS lorsqu'il est appelé.
*CALLER
Lorsque ce programme est appelé, il est activé dans le groupe d'activation du programme appelant.
*NEW
Lorsque ce programme est appelé, le système crée un nouveau groupe d'activation.
nom
Indiquez le nom du groupe d'activation à utiliser lors de l'appel de ce programme.

Lier programme de service (BNDSRVPGM)

Indique la liste des exportations de programme de service à examiner lors de la liaison pour s'assurer qu'ils répondent aux demandes d'importation des modules. Les exportations de programme de service ne sont vérifiées que s'il y a des demandes d'importation de module non résolues par l'ensemble d'exportations de module. Tout programme de service indiqué pour le paramètre BNDSRVPGM qui satisfait une demande d'importation de module à lier au programme en cours de création. Le nom du programme de service et la bibliothèque indiqués pour le paramètre BNDSRVPGM sont sauvegardés afin d'être utilisés lors de l'exécution. Vous pouvez indiquer jusqu'à 300 noms.

Vous pouvez contrôler l'activation de chaque programme de service. Vous pouvez indiquer si le programme de service référencé est activé lors de la création du programme ou est mis en différé tant que la procédure exportée à partir du programme de service mis en différé n'a pas été appelée. La mise en différé de l'activation peut améliorer les performances de l'application.

Remarque :Ce paramètre n'est applicable que si le source CL est compilé à l'aide de la commande CRTBNDCL. Pour CRTCLPGM et CRTCLMOD, les valeurs indiquées pour ce paramètre ne sont pas prises en compte.

Valeurs uniques

*NONE
Aucun programme de service n'a été spécifié.

Elément 1 : Programme de service

Qualificatif 1 : Programme de service

*ALL
Recherchez tous les objets de programme de service dans les bibliothèques définies.

Remarque :Cette valeur ne doit être spécifiée dans un environnement utilisateur que lorsque vous connaissez exactement les éléments liés à votre programme. Si vous indiquez *LIBL avec *ALL, vous pouvez obtenir des résultats imprévisibles lors de l'exécution du programme. Indiquez le nom du programme de service générique ou des bibliothèques spécifiques pour mieux contrôler les éléments liés à votre programme.

nom-générique
Indiquez tous les objets de programme de service qui commencent par les caractères précédant le * dans les bibliothèques définies.
nom
Indiquez le nom du programme de service à examiner lors de la résolution des symboles.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques de la liste des bibliothèques de l'unité d'exécution en cours jusqu'à ce que la première occurrence soit trouvée.
nom
Indiquez le nom de la bibliothèque sur laquelle doit porter la recherche.

Remarque :QTEMP n'est pas un nom de bibliothèque valide pour ce paramètre.

Elément 2 : Activation

*IMMED
Le programme de service référencé est activé lorsque le programme créé est activé.
*DEFER
Le programme de service référencé est activé lorsqu'une procédure qu'il exporte est appelée.

Répertoire de liage (BNDDIR)

Indique la liste des répertoires de liage utilisés lors de la résolution des symboles. Les exportations des modules et des programmes de service dans le répertoire de liage ne sont vérifiées que s'il y a des demandes d'importation de module non résolues, que les exportations des modules et des programmes de service (indiqués dans les paramètres MODULE et BNDSRVPGM) n'ont pas pu satisfaire. Vous pouvez indiquer jusqu'à 300 noms.

Remarque :Si les modules d'un répertoire de liage spécifié exportent une procédure référencée par une commande CALLPRC dans le source CL en cours de compilation, le paramètre DFTACTGRP(*NO) doit être indiqué de manière conjointe avec une valeur pour le paramètre ACTGRP. Si le paramètre DFTACTGRP(*YES) est spécifié (ou pris par défaut) sur la commande CRTBNDCL, le programme obtenu ne peut contenir qu'un seul objet *MODULE.

Remarque :Ce paramètre n'est applicable que si le source CL est compilé à l'aide de la commande CRTBNDCL. Pour CRTCLPGM et CRTCLMOD, les valeurs indiquées pour ce paramètre ne sont pas prises en compte.

Valeurs uniques

*NONE
Aucun répertoire de liage n'a été indiqué.

Qualificatif 1 : Répertoire de liage

nom
Indiquez le nom du répertoire de liage utilisé lors de la résolution des symboles.

Qualificatif 2 : Biblio

*LIBL
La recherche porte sur toutes les bibliothèques de la liste des bibliothèques de l'unité d'exécution en cours jusqu'à ce que la première occurrence soit trouvée.
*CURLIB
La recherche porte sur la bibliothèque en cours de l'unité d'exécution. Si aucune bibliothèque n'est définie comme bibliothèque en cours pour l'unité d'exécution, la recherche porte sur la bibliothèque QGPL.
*USRLIBL
La recherche porte uniquement sur les bibliothèques figurant dans la partie utilisateur de la liste des bibliothèques de l'unité d'exécution.
nom
Indiquez le nom de la bibliothèque sur laquelle doit porter la recherche.

Exemples

Exemple 1 : Déclaration de la pile de sous-programme

DCLPRCOPT    SUBRSTACK(50)

Cette commande fixe à 50 le nombre maximal de postes dans la pile de sous-programmes. Lorsque le programme CL est exécuté, si la profondeur de la pile de sous-programmes dépasse 50, le message d'arrêt programme CPF0822 est généré.

Exemple 2 : Déclaration des options de compilateur à remplacer

DCLPRCOPT    ALWRTVSRC(*NO)  USRPRF(*OWNER)

Cette commande remplace les valeurs RTVCLSRC admise (ALWRTVSRC) et Profil utilisateur (USRPRF) indiquées dans la commande Créer un programme CL (CRTCLPGM). Le programme CL qui en résulte ne permet pas d'extraire le code source CL de l'objet *PGM, et lorsque l'objet programme est appelé, il adopte les droits du profil utilisateur qui possède l'objet *PGM.

Exemple 3 : Déclaration des options de compilateur à remplacer

DCLPRCOPT    LOG(*NO)  AUT(*USE)

Cette commande remplace les valeurs Consigner les commandes (LOG) et Droits (AUT) indiquées dans la commande CRTCLMOD. Une fois que le module CL ILE qui est résulte est lié à un programme ou service ILE, et que la procédure CL ILE est appelée, les commandes CL exécutées dans cette procédure ne sont plus consignées dans l'historique du travail. Le droit public pour l'objet *MODULE créé par la commande CRTCLMOD (Créer un module CL) sera *USE.

Exemple 4 : Déclaration des options de compilateur pour remplacer CRTBNDCL

DCLPRCOPT    DFTACTGRP(*NO)  ACTGRP(MYAPP)  +
             BNDDIR(MYAPPLIB/MYBNDDIR)

Cette commande remplace les valeurs Groupe d'activation par défaut (DFTACTGRP) et Groupe d'activation (ACTGRP) indiquées dans la commande Créer un programme CL lié (CRTBNDCL). Le programme CL ILE résultant est exécuté dans le groupe d'activation MYAPP. Lorsque la commande CRTBNDCL exécute la commande CRTPGM (Créer un programme), elle ajoute le répertoire de liage MYBNDDIR à la bibliothèque MYAPPLIB dans le paramètre Répertoire de liage (BINDIR). A partir de là, les programmes de service et les modules ILE référencés par ce répertoire de liage sont disponible pour résoudre les procédures ILE utilisées dans le programme CL ILE.

© Copyright IBM Corp. Texte d'aide reproduit à des fins de formation.