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.
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...
Compile e run it.
:-)