File OLI.CO

Directory of image this file is from
This file as a plain text file

PROGRAM-ID.
	OLI.CO.


COMMENTS.
	EVT.FUER DAS EIGENE PROGRAMM COPIEREN UND EDITIEREN!.
AUTOR.
	TIM,OLI,,EVI  NOV 83.
FILE-CONTROL.
	SELECT LESERL.TM ASSIGN TO DSK.
	SELECT LESERL ASSIGN TO DSK.
	SELECT BUCHL.CD  ASSIGN TO DSK.
	SELECT LEIHL.CD  ASSIGN TO DSK.
	SELECT DRUCK ASSIGN TO LPT.
DATA DIVISION.
FILE SECTION.
FD LESERL.
01 LESERSATZ.
	02 NOMMER  PIC 9(6).
	02 PERSON  PIC X(25).
	02 ADRESSE PIC X(50).
	02 LEIHV    PIC S9(6).
FD LESERL.TM.
01 LESERSATZ-TM.
	02 NOMMER-TM   PIC  9(6).
	02 PERSON-TM   PIC  X(25).
	02 ADRESSE-TM  PIC  X(50).
	02 LEIHV-TM    PIC  S9(6).
FD LEIHL.CD.
01 LEIHBUCH.
	02 INDEX  PIC 9(6).
	02 BUCHV   PIC 9(6).
	02 FOLGER PIC 9(6).

FD BUCHL.CD.
01 BUCH.
	02 NUMMER PIC 9(6).
	02 TITEL  PIC X(30).
 	02 AUTOR  PIC X(30).
	02 VERLAG PIC X(30).
	02 LESER  PIC 9(6).
FD DRUCK.
01 DRUCKZEILE PIC X(50).
WORKING-STORAGE SECTION.
	77 Y      PIC       X.
	77 X     PIC        X.
	77 S    PIC       9(1).
	77 I    PIC      9(6).
	77 NOM  PIC      X(25).
	77 Q	PIC	9(1).
	77 A    PIC	X.
	77 B	PIC	X.
PROCEDURE DIVISION.
ANFANG.
	MOVE 0 TO Q.
	PERFORM LESER-MENUE UNTIL Q = 7.
	STOP RUN.
LESER-MENUE.
	DISPLAY "HIER DIE MOEGLICHKEITEN!".
	DISPLAY "BITTE WAEHLEN!!".
	DISPLAY "SOLL EIN NEUER LESER GESPEICHERT WERDEN?-1".
	DISPLAY "SOLL EIN LESER GELOESCHT WERDEN-2".
	DISPLAY "SOLL EIN LESER ANHAND SEINER NUMMER IDENTIFIZIERT".
	DISPLAY "WERDEN?-3".
	DISPLAY "SOLL EINE LESERNUMMER ANHAND EINES".
	DISPLAY "NAMENS BESTIMMT WERDEN?-4".
	DISPLAY "SOLL FESTGESTELLT WERDEN,WAS ER AUSGELIEHEN".
	DISPLAY "HAT--5?".
	DISPLAY " LISTENAUSDRUCK-6 ".
	DISPLAY "ABBRUCH-7".

	MOVE "J" TO B.
	ACCEPT Q.
	IF Q = 1 THEN PERFORM LESERB UNTIL B NOT EQUAL TO  "J".
	IF Q = 2 THEN PERFORM LOESCHEN.
	IF Q = 3 THEN PERFORM SUCHEN.
	IF Q = 4 THEN PERFORM ADRESSEN.
	IF Q = 5 THEN PERFORM BUCH-SUCHEN.
	IF Q = 6 THEN PERFORM AUSDRUCK.
LESERB.
	MOVE 0 TO S.
	MOVE "J" TO Y.
	DISPLAY " IST FILE 'LESERL' VORHANDEN? (J/N) ".
	MOVE " " TO X.
	ACCEPT X.
	IF X IS NOT EQUAL TO "J" THEN OPEN OUTPUT LESERL
	MOVE 0 TO I
	PERFORM AUFBAUL UNTIL Y IS EQUAL TO "N".
	IF X IS EQUAL TO "J" THEN OPEN INPUT LESERL
	OPEN OUTPUT LESERL.TM
	READ LESERL
	PERFORM LAUFENDE-NUMMER UNTIL S = 9
	PERFORM NAME-NEHMEN UNTIL B = "N".
AUFBAUL.
	ADD 1 TO I.
	DISPLAY " LAUFENDE NUMMER = " (LINE).
	DISPLAY I.
	MOVE I TO NOMMER.
	DISPLAY " NAME " (LINE).
	ACCEPT PERSON.
	DISPLAY " ADRESSE!! " (LINE).
	ACCEPT ADRESSE.
	SUBTRACT 1 FROM 0 GIVING LEIHV.
	DISPLAY " SIND DIE ANGABEN RICHTIG (J/N) " (LINE).
	MOVE " " TO Y.
	ACCEPT Y.
	IF Y IS EQUAL TO "J" THEN WRITE LESERSATZ
	DISPLAY " SOLLEN WEITERE NAMEN ANGEFUEGT WERDEN/ " (LINE)
	MOVE " " TO Y
	ACCEPT Y
	ELSE SUBTRACT 1 FROM I.
	IF Y IS NOT EQUAL TO "J" THEN CLOSE LESERL MOVE "N" TO B.
LAUFENDE-NUMMER.
	MOVE LESERSATZ TO LESERSATZ-TM.
	MOVE NOMMER TO I.
	WRITE LESERSATZ-TM READ LESERL
	AT END MOVE 9 TO S CLOSE LESERL.
NAME-NEHMEN.
	DISPLAY " LAUFENDE NUMMER= " (LINE).
	ADD 1 TO I.
	DISPLAY I.
	DISPLAY " BITTE LESER-DATEN EINGEBEN1 ".
	DISPLAY " NAME DES LESERS? ".
	MOVE I TO NOMMER-TM.
	ACCEPT PERSON-TM.
	PERFORM ADRESSE-NEHMEN.
ADRESSE-NEHMEN.
	DISPLAY "ADRESSE DES LESERS?".
	ACCEPT ADRESSE-TM.
	SUBTRACT 1 FROM 0 GIVING LEIHV-TM.
	PERFORM SPEICHERN.
SPEICHERN.
	DISPLAY "SIND DIE ANGABEN RICHTIG?".
	MOVE " " TO A.
	ACCEPT A.
	IF A IS EQUAL TO "J" THEN WRITE LESERSATZ-TM
	DISPLAY " SOLLEN WEITERE NAMEN ANGEFUEGT WERDEN?"
	MOVE " " TO B
	ACCEPT B
	ELSE SUBTRACT 1 FROM I.
	IF B IS EQUAL TO "N" THEN CLOSE LESERL.TM OPEN OUTPUT LESERL
	OPEN INPUT LESERL.TM READ LESERL.TM PERFORM RUECK UNTIL S = 5
	CLOSE LESERL.TM CLOSE LESERL.
RUECK.
	MOVE LESERSATZ-TM TO LESERSATZ.
	WRITE LESERSATZ.
	READ LESERL.TM AT END MOVE 5 TO S
LOESCHEN.
	OPEN INPUT LESERL.
	OPEN OUTPUT LESERL.TM.
	DISPLAY " IST DIE NUMMER DES LESERS BEKANNT " (LINE).
	MOVE " " TO A.
	ACCEPT A.
	MOVE 0 TO S.
	READ LESERL.
	IF A IS EQUAL TO "J" THEN PERFORM NR-LOESCHEN
	ELSE PERFORM NAME-LOESCHEN.
NR-LOESCHEN.
	DISPLAY " WELCHE NUMMER " (LINE).
	ACCEPT I.
	MOVE " " TO Y.
	IF I IS NOT EQUAL TO NOMMER THEN PERFORM LESEN-1 UNTIL S = 1.
	IF Y IS NOT EQUAL TO "Y" THEN PERFORM FRAGE.
FRAGE.
	DISPLAY " SOLL FOLGENDER SATZ GELOESCHT WERDEN`".
	PERFORM AUSGABE.
	MOVE " " TO B.
	ACCEPT B.
	IF B IS EQUAL TO "J" THEN READ LESERL.
	MOVE " " TO B.
	PERFORM REST UNTIL B IS EQUAL TO "Y".
LESEN-1.
	IF NOMMER = I THEN MOVE 1 TO S
	ELSE MOVE LESERSATZ TO LESERSATZ-TM
	WRITE LESERSATZ-TM READ LESERL
	AT END PERFORM FEHLER MOVE 1 TO S.
FEHLER.
	DISPLAY " NAME NICHT VORHANDEN! ".
	CLOSE LESERL CLOSE LESERL.TM.
	MOVE "Y" TO Y.
	
REST.
	MOVE LESERSATZ TO LESERSATZ-TM.
	WRITE LESERSATZ-TM.
	READ LESERL
	AT END CLOSE LESERL.TM
	MOVE "Y" TO B
	CLOSE LESERL OPEN OUTPUT LESERL INPUT LESERL.TM READ LESERL.TM
	PERFORM RUECK UNTIL S = 5 CLOSE LESERL CLOSE LESERL.TM.
	
NAME-LOESCHEN.
	DISPLAY " GEBEN SIE DEN NAMEN DES LESERS EIN! ".
	ACCEPT NOM.
	PERFORM LESEN-2 UNTIL S = 1.
	IF Y IS NOT EQUAL TO "Y" THEN PERFORM FRAGE.
LESEN-2.
	IF PERSON IS EQUAL TO NOM THEN MOVE 1 TO S
	ELSE MOVE LESERSATZ TO LESERSATZ-TM
	WRITE LESERSATZ-TM READ LESERL
	AT END PERFORM FEHLER MOVE 1 TO S.
SUCHEN.
	OPEN INPUT LESERL.
	READ LESERL.
	DISPLAY " WELCHE LESERNUMMER ".
	ACCEPT I.
	PERFORM UNTER-1 UNTIL NOMMER = I.
	PERFORM AUSGABE.
	CLOSE LESERL.
UNTER-1.
	IF I IS NOT EQUAL TO NOMMER THEN READ LESERL.
AUSGABE.
	OPEN OUTPUT DRUCK.
	MOVE NOMMER TO DRUCKZEILE.
	WRITE DRUCKZEILE AFTER ADVANCING 1 LINE.
	MOVE PERSON TO DRUCKZEILE.
	WRITE DRUCKZEILE AFTER ADVANCING 1 LINE.
	MOVE ADRESSE TO DRUCKZEILE.
	WRITE DRUCKZEILE AFTER ADVANCING 1 LINE.
	MOVE LEIHV TO DRUCKZEILE.

WRITE DRUCKZEILE AFTER ADVANCING 1 LINE. CLOSE DRUCK. ADRESSEN. OPEN INPUT LESERL. DISPLAY " NAME DES LESERS ". ACCEPT NOM. PERFORM UNTER-2 UNTIL PERSON IS EQUAL TO NOM. PERFORM AUSGABE. CLOSE LESERL. UNTER-2. IF NOM IS NOT EQUAL TO PERSON THEN READ LESERL. BUCH-SUCHEN. DISPLAY " DIESES PROGRAMM IST NOCH NICHT VERFUEGBAR. ". DISPLAY " WIRD ERST SPAETER SINNVOLL. ". AUSDRUCK. DISPLAY " IST FILE 'LESERL' VORHANDEN (J/N) ". MOVE " " TO A. ACCEPT A. IF A IS EQUAL TO "J" THEN OPEN INPUT LESERL READ LESERL PERFORM AUS UNTIL A IS EQUAL TO "Y". CLOSE LESERL. AUS. PERFORM AUSGABE. READ LESERL AT END MOVE "Y" TO A.



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search