Created
November 15, 2012 19:24
-
-
Save peitor/4080627 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
------------- 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