Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 COBOL

COBOL ACCEPT Statement

Beginner 🕑 10 min read 👁 1 views

COBOL ACCEPT Statement

The ACCEPT statement retrieves data from external sources like system date, time, or user input.

Syntax

ACCEPT identifier [FROM mnemonic-name/environment-name]
ACCEPT identifier FROM DATE/DAY/DAY-OF-WEEK/TIME
ACCEPT identifier FROM CONSOLE/SYSIN

Example Program

       IDENTIFICATION DIVISION.
       PROGRAM-ID. ACCEPT-DEMO.

       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 WS-DATE         PIC 9(6).
       01 WS-DATE-FORMATTED.
          05 WS-YY        PIC 99.
          05 FILLER       PIC X VALUE '/'.
          05 WS-MM        PIC 99.
          05 FILLER       PIC X VALUE '/'.
          05 WS-DD        PIC 99.
       01 WS-DATE-8       PIC 9(8).
       01 WS-TIME         PIC 9(8).
       01 WS-TIME-FORMATTED.
          05 WS-HH        PIC 99.
          05 FILLER       PIC X VALUE ':'.
          05 WS-MIN       PIC 99.
          05 FILLER       PIC X VALUE ':'.
          05 WS-SS        PIC 99.
       01 WS-DAY          PIC 9(5).
       01 WS-DAY-OF-WEEK  PIC 9.
       01 WS-DAY-NAME     PIC X(10).
       01 WS-USER-INPUT   PIC X(20).

       PROCEDURE DIVISION.
      * Accept current date (YYMMDD)
           ACCEPT WS-DATE FROM DATE
           MOVE WS-DATE(1:2) TO WS-YY
           MOVE WS-DATE(3:2) TO WS-MM
           MOVE WS-DATE(5:2) TO WS-DD
           DISPLAY 'Date (YY/MM/DD): ' WS-DATE-FORMATTED

      * Accept current date (YYYYMMDD) - if supported
           ACCEPT WS-DATE-8 FROM DATE YYYYMMDD
           DISPLAY 'Date (YYYYMMDD): ' WS-DATE-8

      * Accept current time (HHMMSSCC)
           ACCEPT WS-TIME FROM TIME
           MOVE WS-TIME(1:2) TO WS-HH
           MOVE WS-TIME(3:2) TO WS-MIN
           MOVE WS-TIME(5:2) TO WS-SS
           DISPLAY 'Time (HH:MM:SS): ' WS-TIME-FORMATTED

      * Accept day of year (YYDDD)
           ACCEPT WS-DAY FROM DAY
           DISPLAY 'Julian Day: ' WS-DAY

      * Accept day of week (1=Monday to 7=Sunday)
           ACCEPT WS-DAY-OF-WEEK FROM DAY-OF-WEEK
           EVALUATE WS-DAY-OF-WEEK
               WHEN 1 MOVE 'Monday' TO WS-DAY-NAME
               WHEN 2 MOVE 'Tuesday' TO WS-DAY-NAME
               WHEN 3 MOVE 'Wednesday' TO WS-DAY-NAME
               WHEN 4 MOVE 'Thursday' TO WS-DAY-NAME
               WHEN 5 MOVE 'Friday' TO WS-DAY-NAME
               WHEN 6 MOVE 'Saturday' TO WS-DAY-NAME
               WHEN 7 MOVE 'Sunday' TO WS-DAY-NAME
           END-EVALUATE
           DISPLAY 'Day of Week: ' WS-DAY-NAME

           STOP RUN.

Expected Output

Date (YY/MM/DD): 24/01/15
Date (YYYYMMDD): 20240115
Time (HH:MM:SS): 14:30:25
Julian Day: 24015
Day of Week: Monday

Key Points

  • DATE returns YYMMDD format
  • TIME returns HHMMSSCC (CC=centiseconds)
  • DAY returns YYDDD (Julian date)
  • DAY-OF-WEEK returns 1-7
  • Console input for interactive programs