Skip to content

Instantly share code, notes, and snippets.

@peitor
Created November 15, 2012 19:24
Show Gist options
  • Save peitor/4080627 to your computer and use it in GitHub Desktop.
Save peitor/4080627 to your computer and use it in GitHub Desktop.
------------- Start of calc.cob ---------------------------
IDENTIFICATION DIVISION.
PROGRAM-ID. CALC.
*AUTHOR. R. HAENGGI.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
TERMINAL IS BILDSCHIRM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SEPERATOR PIC X(01) VALUE ",".
01 WERT PIC 9(04).
01 IND1 PIC 9(02) VALUE 0.
01 IND2 PIC 9(02) VALUE 0.
01 MAX-IND PIC 9(02) VALUE 80.
01 RTC PIC S9(10) SIGN IS LEADING SEPARATE.
LINKAGE SECTION.
01 EINGABE.
05 ZEICHEN PIC X(01) OCCURS 80.
01 AUSGABE.
05 ZAHL PIC 9(4).
PROCEDURE DIVISION USING EINGABE AUSGABE.
BEGINN.
PERFORM CALCULATE.
ENDE.
EXIT PROGRAM.
CALCULATE SECTION.
C1.
MOVE 0 TO ZAHL
MOVE 1 TO IND1
MOVE 0 TO IND2
IF EINGABE(1:2) = "//" AND
EINGABE(4:2) = "\N"
THEN
MOVE EINGABE(3:1) TO SEPERATOR
MOVE 6 TO IND1
END-IF
PERFORM VARYING IND2 FROM IND1 BY 1 UNTIL IND2 >= MAX-IND
IF ZEICHEN(IND2) = SEPERATOR OR ZEICHEN(IND2) = " "
THEN
COMPUTE WERT = FUNCTION NUMVAL(EINGABE(IND1:IND2 - IND1))
DEBUG * DISPLAY "IND1:" IND1 " IND2:" IND2 " EINGABE: EINGABE"
DEBUG * " WERT:" WERT UPON BILDSCHIRM
IF WERT < 1000
THEN
COMPUTE ZAHL = ZAHL + WERT
END-IF
COMPUTE IND1 = IND2 + 1
END-IF
IF ZEICHEN(IND2) = " "
THEN
MOVE 81 TO IND2
ELSE
IF ZEICHEN(IND2) NUMERIC OR ZEICHEN(IND2) = SEPERATOR
THEN
CONTINUE
ELSE
MOVE 81 TO IND2
MOVE 4711 TO RETURN-CODE
END-IF
END-IF
END-PERFORM
CONTINUE.
C99.
EXIT.
------------- End -------------------------
------------- Start of calctest.cob ---------------------------
IDENTIFICATION DIVISION.
PROGRAM-ID. CALCTEST.
*AUTHOR. R. HAENGGI.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SPECIAL-NAMES.
TERMINAL IS BILDSCHIRM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 EINGABE.
05 ZEICHEN PIC X(01) OCCURS 80.
01 AUSGABE.
05 ZAHL PIC 9(4).
01 ERWARTET PIC 9(4).
01 RTC-ERWARTET PIC 9(10).
01 RTC PIC S9(10) SIGN IS LEADING SEPARATE.
PROCEDURE DIVISION.
BEGINN.
DISPLAY "TEST1" UPON BILDSCHIRM
MOVE "1" TO EINGABE
MOVE 1 TO ERWARTET
MOVE 0 TO RTC-ERWARTET
PERFORM DOTEST
DISPLAY "TEST2" UPON BILDSCHIRM
MOVE "1,2" TO EINGABE
MOVE 3 TO ERWARTET
MOVE 0 TO RTC-ERWARTET
PERFORM DOTEST
DISPLAY "TEST3" UPON BILDSCHIRM
MOVE "-1" TO EINGABE
MOVE 0 TO ERWARTET
MOVE 4711 TO RTC-ERWARTET
PERFORM DOTEST
MOVE 0 TO RETURN-CODE
DISPLAY "TEST4" UPON BILDSCHIRM
MOVE "1000" TO EINGABE
MOVE 0 TO ERWARTET
MOVE 0 TO RTC-ERWARTET
PERFORM DOTEST
DISPLAY "TEST5" UPON BILDSCHIRM
MOVE "//;\N1;2;3" TO EINGABE
MOVE 6 TO ERWARTET
MOVE 0 TO RTC-ERWARTET
PERFORM DOTEST
CONTINUE.
ENDE.
STOP RUN.
DOTEST SECTION.
T1.
* AUSGABE DER EINGABE NUR 69 ZEICHEN DAMIT ES AUF 1 ZEILE PASST
DISPLAY "EINGABE = " EINGABE(1:69) UPON BILDSCHIRM.
CALL "CALC" USING BY REFERENCE EINGABE, AUSGABE.
DISPLAY "AUSGABE = " AUSGABE UPON BILDSCHIRM.
DISPLAY "ERWARTET = " ERWARTET UPON BILDSCHIRM.
IF AUSGABE = ERWARTET
THEN
MOVE RETURN-CODE TO RTC
DISPLAY "RETURN-CODE = " RTC UPON BILDSCHIRM
IF RETURN-CODE = RTC-ERWARTET
THEN
DISPLAY "TEST GRUEN" UPON BILDSCHIRM
ELSE
DISPLAY "TEST ROT!!!!!!!!!!!!!!!!!!!" UPON BILDSCHIRM
END-IF
ELSE
DISPLAY "TEST ROT!!!!!!!!!!!!!!!!!!!" UPON BILDSCHIRM
END-IF.
T99.
EXIT.
------------- End -------------------------
------------- Output -------------
% BLS0517 MODUL 'CALCTEST' GELADEN«············································
TEST1«··········································································
EINGABE = 1
AUSGABE = 0001«································································
ERWARTET = 0001«································································
RETURN-CODE = +0000000000«······················································
TEST GRUEN«·····································································
TEST2«··········································································
EINGABE = 1,2
AUSGABE = 0003«································································
ERWARTET = 0003«································································
RETURN-CODE = +0000000000«······················································
TEST GRUEN«·····································································
TEST3«··········································································
EINGABE = -1
AUSGABE = 0000«································································
ERWARTET = 0000«································································
RETURN-CODE = +0000004711«······················································
TEST GRUEN«·····································································
TEST4«··········································································
EINGABE = 1000
AUSGABE = 0000«································································
ERWARTET = 0000«································································
RETURN-CODE = +0000000000«······················································
TEST GRUEN«·····································································
TEST5«··········································································
EINGABE = //;\N1;2;3
AUSGABE = 0006«································································
ERWARTET = 0006«································································
RETURN-CODE = +0000000000«······················································
TEST GRUEN«·····································································
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment