Skip to content

Found another extreme issue with ACCEPT statement #311

Description

@m4tosm4

I’ve been looking into how to edit a numeric value using an alphanumeric field and came across something strange that was difficult to figure out.

Here’s an example using ACCEPT string with the UPDATE, SIZE and CURSOR phrases...

   >>SOURCE FIXED

   IDENTIFICATION DIVISION.
   PROGRAM-ID. "t2".

   ENVIRONMENT DIVISION.
   CONFIGURATION SECTION.
   SPECIAL-NAMES.
       CRT STATUS IS nCrtStatus
  *    CURSOR IS nCursor
       .
   REPOSITORY.
       FUNCTION ALL INTRINSIC
   .

   DATA DIVISION.
   WORKING-STORAGE SECTION.

       COPY "screenio.cpy".    *> GnuCOBOL standard copyfile

   77  nValue            PIC S9(3)V999.
   77  eValue            PIC -(3)9.999.

   78  N-LEN             VALUE LENGTH OF eValue.
   77  cValue            PIC X(N-LEN).

   77  nSize             PIC 9(2).
   77  nOffset           PIC 9(2).
  *77  nCursor           PIC 9(4).

   77  eDisplay3         PIC --,--9.999.   *> -1,234.567

   77  sBellStatus       PIC X(10).

   77  nCrtStatus        PIC 9(4).         *> See SPECIAL-NAMES

   77  i                 BINARY-LONG.
   77  ei                PIC -(10)9.

   PROCEDURE DIVISION.
   Begin-Program.

       PERFORM Disable-Bell.
       PERFORM Clear-Screen.
       PERFORM Init-Value.

       DISPLAY "Enter value: "
          LINE 10 COLUMN 10
          LOWLIGHT
       END-DISPLAY.

   Enter-Value.
       ACCEPT cValue
          LINE 10 COLUMN 23
          UPDATE, REVERSE-VIDEO
          SIZE     nSize
          CURSOR   nOffset
       END-ACCEPT.
       IF TEST-NUMVAL(cValue) <> 0 THEN
          PERFORM Beep-Once
          GO TO Enter-Value
       END-IF.
       MOVE NUMVAL(cValue) TO nValue, eValue, eDisplay3.
  *    DISPLAY eDisplay3
  *       LINE 10 COLUMN 23
  *       HIGHLIGHT
  *    END-DISPLAY.

       DISPLAY "Results -> "
          LINE 12 COLUMN 10
          "cValue: "        cValue      HIGHLIGHT
          ", nValue: "      nValue      HIGHLIGHT
          ", eValue: "      eValue      HIGHLIGHT
          ", eDisplay3: "   eDisplay3   HIGHLIGHT
          ", nSize: "       nSize       HIGHLIGHT
          ", nOffset: "     nOffset     HIGHLIGHT
  *       ", nCursor: "     nCursor     HIGHLIGHT
       END-DISPLAY.

       ACCEPT OMITTED
          LINE 12 COLUMN 1
       END-ACCEPT.

       GO TO End-Program.

   Disable-Bell.
       SET ENVIRONMENT "COB_BELL" TO "FALSE".
       EXIT.

   Clear-Screen.
       CALL X"E4".
       EXIT.

   Init-Value.
       MOVE -999.999 TO nValue, eValue.
       MOVE TRIM(eValue) TO cValue.
       COMPUTE nSize = STORED-CHAR-LENGTH(cValue) + 1.
       COMPUTE nOffset = STORED-CHAR-LENGTH(cValue).
  *    MOVE 1031 TO nCursor.
       EXIT.

   Beep-Once.
  *    COB_BELL: FLASH, SPEAKER, FALSE, BEEP
       ACCEPT sBellStatus FROM ENVIRONMENT "COB_BELL".    *> Save COB_BELL status
       SET ENVIRONMENT "COB_BELL" TO "BEEP".              *> Set new status
       CALL X"E5".                                        *> Beep once
       SET ENVIRONMENT "COB_BELL" TO sBellStatus.         *> Restore previous COB_BELL status
       EXIT.

   End-Program.
       GOBACK.

   END PROGRAM "t2".

Compile e run it.

Image

:-)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions