Tous les articles par Mr COBOL

CODE RETOUR -882

SAVEPOINT DOES NOT EXIST

Explication :
Une instruction ROLLBACK TO SAVEPOINT a été spécifiée sans nom de point de sauvegarde pour revenir au dernier point de sauvegarde actif, mais aucun point de sauvegarde n’existe.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Corrigez la logique de l’application pour définir un point de sauvegarde ou pour ne pas tenter de revenir à un point de sauvegarde.

SQLSTATE :
3B502

CODE RETOUR -900

THE SQL STATEMENT CANNOT BE EXECUTED BECAUSE THE APPLICATION PROCESS IS NOT CONNECTED TO A SERVER

Explication :
Un échec précédent a placé le processus d’application dans l’état non connecté. Une demande infructueuse de changement d’utilisateur dans une connexion approuvée peut entraîner le passage de la connexion à un état non connecté. Les seules instructions SQL qui peuvent être exécutées avec succès à partir de l’état non connecté sont les instructions CONNECT, COMMIT, ROLLBACK et SET locales.

Action du système :
La déclaration ne peut pas être traitée.

Réponse du programmeur :
Il est possible qu’aucune réponse ne soit requise car la vérification de -900 est un moyen de détecter l’état non connecté. Si cette erreur résulte d’une autre situation, la logique du programme d’application doit être modifiée.

SQLSTATE :
08003

CODE RETOUR -901

UNSUCCESSFUL EXECUTION CAUSED BY A SYSTEM ERROR THAT DOES NOT PRECLUDE THE SUCCESSFUL EXECUTION OF SUBSEQUENT SQL STATEMENTS

Explication :
Une erreur système s’est produite et a empêché l’exécution réussie de l’instruction SQL en cours.

accelerator-info
Message d’erreur renvoyé par le serveur accélérateur.
Si l’instruction SQL n’est pas une requête envoyée à un serveur accélérateur, les causes possibles de cette erreur incluent :

  • Longueur de l’instruction : la longueur de l’instruction SQL est inférieure à 0 ou supérieure à la longueur maximale autorisée pour une instruction.
  • Traitement de validation distribué : le traitement de validation distribué a rencontré une erreur. Tous les serveurs de l’unité d’oeuvre prenant en charge la validation en deux phases distribuée renvoient l’unité d’oeuvre. Si un serveur qui ne prend pas en charge la validation en deux phases distribuée a des mises à jour dans l’unité d’oeuvre, ce serveur doit être interrogé pour déterminer si ses mises à jour ont été validées ou annulées.
  • Travail de post-traitement incomplet : la transaction est abandonnée et la validation a échoué. Les causes typiques d’un post-traitement incomplet incluent :
    • Une mise à jour qui modifie la partition d’une ligne
    • La disponibilité des ressources
    • L’existence de curseurs maintenus
    • Violations des contraintes d’unicité

Si l’instruction SQL est une requête qui a été envoyée à un serveur accélérateur, l’erreur est renvoyée car le serveur accélérateur n’a pas pu exécuter la requête.

Action du système :
La déclaration ne peut pas être traitée. Une fin anormale X’04E’ peut être demandée pour l’application. Le programme d’application peut avoir une routine de récupération pour récupérer d’une telle fin anormale et peut réessayer des instructions SQL.

L’erreur n’empêche pas l’exécution réussie d’autres instructions SQL.

Réponse du programmeur :
Si une fin anormale s’est produite, informez le programmeur système pour qu’il analyse la fin anormale qui a provoqué ce code retour. Même si une fin anormale s’est produite, un programme d’application recevant ce code retour peut réessayer et il n’est pas interdit d’exécuter d’autres instructions SQL.

Si l’erreur s’est produite lors d’une validation, examinez toutes les informations détaillées sur l’indisponibilité des ressources publiées sur la console de l’opérateur système ou dans le journal des travaux de l’espace d’adressage des services système (ssnmMSTR) pour déterminer si un problème d’indisponibilité des ressources a empêché la fin du post-traitement de la validation.

Si l’erreur s’est produite pour une requête envoyée à un serveur accélérateur, vérifiez si l’instruction SQL contient une erreur logique. Un exemple d’erreur logique dans une instruction SQL est une opération de division qui se traduit par une division par 0. Si vous déterminez que votre application n’est pas la source de l’erreur, contactez le support IBM® et indiquez la valeur accelerator-info dans le jeton.

SQLSTATE :
58004

CODE RETOUR -902

POINTER TO THE ESSENTIAL CONTROL BLOCK (CT/RDA) HAS VALUE 0, REBIND REQUIRED

Explication :
Le pointeur vers le bloc de contrôle essentiel, soit le CT ou le RDA, est des zéros. Cela empêche l’exécution réussie de l’instruction SQL en cours, ainsi que de toutes les instructions SQL ultérieures.

Action du système :
La déclaration ne peut pas être traitée. Le programme d’application n’est pas autorisé à émettre des instructions SQL supplémentaires. Par exemple, une routine de récupération associée au programme d’application peut ne pas émettre d’instructions SQL supplémentaires.

Réponse du programmeur :
Reconnectez le programme d’application défaillant et réessayez. Si le problème persiste, examinez votre DBRM et assurez-vous qu’il correspond à votre programme.

SQLSTATE :
58005

CODE RETOUR -908

bind-type ERROR USING auth-id AUTHORITY. BIND, REBIND OR AUTO-REBIND OPERATION IS NOT ALLOWED

Explication :
Pour BIND et REBIND, l’ID d’autorisation indiqué n’est pas autorisé à effectuer le type de liaison bind-type indiqué sur un plan ou un package. Une entrée dans la table de spécification de limite de ressources (RLST) interdit la liaison et la reliaison par cet ID d’autorisation ou par tous les ID d’autorisation. Pour AUTO-REBIND, le paramètre système contrôlant les opérations AUTO-REBIND est défini pour interdire AUTO-REBIND.

bind-type
Type d’opération de liaison (BIND, REBIND ou AUTO-REBIND).

auth-id
ID d’autorisation de l’appelant de la sous-commande BIND ou ID d’autorisation principal de l’appelant du plan pour les opérations AUTO-REBIND.

Action du système :
Le plan ou le forfait n’est pas lié.

Réponse du programmeur système :
Si l’ID d’autorisation indiqué doit être autorisé à se lier, modifiez l’entrée dans la table RLST active. Si les opérations AUTO-REBIND sont désactivées, reliez à nouveau le package avant de réexécuter le package.

SQLSTATE :
23510

Comparaison de mots réservés

Cette annexe contient un tableau qui montre les différences entre les mots réservés OS/VS COBOL, VS COBOL II, IBM COBOL et Enterprise COBOL.

Note:
Les nouveaux mots réservés (à l’exclusion des nouveaux mots réservés pour un développement futur) qui ont été ajoutés depuis IBM COBOL sont mis en évidence en gras.

 XLe mot est réservé dans le produit
 X*Dans la colonne IBM COBOL, le mot est réservé uniquement dans COBOL pour OS/390 & VM, Version 2 Release 2. Il n’est pas réservé en version 1 version 1 ou versions antérieures.
 X**Dans la colonne Enterprise COBOL, le mot est réservé uniquement dans Enterprise COBOL, version 4 Release 1. Il n’est pas réservé dans Enterprise COBOL Version 3.
 – (minus)Le mot n’est pas réservé dans le produit. (Cela inclut les mots réservés obsolètes qui ne sont plus signalés).
 CDWLe mot est une instruction de directive de compilateur COBOL Enterprise. S’il est utilisé comme mot défini par l’utilisateur, il est marqué d’un message sérieux.
 RFDLe mot est réservé au développement futur. S’il est utilisé, il est marqué d’un message d’information.
 SYSLe mot est un mot ayant une signification spécifique pour le système d’exploitation. Il ne peut être utilisé que dans des contextes spécifiques au sein du programme.
 UNSLe mot est un mot réservé standard COBOL 1985 pour une fonctionnalité non prise en charge par ce compilateur. Pour certains de ces mots, la fonctionnalité est prise en charge par le précompilateur Report Writer. S’il est utilisé dans un programme, il est reconnu comme un mot réservé et marqué d’un message sérieux.

Comparaison de mots réservés

Mot RéservéEnterprise COBOLIBM COBOLVS COBOL IIOS/VS COBOL
ACCEPTXXXX
ACCESSXXXX
ACTIVE-CLASSRFD–––
ACTUAL–––X
ADDXXXX
ADDRESSXXXX
ADVANCINGXXXX
AFTERXXXX
ALIGNEDRFD–––
ALLXXXX
ALLOCATERFD–––
ALPHABETXXX–
ALPHABETICXXXX
ALPHABETIC-LOWERXXX–
ALPHABETIC-UPPERXXX–
ALPHANUMERICXXX–
ALPHANUMERIC-EDITEDXXX–
ALSOXXXX
ALTERXXXX
ALTERNATEXXXX
ANDXXXX
ANYXXX–
ANYCASERFD–––
APPLYXXXX
AREXXXX
AREAXXXX
AREASXXXX
ARITHMETIC–RFDRFD–
ASX**–––
ASCENDINGXXXX
ASSIGNXXXX
ATXXXX
ATTRIBUTESX**–––
AUTHORXXXX
AUTOMATICRFD–––
B-ANDRFDRFDRFD–
B-EXOR–RFDRFD–
B-LESS–RFDRFD–
B-NOTRFDRFDRFD–
B-ORRFDRFDRFD–
B-XORRFD–––
BASEDRFD–––
BASISCDWCDWCDWX
BEFOREXXXX
BEGINNINGXXXX
BINARYXXX–
BINARY-CHARRFD–––
BINARY-DOUBLERFD–––
BINARY-LONGRFD–––
BINARY-SHORTRFD–––
BITRFDRFDRFD–
BITS–RFDRFD–
BLANKXXXX
BLOCKXXXX
BOOLEANRFDRFDRFD–
BOTTOMXXXX
BYXXXX
CALLXXXX
CANCELXXXX
CBLCDWCDWCDWX
CDUNSUNSUNSX
CFUNSUNSUNSX
CHUNSUNSUNSX
CHANGED–––X
CHARACTERXXXX
CHARACTERSXXXX
CLASSXXX–
CLASS-IDXX––
CLOCK-UNITSUNSUNSUNS–
CLOSEXXXX
COBOLXXX–
CODEXXXX
CODE-SETXXXX
COLRFD–––
COLLATINGXXXX
COLSRFD–––
COLUMNUNSUNSUNSX
COLUMNSRFD–––
COM-REGXXX–
COMMAXXXX
COMMIT–RFDRFD–
COMMONXXX–
COMMUNICATIONUNSUNSUNSX
COMPXXXX
COMP-1XXXX
COMP-2XXXX
COMP-3XXXX
COMP-4XXXX
COMP-5XX*RFD–
COMP-6–RFDRFD–
COMP-7–RFDRFD–
COMP-8–RFDRFD–
COMP-9–RFDRFD–
COMPUTATIONALXXXX
COMPUTATIONAL-1XXXX
COMPUTATIONAL-2XXXX
COMPUTATIONAL-3XXXX
COMPUTATIONAL-4XXXX
COMPUTATIONAL-5XX*RFD 
COMPUTATIONAL-6–RFDRFD–
COMPUTATIONAL-7–RFDRFD–
COMPUTATIONAL-8–RFDRFD–
COMPUTATIONAL-9–RFDRFD–
COMPUTEXXXX
CONDITIONRFD–––
CONFIGURATIONXXXX
CONNECT–RFDRFD–
CONSOLESYSSYSSYSX
CONSTANTRFD–––
CONTAINED–RFDRFD–
CONTAINSXXXX
CONTENTXXX–
CONTINUEXXX–
CONTROLUNSUNSUNSX
CONTROLSUNSUNSUNSX
CONVERTINGXXX–
COPYCDWCDWCDWX
CORRXXXX
CORR-INDEX–––X
CORRESPONDINGXXXX
COUNTXXXX
CRTRFD–––
CSPSYSSYSSYSX
CURRENCYXXXX
CURRENT–RFDRFD–
CURRENT-DATE–––X
CURSORRFD–––
C01SYSSYSSYSX
C02SYSSYSSYSX
C03SYSSYSSYSX
C04SYSSYSSYSX
C05SYSSYSSYSX
C06SYSSYSSYSX
C07SYSSYSSYSX
C08SYSSYSSYSX
C09SYSSYSSYSX
C10SYSSYSSYSX
C11SYSSYSSYSX
C12SYSSYSSYSX
DATAXXXX
DATA-POINTERRFD–––
DATEXXXX
DATE-COMPILEDXXXX
DATE-WRITTENXXXX
DAYXXXX
DAY-OF-WEEKXXX–
DB–RFDRFD–
DB-ACCESS-CONTROL-KEY–RFDRFD–
DB-DATA-NAME–RFDRFD–
DB-EXCEPTION–RFDRFD–
DB-RECORD-NAME–RFDRFD–
DB-SET-NAME–RFDRFD–
DB-STATUS–RFDRFD–
DBCSXXX–
DEUNSUNSUNSX
DEBUG–––X
DEBUG-CONTENTSXXXX
DEBUG-ITEMXXXX
DEBUG-LINEXXXX
DEBUG-NAMEXXXX
DEBUG-SUB-1XXXX
DEBUG-SUB-2XXXX
DEBUG-SUB-3XXXX
DEBUGGINGXXXX
DECIMAL-POINTXXXX
DECLARATIVESXXXX
DEFAULTRFDRFDRFD–
DELETEXXXX
DELIMITEDXXXX
DELIMITERXXXX
DEPENDINGXXXX
DESCENDINGXXXX
DESTINATIONUNSUNSUNSX
DETAILUNSUNSUNSX
DISABLEUNSUNSUNSX
DISCONNECT–RFDRFD–
DISP–––X
DISPLAYXXXX
DISPLAY-ST–––X
DISPLAY-1XXX–
DISPLAY-2–RFDRFD–
DISPLAY-3–RFDRFD–
DISPLAY-4–RFDRFD–
DISPLAY-5–RFDRFD–
DISPLAY-6–RFDRFD–
DISPLAY-7–RFDRFD–
DISPLAY-8–RFDRFD–
DISPLAY-9–RFDRFD–
DIVIDEXXXX
DIVISIONXXXX
DOWNXXXX
DUPLICATE–RFDRFD–
DUPLICATESXXXX
DYNAMICXXXX
ECRFD–––
EGCSXXX–
EGIUNSUNSUNSX
EJECTCDWCDWCDWX
ELEMENTSX**–––
ELSEXXXX
EMIUNSUNSUNSX
EMPTY–RFDRFD–
ENABLEUNSUNSUNSX
ENCODINGX**–––
ENDXXXX
END-ACCEPTRFD–––
END-ADDXXX–
END-CALLXXX–
END-COMPUTEXXX–
END-DELETEXXX–
END-DISABLE–RFDRFD–
END-DISPLAYRFD–––
END-DIVIDEXXX–
END-ENABLE–RFDRFD–
END-EVALUATEXXX–
END-EXECXX*––
END-IFXXX–
END-INVOKEXX––
END-MULTIPLYXXX–
END-OF-PAGEXXXX
END-PERFORMXXX–
END-READXXX–
END-RECEIVEUNSUNSUNS–
END-RETURNXXX–
END-REWRITEXXX–
END-SEARCHXXX–
END-SEND–RFDRFD–
END-STARTXXX–
END-STRINGXXX–
END-SUBTRACTXXX–
END-TRANSCEIVE–RFDRFD–
END-UNSTRINGXXX–
END-WRITEXXX–
END-XMLX–––
ENDINGXXXX
ENTERXXXX
ENTRYXXXX
ENVIRONMENTXXXX
EORFD–––
EOPXXXX
EQUALXXXX
EQUALS–RFDRFD–
ERASE–RFDRFD–
ERRORXXXX
ESIUNSUNSUNSX
EVALUATEXXX–
EVERYXXXX
EXACT–RFDRFD–
EXAMINE–––X
EXCEEDS–RFDRFD–
EXCEPTIONXXXX
EXCEPTION-OBJECTRFD–––
EXCLUSIVE–RFDRFD–
EXECXX*––
EXECUTEXX*––
EXHIBIT–––X
EXITXXXX
EXTENDXXXX
EXTERNALXXX–
FACTORYXX*––
FALSEXXX–
FDXXXX
FETCH–RFDRFD–
FILEXXXX
FILE-CONTROLXXXX
FILE-LIMIT–––X
FILE-LIMITS–––X
FILLERXXXX
FINALUNSUNSUNSX
FIND–RFDRFD–
FINISH–RFDRFD–
FIRSTXXXX
FLOAT-EXTENDEDRFD–––
FLOAT-LONGRFD–––
FLOAT-SHORTRFD–––
FOOTINGXXXX
FORXXXX
FORMATRFDRFDRFD–
FREERFDRFDRFD–
FROMXXXX
FUNCTIONXX––
FUNCTION-IDRFD–––
FUNCTION-POINTERX–––
GENERATEUNSUNSUNSX
GETRFDRFDRFD–
GIVINGXXXX
GLOBALXXX–
GOXXXX
GOBACKXXXX
GREATERXXXX
GROUPUNSUNSUNSX
GROUP-USAGEX–––
HEADINGUNSUNSUNSX
HIGH-VALUEXXXX
HIGH-VALUESXXXX
I-OXXXX
I-O-CONTROLXXXX
IDXXXX
IDENTIFICATIONXXXX
IFXXXX
INXXXX
INDEXXXXX
INDEX-1–RFDRFD–
INDEX-2–RFDRFD–
INDEX-3–RFDRFD–
INDEX-4–RFDRFD–
INDEX-5–RFDRFD–
INDEX-6–RFDRFD–
INDEX-7–RFDRFD–
INDEX-8–RFDRFD–
INDEX-9–RFDRFD–
INDEXEDXXXX
INDICATEUNSUNSUNSX
INHERITSXX––
INITIALXXXX
INITIALIZEXXXX
INITIATEUNSUNSUNSX
INPUTXXXX
INPUT-OUTPUTXXXX
INSERTCDWCDWCDWX
INSPECTXXXX
INSTALLATIONXXXX
INTERFACERFD–––
INTERFACE-IDRFD–––
INTOXXXX
INVALIDXXXX
INVOKEXX––
ISXXXX
JNIENVPTRX–––
JUSTXXXX
JUSTIFIEDXXXX
KANJIXXX–
KEEP–RFDRFD–
KEYXXXX
LABELXXXX
LASTUNSUNSUNSX
LD–RFDRFD–
LEADINGXXXX
LEAVE–––X
LEFTXXXX
LENGTHXXXX
LESSXXXX
LIMITUNSUNSUNSX
LIMITSUNSUNSUNSX
LINAGEXXXX
LINAGE-COUNTERXXXX
LINEXXXX
LINE-COUNTERUNSUNSUNSX
LINESXXXX
LINKAGEXXXX
LOCALLY–RFDRFD–
LOCAL-STORAGEXX––
LOCALERFD–––
LOCKXXXX
LOW-VALUEXXXX
LOW-VALUESXXXX
MEMBER–RFDRFD–
MEMORYXXXX
MERGEXXXX
MESSAGEUNSUNSUNSX
METACLASS–X––
METHODXX––
METHOD-IDXX––
MINUSRFD–––
MODEXXXX
MODIFY–RFDRFD–
MODULESXXXX
MORE-LABELSXXXX
MOVEXXXX
MULTIPLEXXXX
MULTIPLYXXXX
NAMED–––X
NAMESPACEX**–––
NAMESPACE-PREFIXX**–––
NATIONALX–––
NATIONAL-EDITEDX–––
NATIVEXXXX
NEGATIVEXXXX
NESTEDRFD–––
NEXTXXXX
NOXXXX
NOMINAL–––X
NONE–RFDRFD–
NOTXXXX
NOTE–––X
NULLXXX–
NULLSXXX–
NUMBERUNSUNSUNSX
NUMERICXXXX
NUMERIC-EDITEDXXX–
OBJECTXX––
OBJECT-COMPUTERXXXX
OBJECT-REFERENCERFD–––
OCCURSXXXX
OFXXXX
OFFXXXX
OMITTEDXXXX
ONXXXX
ONLY–RFDRFD–
OPENXXXX
OPTIONALXXXX
OPTIONSRFD–––
ORXXXX
ORDERXXX–
ORGANIZATIONXXXX
OTHERXXX–
OTHERWISE–––X
OUTPUTXXXX
OVERFLOWXXXX
OVERRIDEXX––
OWNER–RFDRFD–
PACKED-DECIMALXXX–
PADDINGXXX–
PAGEXXXX
PAGE-COUNTERUNSUNSUNSX
PARAGRAPH–RFDRFD–
PASSWORDXXXX
PERFORMXXXX
PFUNSUNSUNSX
PHUNSUNSUNSX
PICXXXX
PICTUREXXXX
PLUSUNSUNSUNSX
POINTERXXXX
POSITIONXXXX
POSITIONING–––X
POSITIVEXXXX
PRESENTRFDRFDRFD–
PREVIOUSRFDRFD––
PRINT-SWITCH–––X
PRINTINGUNSUNSUNS–
PRIOR–RFDRFD–
PROCEDUREXXXX
PROCEDURE-POINTERXX––
PROCEDURESXXXX
PROCEEDXXXX
PROCESSINGXXXX
PROGRAMXXXX
PROGRAM-IDXXXX
PROGRAM-POINTERRFD–––
PROPERTYRFD–––
PROTECTED–RFDRFD–
PROTOTYPERFD–––
PURGEUNSUNSUNS–
QUEUEUNSUNSUNSX
QUOTEXXXX
QUOTESXXXX
RAISERFD–––
RAISINGRFD–––
RANDOMXXXX
RDUNSUNSUNSX
READXXXX
READYXXXX
REALM–RFDRFD–
RECEIVEUNSUNSUNSX
RECONNECT–RFDRFD–
RECORDXXXX
RECORD-NAME–RFDRFD–
RECORD-OVERFLOW–––X
RECORDINGXXXX
RECORDSXXXX
RECURSIVEXX––
REDEFINESXXXX
REELXXXX
REFERENCEXXX–
REFERENCESXXXX
RELATION–RFDRFD–
RELATIVEXXXX
RELEASEXXXX
RELOADXXXX
REMAINDERXXXX
REMARKS–––X
REMOVALXXXX
RENAMESXXXX
REORG-CRITERIA–––X
REPEATED–RFDRFD–
REPLACEXXX–
REPLACINGXXXX
REPORTUNSUNSUNSX
REPORTINGUNSUNSUNSX
REPORTSUNSUNSUNSX
REPOSITORYXX––
REREAD–––X
RERUNXXXX
RESERVEXXXX
RESETXXXX
RESUMERFD–––
RETAINING–RFDRFD–
RETRIEVAL–RFDRFD–
RETRYRFD–––
RETURNXXXX
RETURN-CODEXXXX
RETURNINGXX––
REVERSEDXXXX
REWINDXXXX
REWRITEXXXX
RFUNSUNSUNSX
RHUNSUNSUNSX
RIGHTXXXX
ROLLBACK–RFDRFD–
ROUNDEDXXXX
RUNXXXX
SAMEXXXX
SCREENRFD–––
SDXXXX
SEARCHXXXX
SECTIONXXXX
SECURITYXXXX
SEEK–––X
SEGMENTUNSUNSUNSX
SEGMENT-LIMITXXXX
SELECTXXXX
SELECTIVE–––X
SELFXX––
SENDUNSUNSUNSX
SENTENCEXXXX
SEPARATEXXXX
SEQUENCEXXXX
SEQUENTIALXXXX
SERVICEXXXX
SESSION-ID–RFDRFD–
SETXXXX
SHARED–RFDRFD–
SHARINGRFD–––
SHIFT-INXXX–
SHIFT-OUTXXX–
SIGNXXXX
SIZEXXXX
SKIP-1–––X
SKIP-2–––X
SKIP-3–––X
SKIP1CDWCDWCDW–
SKIP2CDWCDWCDW–
SKIP3CDWCDWCDW–
SORTXXXX
SORT-CONTROLXXX–
SORT-CORE-SIZEXXXX
SORT-FILE-SIZEXXXX
SORT-MERGEXXXX
SORT-MESSAGEXXXX
SORT-MODE-SIZEXXXX
SORT-RETURNXXXX
SOURCEUNSUNSUNSX
SOURCE-COMPUTERXXXX
SOURCESRFD–––
SPACEXXXX
SPACESXXXX
SPECIAL-NAMESXXXX
SQLXX*––
STANDARDXXXX
STANDARD-1XXXX
STANDARD-2XXX–
STANDARD-3–RFDRFD–
STANDARD-4–RFDRFD–
STARTXXXX
STATUSXXXX
STOPXXXX
STORE–RFDRFD–
STRINGXXXX
SUB-QUEUE-1UNSUNSUNSX
SUB-QUEUE-2UNSUNSUNSX
SUB-QUEUE-3UNSUNSUNSX
SUB-SCHEMARFDRFDRFD–
SUBTRACTXXXX
SUMUNSUNSUNSX
SUPERXX––
SUPPRESSXXXX
SYMBOLICXXXX
SYNCXXXX
SYNCHRONIZEDXXXX
SYSINSYSSYSSYSX
SYSIPTSYSSYSSYS–
SYSLISTSYSSYSSYSX
SYSLSTSYSSYSSYS–
SYSOUTSYSSYSSYSX
SYSPCHSYSSYSSYS–
SYSPUNCHSYSSYSSYSX
SYSTEM-DEFAULTRFD–––
S01SYSSYSSYSX
S02SYSSYSSYSX
S03SYSSYSSYS–
S04SYSSYSSYS–
S05SYSSYSSYS–
TABLEUNSUNSUNSX
TALLYXXXX
TALLYINGXXXX
TAPEXXXX
TENANT–RFDRFD–
TERMINALUNSUNSUNSX
TERMINATEUNSUNSUNSX
TESTXXX–
TEXTUNSUNSUNSX
THANXXXX
THENXXXX
THROUGHXXXX
THRUXXXX
TIMEXXXX
TIME-OF-DAY–––X
TIMESXXXX
TITLECDWCDWCDW–
TOXXXX
TOPXXXX
TOTALED–––X
TOTALING–––X
TRACEXXXX
TRACK-AREA–––X
TRACK-LIMIT–––X
TRACKS–––X
TRAILINGXXXX
TRANSCEIVE–RFDRFD–
TRANSFORM–––X
TRUEXXX–
TYPEXX*––
TYPEDEFRFD–––
UNEQUAL–RFDRFD–
UNITXXXX
UNIVERSALRFD–––
UNLOCKRFD–––
UNSTRINGXXXX
UNTILXXXX
UPXXXX
UPDATERFDRFDRFD–
UPONXXXX
UPSI-0SYSSYSSYSX
UPSI-1SYSSYSSYSX
UPSI-2SYSSYSSYSX
UPSI-3SYSSYSSYSX
UPSI-4SYSSYSSYSX
UPSI-5SYSSYSSYSX
UPSI-6SYSSYSSYSX
UPSI-7SYSSYSSYSX
USAGEXXXX
USAGE-MODE–RFDRFD–
USEXXXX
USER-DEFAULTRFD–––
USINGXXXX
VAL-STATUSRFD–––
VALIDRFDRFDRFD–
VALIDATERFDRFDRFD–
VALIDATE-STATUSRFD–––
VALUEXXXX
VALUESXXXX
VARYINGXXXX
WAIT–RFDRFD–
WHENXXXX
WHEN-COMPILEDXXXX
WITHXXXX
WITHIN–RFDRFD–
WORDSXXXX
WORKING-STORAGEXXXX
WRITEXXXX
WRITE-ONLYXXXX
XMLX–––
XML-CODEX–––
XML-DECLARATIONX**–––
XML-EVENTX–––
XML-NAMESPACEX**–––
XML-NAMESPACE-PREFIXX**–––
XML-NNAMESPACEX**–––
XML-NNAMESPACE-PREFIXX**–––
XML-NTEXTX–––
XML-TEXTX–––
ZEROXXXX
ZEROESXXXX
ZEROSXXXX
<XXXX
<=XXX–
+XXXX
*XXXX
**XXXX
–XXXX
/XXXX
>XXXX
>=XXX–
=XXXX

Identificateurs de phase du compilateur

Dans les messages, les deux caractères suivant IGYC sont des identificateurs de phase du compilateur, qui identifient la phase du compilateur qui a émis le message.

AS
Phase du module de contrôle de phase du générateur de code (IGYCASMB).
Cette phase charge et contrôle la phase de générateur de code IGYCCBE.

CB
Phase de génération et d’optimisation de code (IGYCCBE).
Cette phase (facultativement) optimise le programme, puis génère des instructions machine et alloue et gère l’utilisation des registres.
Cette phase place également la sortie LIST dans la liste et (éventuellement) génère des informations de débogage si la sous-option DWARF de TEST|NOTEST était en vigueur.

DI
Phase diagnostique (IGYCDIAG).
Cette phase traite le texte électronique et génère des diagnostics du compilateur pour les erreurs du programme source.

DM
Phase DMAP (IGYCDMAP).
Cette phase traite l’option MAP pour générer la mappe de stockage DATA DIVISION.
Il utilise les données contenues dans le dictionnaire pour produire la carte de stockage.

DS
Sous-phase de numérisation des données (IGYCDSCN).
Cette phase traduit les instructions de source d’entrée dans la  IDENTIFICATION DIVISION, ENVIRONMENT DIVISION et DATA DIVISION en texte interne du compilateur.
Il identifie et classe également les déclarations et effectue une analyse syntaxique des déclarations et des éléments de déclaration.
Une entrée est créée dans la table des symboles pour chaque nom d’utilisateur unique identifié dans cette analyse.

Cette phase crée des entrées de table d’attributs pour les éléments de définition de données (par exemple, des noms de données ou des noms de fichiers), traite les clauses d’entrée de description de données et vérifie la compatibilité des clauses dans une entrée.

Des entrées de table d’informations générales sont également créées pour les masques d’IMAGE édités et les séquences d’assemblage définies par l’utilisateur associées à un nom alphabétique.

FG
Phase de génération de fichiers (IGYCFGEN).
Cette phase est une phase conditionnelle exécutée uniquement si le programme COBOL contient un FD (fichier d’E/S) et/ou un SD (fichier de tri).

GR
Sous-phase de processus de groupe (IGYCGROU).
La sous-phase de traitement de groupe de la phase d’analyse traite les références aux noms de données dans la ENVIRONMENT DIVISION et DATA DIVISION.
Cette phase résout toutes les références de données directes rencontrées par DSCN (et pour lesquelles le texte I a été produit), en complétant les entrées de table d’attributs et de GIT pour ces références.
Cette phase est également responsable du traitement des littéraux de la clause VALUE et de la création du formulaire de procédure requis I-text (pour format-1 VALUE) ou des entrées GIT (pour format-2 VALUE) pour ces littéraux.

IN
Phase d’initialisation (IGYCINIT).
Cette phase exécute les fonctions de gestion interne requises pour préparer l’environnement d’exploitation pour le traitement des programmes sources.
Il est également invoqué à la fin de la compilation pour effectuer le ménage impliqué dans l’arrêt normal du programme.

Comme ces fonctions ne sont exécutées qu’une seule fois pour chaque compilation, le code est contenu dans la phase d’initialisation plutôt que dans la phase de contrôle résident.
Cette phase n’est pas résidente lors de la compilation.

LI
Phase de copie (IGYCLIBR).
Cette phase analyse la source COBOL de l’utilisateur à la recherche d’instructions COPY, BASIS et REPLACE.
Elle n’est invoquée que si l’option LIB a été spécifiée.
Les textes sources originaux et de la bibliothèque sont traités et une analyse lexicale et syntaxique des instructions COPY, BASIS et REPLACE est effectuée.
La phase met à jour le texte de la bibliothèque et crée un texte de forme C (COPY).

LS
Phase de listage (IGYCLSTR).
Cette phase gère la construction de la liste des sources du programme.
Cette phase traite le L-text (texte de liste) et, si les options appropriées du compilateur sont sélectionnées, intègre les messages de diagnostic, les informations cartographiques et les informations de référence croisée dans la liste source.
Il indique également les niveaux d’imbrication des instructions ou des programmes pour chaque ligne source.

OS
Phase d’analyse des options (IGYCOSCN).
Cette phase détermine quelles options de compilation doivent être actives en fusionnant les options et en résolvant les conflits parmi les éléments suivants :

  • Tableau des options par défaut
  • Relevés CBL
  • Instruction JCL PARM
  • Instruction JCL OPTION (VSE uniquement)

PA
Sous-phase d’analyse de la procédure (IGYCPANA).
Cette phase effectue une analyse sémantique des instructions source de PROCEDURE DIVISION, transforme le texte I en texte M et résout les références de nom de procédure.

PG
Phase de génération de procédure (IGYCPGEN).
Cette phase traite les verbes codés dans la PROCEDURE DIVISION du programme COBOL ou générés par la phase d’analyse de la procédure.

De plus, certaines informations sur le programme source nécessaires aux phases d’assemblage sont collectées dans cette phase.
Si l’option NOCOMPILE est active, cette phase n’est pas exécutée.

PS
Sous-phase de balayage de procédure (IGYCPSCN).
La sous-phase Procedure Scan de la phase Scan effectue une analyse syntaxique et une partie de l’analyse sémantique sur les instructions source PROCEDURE DIVISION.
Il traduit chaque nom de données apparaissant comme opérande dans une instruction en décalage de table d’attributs et collecte les informations d’attribut pour l’opérande.
Il valide également chaque opérande. Sur la base de la définition du langage, il diagnostique les opérandes invalides.

RC
Phase de contrôle résident (IGYCRCTL).
Cette phase établit l’environnement de compilation et contrôle le chargement et la suppression de toutes les phases du compilateur.
IGYCRCTL est chargé par le système d’exploitation hôte ou par la phase d’interface CMS, COBOL2, sous CMS.
Cette phase reste en mémoire tout au long du processus de compilation.

SC
Phase de balayage (IGYCSCAN).
Cette phase gère les sous-phases Data Scan (DS) , Group Process (GR), Procedure Scan (PS)  et Procedure Analysis (PA) .

SI
Phase d’interface système (IGYCSIMD).
Cette phase obtient et initialise le stockage dynamique pour le traitement du compilateur.
Il est appelé par toutes les phases via les macros de service communes pour exécuter des fonctions dépendantes du système.
Cette phase est toujours chargée dans les 16 premiers mégaoctets de stockage et réside dans le stockage tout au long de la compilation.
IGYCSIMD est chargé par IGYCRCTL, la phase de contrôle résidente.

XR
Phase de référence croisée (IGYCXREF).
Cette phase produit les renvois demandés par l’option XREF.

Limites du compilateur

COBOL a les limites du compilateur suivantes pour les programmes et les définitions de classe.

Bien que le compilateur COBOL prenne en charge l’adressage de plusieurs zones de mémoire au sein d’une unité de compilation jusqu’aux limites décrites dans cette annexe, une application complète, généralement composée de plusieurs unités de compilation, est toujours limitée par la quantité de stockage privé disponible dans l’espace d’adressage à laquelle il court.

En d’autres termes, une application peut manquer d’espace de stockage avant d’atteindre les limites décrites.

Limites du compilateur

Élément de langueLimite du compilateur
Longueur maximale des mots définis par l’utilisateur (par exemple, nom-données , nom-fichier , nom-classe )30 octets
Taille du programme999 999 lignes
Nombre de littéraux4 194 303 (Remarque 1)
Longueur totale des littéraux4 194 303 octets (Remarque 1)
Entrées de table de mots réservés1536
COPY REPLACING . . . BY . . . (éléments par déclaration COPY)Sans limites
Nombre de bibliothèques COPYSans limites
Taille de bloc de la bibliothèque COPY32 760 octets
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
Configuration section
Paragraphe des noms spéciaux
nom-mnémonique IS18
UPSI- n … (commutateurs)0-7
nom-alphabet IS . . .Sans limites
Littéral THRU . . . ou ALSO. . .256
Input-Output section
File-control paragraphe
SELECT nom-fichier …Un maximum de 65 535 noms de fichiers peuvent être attribués à des noms externes
ASSIGN nom-système …Sans limites
ALTERNATE RECORD KEY nom-données …253
RECORD KEY LongueurAucune limite (Remarque 3)
RESERVE entier (buffers)255 (Remarque 4)
I-O-control paragraphe
RERUN ON nom-système …32 767
RERUN entier RECORDS16 777 215
SAME RECORD AREA255
SAME RECORD AREA FOR nom-fichier …255
SAME SORT/MERGE AREAAucune limite (Remarque 2)
MULTIPLE FILE nom-fichier …Aucune limite (Remarque 2)
DATA DIVISION
77 taille de l’élément de données999 999 999 octets
01-49 taille de l’élément de données999 999 999 octets
Total 01 + 77 (éléments de données)Sans limites
88 noms-condition . . .Sans limites
Clause VALUE de niveau 88 . . .Sans limites
66 RENAMES . . .Sans limites
Clause PICTURE, nombre de caractères dans chaîne-caractères50
Clause PICTURE, positions des chiffres des éléments numériquesAvec ARITH(COMPAT): 18
Avec ARITH(EXTEND): 31
Clause PICTURE, positions de caractères éditées numériquement249
Réplication du symbole d’image ( )999 999 999 octets
Réplication de symboles d’image (édition)32 767
Réplication de symbole d’image ( ), éléments DBCS de classe499 999 999 octets
Reproduction d’un symbole d’image ( ), classer les éléments nationaux499 999 999 octets
Taille de l’élément élémentaire134 217 727 octets
OCCURS entier999 999 999
Nombre total d’ODO4 194 303 (Remarque 1)
Taille du tableau999 999 999 octets
Taille des éléments du tableau999 999 999 octets
ASCENDING or DESCENDING KEY . . . (par clause OCCURS)12 CLÉS
Longueur totale des clés (par clause OCCURS)256 octets
INDEXED BY . . . (noms d’index par clause OCCURS)12
Nombre total d’index (noms d’index) par classe ou programme65 535
Taille de l’index relatif32 765
FILE SECTION
Saisie de la description de l’enregistrement FD1 048 575 octets
nom-fichier FD . . .65 535
LABEL nom-donnée . . . (si pas de clauses facultatives)255
Longueur d’enregistrement de l’étiquette80 octets
BLOCK CONTAINS entier2 147 483 647 (remarque 8)
RECORD CONTAINS entier1 048 575 (remarque 5)
Valeurs de la clause LINAGE99 999 999
nom-fichier SD . . .65 535
DATA RECORD nom-donnée . . .Aucune limite (Remarque 2)
LINKAGE SECTION
Taille totaleSans limites
LOCAL-STORAGE SECTION
Taille totale2 147 483 646 octets
WORKING-STORAGE SECTION
Taille totale des éléments sans l’attribut externe2 147 483 646 octets
Taille totale des éléments avec l’attribut externe2 147 483 646 octets
PROCEDURE DIVISION
Procédure et aire constante4 194 303 octets (Remarque 1)
PROCEDURE DIVISION USING identifiant . . .32 767
Procedure-names1 048 575 (Remarque 1)
Noms de données en indice par instruction32 767
Relevés par ligne (TEST)7
Instruction ACCEPT, longueur d’enregistrement sur le périphérique d’entrée32 760
ADD identifiant . . .Sans limites
ALTER nom-procédure-1 TO nom-procédure-2 . . .4 194 303 (Remarque 1)
CALL . . . BY CONTENT Identifiant2 147 483 647 octets
CALL identifiant ou littéral USING identifiant ou littéral . . .16 380
CALL littéral . . .4 194 303 (Remarque 1)
Programmes actifs dans une unité d’exécution32 767
Nombre de noms appelés (option DYN)Sans limites
CANCEL identifiant ou littéral . . .Sans limites
CLOSE nom-fichier . . .Sans limites
COMPUTE Identifiant  . . .Sans limites
DISPLAY identifiant ou littéral   . . .Sans limites
DIVIDE Identifiant  . . .Sans limites
ENTRY USING identifiant ou littéral . . .Sans limites
EVALUATE . . . sujets64
EVALUATE . . . WHEN  clause 256
GO nom_procédure . . . DEPENDING255
INSPECT TALLYING et REPLACING ClausesSans limites
MERGE nom-fichier ASC ou DES KEY . . .Sans limites
Longueur totale de la clé de fusion4 092 octets (Remarque 6)
MERGE USING nom-fichier . . .16 (Note 7)
MOVE Identifiant ou littéral TO identificateur . . .Sans limites
MULTIPLY Identifiant  . . .Sans limites
OPEN nom-fichier . . .Sans limites
PERFORM4 194 303
PERFORM . . . TIMES identifiant ou littéral999 999 999
SEARCH ALL . . . longueur de clé maximaleSans limites
SEARCH ALL . . . longueur totale des clésSans limites
SEARCH . . . WHEN . . .Sans limites
SET index ou identifiant . . . TOSans limites
SET indice . . . UP/DOWNSans limites
SORT nom-fichier ASC ou DES KEYSans limites
Longueur totale de la clé de tri4 092 octets (Remarque 6)
SORT USING nom-fichier . . .16 (Remarque 7)
STRING Identifiant  . . .Sans limites
STRING DELIMITED Identifiant ou littéral  . . .Sans limites
UNSTRING DELIMITED identifiant ou littéral   . . .Sans limites
UNSTRING INTO identifiant ou littéral . . .Sans limites
USE . . . ON nom-fichier . . .Sans limites
Instruction XML PARSE, taille maximale de identifiant999 999 999 octets

Remarques:

  1. Éléments inclus dans la limite de 4 194 303 octets pour la procédure plus la zone constante.
  2. Syntaxe vérifiée, mais n’a aucun effet sur l’exécution du programme ; il n’y a pas de limites.
  3. Pas de limite de compilateur, mais VSAM le limite à 255 octets.
  4. QSAM.
  5. Limite du compilateur affichée, mais QSAM la limite à 32 760 octets.
  6. Pour QSAM et VSAM, la limite est de 4088 octets si EQUALS est codé dans l’instruction de contrôle OPTION.
  7. Limite SORT pour QSAM et VSAM.
  8. Nécessite la prise en charge de l’interface LBI (Large Block Interface) fournie par OS/390® DFSMS Version 2 Release 10.0 ou ultérieure.
    Sur les systèmes OS/390 avec des versions antérieures de DFSMS, la limite est de 32 760 octets.

Exemple – MOVE COORESPONDING

Programme utilisant MOVE COORESPONDING :

IDENTIFICATION DIVISION.
PROGRAM-ID. MOVECORR.
AUTHOR.     LA COMMUNAUTE DU COBOL.

DATA DIVISION.
FILE SECTION.

WORKING-STORAGE SECTION.

01          WS-DATE-HEURE.
    05      WS-DATE.
            10  WS-ANNEE            PIC X(004).
            10  WS-MOIS             PIC X(002).
            10  WS-JOUR             PIC X(002).
    05      WS-HEURE.
            10  WS-HEURES           PIC X(002).
            10  WS-MINUTES          PIC X(002).
            10  WS-SECONDES         PIC X(002).
    
01          WS-DATE-HEURE-FORMAT.
    05      WS-DATE-FORMAT.
            10  WS-JOUR         PIC X(002).
            10                  PIC X(001) VALUE "/".
            10  WS-MOIS         PIC X(002).
            10                  PIC X(001) VALUE "/".
            10  WS-ANNEE        PIC X(004).
    05      WS-HEURE-FORMAT.
            10  WS-HEURES        PIC X(002).
            10  FILLER          PIC X(001) VALUE ":".
            10  WS-MINUTES      PIC X(002).
            10  FILLER          PIC X(001) VALUE ":".
            10  WS-SECONDES     PIC X(002).

PROCEDURE DIVISION.

    MOVE FUNCTION CURRENT-DATE TO WS-DATE-HEURE
    DISPLAY "WS-DATE-HEURE - " WS-DATE-HEURE
	
    MOVE CORRESPONDING WS-DATE  TO WS-DATE-FORMAT 
    MOVE CORRESPONDING WS-HEURE TO WS-HEURE-FORMAT 
	
    DISPLAY "WS-DATE-FORMAT  : " WS-DATE-FORMAT
    DISPLAY "WS-HEURE-FORMAT : " WS-HEURE-FORMAT

    STOP RUN.

Resultat:
WS-DATE-HEURE - 20230301020008
WS-DATE-FORMAT  : 01/03/2023
WS-HEURE-FORMAT : 02:00:08

8.8 LES INSTRUCTIONS CONDITIONNELLES

Il existe différents types de conditions en COBOL. Une condition peut-être :
– de relation
– de classe
– de signe

Une condition de relation a la structure suivante :

IF MONTANT IS EQUAL TO 25.00 ….
IF TOTAL > MONTANT ….
IF SALAIRE-BRUT NOT < LIMITE ….

Une condition de classe a la structure suivante :

IF CODE-PROV IS NOT ALPHABETIC ….
IF MONTANT IS NUMERIC ….

Une condition de signe a la structure suivante :

L ’item doit être numérique (PIC 9)

IF TOTAL-CREDITS IS NEGATIVE ….
IF MONTANT IS POSITIVE ….
IF MONTANT-EN-CAISSE - DEBOURSES IS NOT ZERO ….

Les conditions peuvent être combinées pour former des conditions complexes avec AND et OR .

IF MOYENNE = 0 AND NBR-ETUDIANT NOT EQUAL TO ZERO ….
IF A = B OR C > D ….

La structure de sélection est traduite en COBOL par l ’énoncé IF :

IF condition
THEN Instruction impérative ….
[ELSE Instruction impérative ….]
END-IF

Exemple :

IF HRES-TRAV > 40 THEN
    COMPUTE HRES-SUPP = HRES-TRAV - 40
    COMPUTE PAYE-SUPP = HRES-SUPP * TAUX-HOR
    MOVE 40 TO HRES-REG
ELSE
    MOVE ZERO TO PAYE-SUPP
    MOVE HRES-TRAV TO HRES-REG.
    COMPUTE PAYE-REG = HRES-REG * TAUX-HOR.
    COMPUTE PAYE-TOTALE = PAYE-REG + PAYE-SUPP
END-IF.

Il est possible de donner un nom à une condition et d ’utiliser celui-ci à sa place.
Un nom de condition est défini à l ’aide du niveau 88.

88 nom-condition VALUE const-1 [{THRU} const-2 ….]

La description de niveau 88 doit suivre immédiatement celle de l ’item élémentaire auquel on fait référence. La constante doit être du même type.

05 note PIC X.
88 echec VALUE ‘E’.

Quand le nom de condition est utilisé, la valeur de l ’item et la valeur indiquée dans la description de niveau 88 sont comparées.

IF echec THEN
    PERFORM traiter-echec

ELSE PERFORM traiter-reussite
END-IF.

EVALUATE

Il est utilisé pour représenter une structure de sélection de type ‘CASE’ :

EVALUATE CHOIX
    WHEN ‘A’ PERFORM TRAITER-AJOUT
    WHEN ‘M’ PERFORM TRA