PROGRAM-ID. SCHECKUEBERWEISUNG. COMMENTS. BEARBEITUNG VON SCHECKS UND UEBERWEISUNGEN. AUTOR. THOMAS PFEIFER. FILE-CONTROL. SELECT KONTEN ASSIGN TO DSK ACCESS MODE IS RANDOM ACTUAL KEY IS SATZNR. DATA DIVISION. FILE SECTION. FD KONTEN. 01 BILD. 02 NUMMER PIC 9(3). 02 NAME PIC X(25). 02 STRASSE PIC X(25). 02 WOHNORT PIC X(25). 02 GEBOREN PIC X(10). 02 MAXIMALKREDIT PIC S9(7)V99. 02 ALTSTAND PIC S9(7)V99. 02 DATUM PIC X(10). 02 BEWART PIC X(30). 02 BEWEGUNG PIC S9(7)V99. 02 NEUSTAND PIC S9(7)V99. 02 ZINSSPEICHER PIC S9(7)V99. 02 SCHECKNUMMER PIC 9(3). 02 AUSZUGSNUMMER PIC 9(3). WORKING-STORAGE SECTION. 01 BETRAG PIC S9(7)VV99. 01 KNR PIC 9(3). 01 SATZNR PIC 9(3). 01 E-NEUSTAND PIC -------.99. 01 DAT1 PIC X(10). 01 SPEICHER PIC S9(7)V99 . 01 ENDE PIC 9 VALUE 1. 01 ENTSCHEIDUNG PIC X. 01 ANTWORT PIC X. PROCEDURE DIVISION. PERFORM AENDERN. CALL GELHAU. AENDERN. PERFORM OEFFNEN. PERFORM LESEN. PERFORM PRUEFEN. PERFORM AUSZAHLEN. OEFFNEN. DISPLAY "IST KONTEN DA VORHANDEN J/N "(LINE). ACCEPT ANTWORT. IF ANTWORT = "J" THEN OPEN I-O KONTEN ELSE CALL GELHAU. DISPLAY "DATUM: (..,..,....) " (LINE). ACCEPT DAT1. LESEN. DISPLAY "KONTONUMMER DES AUFTRAGGEBERS " (LINE). ACCEPT KNR. SUBTRACT 99 FROM KNR GIVING SATZNR. IF SATZNR IS EQUAL TO 0 THEN MOVE 1 TO ENDE ELSE READ KONTEN , INVALID KEY DISPLAY " FALSCHE NUMMER !!! " PERFORM SCHLIESSEN. PRUEFEN. IF NAME = " " THEN DISPLAY "KONTO NICHT BELEGT " WRITE BILD PERFORM SCHLIESSEN. LESEN2. DISPLAY "KONTONUMMER DES EMPFAENGERS " (LINE). ACCEPT KNR. SUBTRACT 99 FROM KNR GIVING SATZNR. IF SATZNR IS EQUAL TO 0 THEN MOVE 1 TO ENDE ELSE READ KONTEN ,INVALID KEY DISPLAY " FALSCHE NUMMER " PERFORM SCHLIESSEN. PRUEFEN2. IF NAME = " " THEN DISPLAY "KONTO NICHT BELEGT " WRITE BILD PERFORM SCHLIESSEN. AUSZAHLEN. MOVE DAT1 TO DATUM. DISPLAY "AUFTRAGGEBER: ". DISPLAY NAME. DISPLAY NUMMER. DISPLAY STRASSE. DISPLAY WOHNORT DISPLAY " ALTER KONTOSTAND:" ALTSTAND DISPLAY "LETZTE BEWEGUNG:" BEWART BEWEGUNG MOVE NEUSTAND TO E-NEUSTAND. DISPLAY "NEUER KONTOSTAND:" E-NEUSTAND DISPLAY "MAXIMALKREDIT:" (LINE). MOVE MAXIMALKREDIT TO E-NEUSTAND. DISPLAY E-NEUSTAND. DISPLAY " BETRAG DES AUFTRAGS " (LINE). ACCEPT BETRAG. MOVE BETRAG TO BEWEGUNG. DISPLAY " HANDELT ES SICH UM EINEN SCHECK ODER " DISPLAY "UM EINE UEBERWEISUNG S/U " (LINE). ACCEPT ENTSCHEIDUNG. IF ENTSCHEIDUNG = "S" THEN DISPLAY "SCHECKNUMMER " (LINE) , ACCEPT SCHECKNUMMER ELSE DISPLAY " VERWENDUNGSZWECK " (LINE) , ACCEPT BEWART. DISPLAY BEWEGUNG. SUBTRACT BEWEGUNG FROM NEUSTAND GIVING SPEICHER. SUBTRACT SPEICHER FROM 0 GIVING SPEICHER. DISPLAY "O.K. " IF SPEICHER > MAXIMALKREDIT DISPLAY "O.K." THEN DISPLAY " KONTO ZU STARK UEBERZOGEN ", PERFORM SCHLIESSEN ELSE MOVE NEUSTAND TO ALTSTAND , SUBTRACT BEWEGUNG FROM NEUSTAND GIVING NEUSTAND, WRITE BILD, PERFORM LESEN2, PERFORM PRUEFEN2, PERFORM EINZAHLEN, PERFORM SCHLIESSEN. EINZAHLEN. MOVE DAT1 TO DATUM. DISPLAY " EMPFAENGER: ". DISPLAY NAME. DISPLAY NUMMER. DISPLAY STRASSE. DISPLAY WOHNORT. DISPLAY "KONTOSTAND:" MOVE NEUSTAND TO E-NEUSTAND. DISPLAY E-NEUSTAND. DISPLAY " BETRAG DES AUFTRAGS " (LINE). DISPLAY BETRAG. MOVE BETRAG TO BEWEGUNG. MOVE NEUSTAND TO ALTSTAND. ADD BEWEGUNG TO NEUSTAND. DISPLAY " ZWECK DES AUFTRAGS " (LINE). ACCEPT BEWART. WRITE BILD. SCHLIESSEN. CLOSE KONTEN.