Instruction ACCEPT

Utiliser ACCEPT pour lire des données en COBOL

L’instruction ACCEPT permet de lire une valeur extérieure (saisie utilisateur, JCL, système) et de la placer dans une variable, sans contrôle ni formatage automatique.

Saisie au clavier Date / heure système
Visualise le flux : source ➜ ACCEPT ➜ variable.
Schéma d'utilisation de ACCEPT
Source : clavier / JCL "Jean" Saisie ou ligne SYSIN/JCL
Variable cible WS-NAME = "_____ " Déclarée en WORKING-STORAGE
Source : système DATE JJMMAAAA ACCEPT FROM DATE / TIME
Simulation de l'exécution
ACCEPT WS-NAME. Saisir : Jean WS-NAME = "Jean" ACCEPT WS-DATE FROM DATE. WS-DATE contient la date système brute.

ACCEPT en pratique

Étape 1 – Syntaxe de base

La forme simple ACCEPT variable lit une valeur depuis la source par défaut (clavier ou SYSIN) et la stocke telle quelle dans la variable.

La variable doit être de type affichage (généralement PIC X ou un groupe alphanumérique) et assez longue pour contenir la saisie.

Étape 2 – ACCEPT avec FROM

Avec la clause FROM, ACCEPT peut lire des informations système comme la date, le jour ou l’heure.

Exemple : ACCEPT WS-DATE FROM DATE lit la date courante dans WS-DATE, sans mise en forme automatique pour l’affichage.

Étape 3 – Points de vigilance

ACCEPT ne vérifie pas que la donnée saisie respecte la PICTURE : c’est au programmeur d’effectuer les contrôles nécessaires ensuite.

En production, on limite souvent ACCEPT direct depuis la console, au profit de données fournies par JCL, fichiers ou écrans dédiés.

Exemple 1 – Saisie au clavier
* Demander un nom à l'utilisateur IDENTIFICATION DIVISION. PROGRAM-ID. ACCEPT-NAME. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-NAME PIC X(30). PROCEDURE DIVISION. DISPLAY "Entrez votre nom : ". ACCEPT WS-NAME. DISPLAY "Bonjour, " WS-NAME " !". STOP RUN.
Exemple 2 – Date système avec FROM DATE
* Récupérer la date système brute IDENTIFICATION DIVISION. PROGRAM-ID. ACCEPT-DATE. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-DATE PIC X(8). * Selon le compilateur, format souvent AAAAMMJJ ou JJMMAAAA PROCEDURE DIVISION. ACCEPT WS-DATE FROM DATE. DISPLAY "Date brute : " WS-DATE. STOP RUN.
Exemple 3 – Combiner ACCEPT et contrôles
* Lire un âge et vérifier qu'il est numérique IDENTIFICATION DIVISION. PROGRAM-ID. ACCEPT-AGE. DATA DIVISION. WORKING-STORAGE SECTION. 01 WS-AGE-TEXT PIC X(3). 01 WS-AGE PIC 9(3). PROCEDURE DIVISION. DISPLAY "Entrez votre âge : ". ACCEPT WS-AGE-TEXT. * Ici, on pourrait vérifier que WS-AGE-TEXT * ne contient que des chiffres MOVE WS-AGE-TEXT TO WS-AGE. DISPLAY "Vous avez " WS-AGE " ans.". STOP RUN.