home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-07-06 | 68.4 KB | 2,067 lines |
- PROGRAM DEMO
-
- C ╔════════════════════════════════════════════════════════════════════╗
- C ║Programmbeschreibung ║
- C ║Das Programm demonstriert den Gebrauch der Subroutinen aus der ║
- C ║FORTRAN-77-Library FORSUB.FOR. ║
- C ╟────────────────────────────────────────────────────────────────────╢
- C ║ Autor: Dipl.-Ing. Friedhelm Killet ║
- C ║ Escheln 28a ║
- C ║ 4152 Kempen ║
- C ║ Tel. 02151/8674 ║
- C ╟────────────────────────────────────────────────────────────────────╢
- C ║Fertigstellung: 10. Januar 1990 ║
- C ║Freigabe: 10. Januar 1990 ║
- C ║letzte Änderung: 24. Februar 1990 ║
- C ╟────────────────────────────────────────────────────────────────────╢
- C ║Zur Erstellung benützte Hardware ║
- C ║Computer: Hewlett Packard Vectra ES/12 ║
- C ║Bildschirm: Hewlett Packard Video Graphics Color Display ║
- C ║Videokarte: Hewlett Packard Video Graphics Adapter HP D1180A ║
- C ╟────────────────────────────────────────────────────────────────────╢
- C ║Zur Erstellung benützte Software ║
- C ║Texteditor: IBM Professional Editor 1.0 ║
- C ║Compiler: Microsoft Fortran Optimizing Compiler 4.00A ║
- C ║Linker: Microsoft Overlay Linker 3.0 ║
- C ║Code Compressor: Microsoft EXE File Compression Utility 4.04 ║
- C ║Debugger: Microsoft Code Viev symbolic debugger 1.10 ║
- C ╟────────────────────────────────────────────────────────────────────╢
- C ║Zur Erstellung benützte Libraries ║
- C ║LLIBFORE.LIB: Microsoft Fortran Standard Library ║
- C ║ Large model, emulator ║
- C ║FORSUB.LIB: Alle nicht in LLIBFORE.LIB enthaltenen Funktionen ║
- C ║ Version Januar 1990, Autor: Killet ║
- C ╟────────────────────────────────────────────────────────────────────╢
- C ║Compilieren, Binden und Comprimieren ║
- C ║Compilieren: FL /c /O /Al /Fpi DEMO.FOR ║
- C ║Linken: LINK DEMO, DEMO, NUL, LLIBFORE FORSUB /NOD /SE:256 ║
- C ║Comprimieren: EXEPACK DEMO.EXE DEMO.XXX ║
- C ║ DEL DEMO.EXE ║
- C ║ REN DEMO.XXX DEMO.EXE ║
- C ╟────────────────────────────────────────────────────────────────────╢
- C ║Vom Programm benötigte Dateien ║
- C ║DEMO.HLP: Die Datei enthält Texteintragungen, die vom ║
- C ║ Programm benötigt werden. Sie darf nicht mit einem ║
- C ║ Editor oder einer Textverarbeitung bearbeitet ║
- C ║ werden, da sie mit einer Recordlänge von 72 ║
- C ║ Characters direct organisiert ist! Die Datei wird ║
- C ║ vom Programm selbstständig im aktuellen Laufwerk ║
- C ║ oder auf der Festplatte des Systems gefunden. ║
- C ╟────────────────────────────────────────────────────────────────────╢
- C ║Hardwareanforderungen zum Betrieb des Programms und der Unter- ║
- C ║programme: ║
- C ║Computer: IBM-compartibler XT oder AT Personal-Computer. Der ║
- C ║ Arbeitsspeicher sollte mindestens 560 kByte groß ║
- C ║ sein. ║
- C ║Video: Monochrome- oder Farbmonitor. Der Monitor muß nicht║
- C ║ graphikfähig sein. Die Demonstratinon der ║
- C ║ Subroutine SCRIPT ist jedoch nur mit einer EGA- ║
- C ║ oder VGA-Karte möglich. ║
- C ╚════════════════════════════════════════════════════════════════════╝
-
- C VARIABLEN
- INTEGER ALTMOD,COL,HM(16),IOS,VSEG
- C ALTMOD: ALTER VIDEOMODUS
- C COL: FARBATTRIBUT NORMAL
- C HM: FELD FÜR AUSWAHLEN AUS DEM HAUPTMENÜ
- C IOS: EIN/AUSGABE-STATUS
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- CHARACTER FNAME*50
- C FNAME: NAME DER DATEI MIT VOM PROGRAMM BENÖTIGTEN TEXTEN
-
- C PARAMETER FÜR DATEIUNITS
- INTEGER HI
- PARAMETER (HI=1)
- C HI = 1: HILFEDATEI DEMO.HLP
-
- C VARIABLEN MIT DATEN VORBELEGEN
- DATA VSEG /0/, COL /23/
-
- C AKTUELLEN VIDEOMODUS SEICHERN UND NEUEN MODUS SETZEN
- I=1
- CALL VIDMOD (3,ALTMOD,I)
- IF (I .EQ. 0) CALL VIDMOD (2,ALTMOD,0)
-
- C VERZEICHNIS DER DIRECT ORGANISIERTEN TEXTDATEI "DEMO.HLP" FINDEN
- CALL DFIND ('DEMO.HLP'//CHAR(0),1,FNAME)
-
- C TEXTDATEI "DEMO.HLP" MIT DEM UNIT "HI" ERÖFFNEN
- OPEN (HI,FILE=FNAME,STATUS='OLD',ACCESS='DIRECT',RECL=72,
- -FORM='FORMATTED',IOSTAT=IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
-
- C CURSOR AUSSCHALTEN
- CALL CTYP (0,0)
-
- C BILDSCHIRM-DISPLAY ERSTELLEN
- CALL LOES (25,80,1,1,32,COL,0)
- CALL SCBL ('DEMO DER',8,2,100,0,COL,0)
- CALL SCBL ('BIBLIOTHEK',10,10,100,0,COL,0)
- CALL SCBL ('FORSUB.LIB',10,18,100,0,COL,0)
- CALL PAUS (3)
-
- C BILDSCHIRMFENSTER ERZEUGEN
- CALL BILDFE (VSEG,COL,HI)
-
- C HAUPTMENÜ GENERIEREN (BILDSCHIRMFENSTER NR. 2)
- 1 CALL GETFEN (2,5,5,VSEG,IOS)
- CALL ME1FEN (2,16,1,HM,VSEG,71,IOS)
-
- C ZEILENWEISE BILDSCHIRM-I/O DEMONSTRIEREN
- IF (HM(1) .GT. 0) THEN
- CALL IOZW (VSEG,COL)
-
- C ZEILENWEISE BILDSCHIRM-I/O DEMONSTRIEREN
- ELSEIF (HM(2) .GT. 0) THEN
- CALL IOBW (VSEG,COL)
-
- C MENÜSTEUERUNG DEMONSTRIEREN
- ELSEIF (HM(3) .GT. 0) THEN
- CALL MENU (VSEG,COL)
-
- C BILDSCHIRMMASKEN DEMONSTRIEREN
- ELSEIF (HM(4) .GT. 0) THEN
- CALL MASKE (VSEG,COL)
-
- C BILDSCHIRMMASKEN DEMONSTRIEREN
- ELSEIF (HM(5) .GT. 0) THEN
- CALL FENST (VSEG,COL)
-
- C SCHRIFTEN DEMONSTRIEREN
- ELSEIF (HM(6) .GT. 0) THEN
- CALL SCHRI (VSEG,COL)
-
- C SCHRIFTEN DEMONSTRIEREN
- ELSEIF (HM(7) .GT. 0) THEN
- CALL ZEIT (VSEG,COL)
-
- C TRANSFORMATIONEN DEMONSTRIEREN
- ELSEIF (HM(8) .GT. 0) THEN
- CALL TRANS (VSEG,COL)
-
- C ZUFALLZAHLEN UND SORTIERUNGEN DEMONSTRIEREN
- ELSEIF (HM(9) .GT. 0) THEN
- CALL ZUSOR (VSEG,COL)
-
- C STRINGMANIPULATIONEN DEMONSTRIEREN
- ELSEIF (HM(10) .GT. 0) THEN
- CALL STRIMA (VSEG,COL)
-
- C DATEI- VERZEICHNIS- UND LAUFWERKSZUGRIFFE DEMONSTRIEREN
- ELSEIF (HM(11) .GT. 0) THEN
- CALL DATVER (VSEG,COL)
-
- C INFORMATION ÜBER DAS LESEN UND SCHREIBEN VON SPEICHERINHALTEN
- ELSEIF (HM(12) .GT. 0) THEN
- CALL PEKPOK (VSEG)
-
- C INFORMATION ÜBER DIE VIRITUELLE SPEICHERVERWALTUNG
- ELSEIF (HM(13) .GT. 0) THEN
- CALL VIRSPE (VSEG)
-
- C DEMONSTRATION DES CHILDPROZESSES UND DES INTERRUPT-AUFRUFS
- ELSEIF (HM(14) .GT. 0) THEN
- CALL CHIINT (VSEG,COL)
-
- C DEMONSTRATION VERSCHIEDENER SUBROUTINEN
- ELSEIF (HM(15) .GT. 0) THEN
- CALL VERSCH (VSEG,COL)
-
- C ALLE FENSTER WIEDER SCHLIEßEN
- ELSEIF (HM(16) .GT. 0) THEN
- DO 2 I=30,1,-1
- CALL CLOFEN (I,VSEG,COL,IOS)
- 2 CONTINUE
-
- C ALTEN VIDEOMODUS SETZEN, CURSOR EINSCHALTEN UND PROGRAMM BEENDEN
- CALL VIDMOD (ALTMOD,0,1)
- CALL CTYP (1,1)
- CALL ERRLEV (0)
- ENDIF
- GOTO 1
- END
-
-
- SUBROUTINE BILDFE (VSEG,COL,HI)
- C DIE SUBROUTINE ERZEUGT DIE VOM PROGRAMM BENÖTIGTEN BILDSCHIRMFENSTER
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,HI,IOS,VSEG
- C COL: FARBATTRIBUT
- C HI: UNIT FÜR DATEI MIT HILFSTEXTEN
- C IOS: ERRORFLAG
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
-
- C BILDSCHIRMFENSTER FÜR DEN HINTERGRUND ERSTELLEN
- CALL LOES (25,80,1,1,32,COL,0)
- CALL AWRI ('DEMONSTRATION DER FORTRAN-BIBLIOTHEK FORSUB.LIB',47,
- -3,17,COL)
- CALL PUTFEN (1,25,80,1,1,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
-
- C BILDSCHIRMFENSTER FÜR AKTIONEN ERSTELLEN
- CALL PUTFEN (30,15,60,6,11,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL CLOFEN (30,VSEG,0,IOS)
- CALL RAMFEN (30,2,COL,'Aktionsfenster','Demonstration der '//
- -'Library FORSUB.LIB',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR DAS HAUPTMENÜ ERZEUGEN UND IN DER MEMORY ABLEGEN
- CALL TEXFEN (2,16,1,70,HI,5,71,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (2,2,78,'Hauptmenü','Bewegen: <Cursor> '//
- -'Wählen: <Return>',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR ZEILENWEISE I/O ERZEUGEN
- CALL TEXFEN (3,17,1,41,HI,24,33,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (3,1,32,'Zeilenweise I/O','Bewegen: <Cursor> '//
- -'Wählen: <Return>',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR BLOCKWEISE I/O ERZEUGEN
- CALL TEXFEN (4,7,1,41,HI,44,52,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (4,1,49,'Blockweise I/O','Bewegen: <Cursor> '//
- -'Wählen: <Return>',VSEG,IOS)
-
- C BILDSCHIRMFENSTER ZUR DEMONSTRATION DER MENÜSTEUERUNG ERZEUGEN
- CALL TEXFEN (5,7,1,49,HI,54,83,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (5,1,94,'Menüsteuerung','Bewegen: <Cursor> '//
- -'Wählen: <Return>',VSEG,IOS)
-
- C BILDSCHIRMFENSTER ZUR DEMONSTRATION DER MASKEN ERZEUGEN
- CALL TEXFEN (6,4,1,51,HI,79,98,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (6,1,107,'Bildschirmmasken','Bewegen: <Cursor> '//
- -'Wählen: <Return>',VSEG,IOS)
-
- C BILDSCHIRMFENSTER ZUR DEMONSTRATION DER FENSTERTECHNIK ERZEUGEN
- CALL TEXFEN (7,3,1,61,HI,108,112,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (7,1,118,'Fenstertechnik','Demonstrationsprogramm',
- -VSEG,IOS)
-
- C BILDSCHIRMFENSTER ZUR DEMONSTRATION DER SCHRIFTENGENERIERUNG
- CALL TEXFEN (8,5,1,45,HI,162,3,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (8,1,3,'Schriftengenerator','Bewegen: <Cursor> '//
- -'Wählen: <Return>',VSEG,IOS)
-
- C BILDSCHIRMFENSTER ZUR DEMONSTRATION ZEIT- UND AKUSTIKSTEUERUNG
- CALL TEXFEN (9,2,1,59,HI,170,33,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (9,1,33,'Zeitsteuerung, Akustik',
- -'Demonstrationsprogramm',VSEG,IOS)
-
- C BILDSCHIRMFENSTER ZUR DEMONSTRATION VON TRANSFORMATIONEN
- CALL TEXFEN (10,2,1,50,HI,175,53,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (10,1,53,'Transformationen',
- -'Demonstrationsprogramm',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR ZUFALLZAHLEN UND SORTIERUNGEN
- CALL TEXFEN (11,5,1,27,HI,180,82,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (11,1,82,'Zufallzahlen + Sortierungen',
- -'Bewegen:<Cur> Wählen:<Ret>',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR STRINGMANIPULATIONEN HERSTELLEN
- CALL TEXFEN (12,2,1,36,HI,188,103,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (12,1,103,'Stringmanipulationen',
- -'Demonstrationsprogramm',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR DATEI- VERZ.- UND LAUFW.-FUNKTIONEN
- CALL TEXFEN (13,2,1,37,HI,193,120,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (13,1,120,'Datei--Verz.--Laufw.',
- -'Demonstrationsprogramm',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR SPEICHER-LESE- UND SCHREIB-OPERATIONEN
- CALL TEXFEN (14,14,1,40,HI,198,4,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (14,1,4,'Speicherinhalte lesen/schreiben',
- -'Information',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR VIRITUELLE SPEICHERVERWALTUNG
- CALL TEXFEN (15,16,1,62,HI,215,33,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (15,1,33,'Virituelle Speicherverwaltung',
- -'Information',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR CHILD-PROZESS UND INTERRUPT-AUFRUF
- CALL TEXFEN (16,2,1,35,HI,234,52,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (16,1,52,'Child-Prozess, Interrupt-Aufruf',
- -'Demonstrationsprogramm',VSEG,IOS)
-
- C BILDSCHIRMFENSTER FÜR VERSCHIEDENE SUBROUTINEN
- CALL TEXFEN (17,3,1,72,HI,239,63,VSEG,IOS)
- IF (IOS .NE. 0) GOTO 1
- CALL RAMFEN (17,1,63,'Verschiedene Subroutinen',
- -'Demonstrationsprogramm',VSEG,IOS)
- RETURN
-
- C FEHLER AUFGETRETEN
- 1 CALL ERRLEV (2)
- END
-
-
- SUBROUTINE IOZW (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT DIE ZEILENWEISE BILDSCHIRM-I/O
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,IOS,ME(17),VSEG
- C COL: FARBATTRIBUT
- C IOS: ERRORFLAG
- C ME: FELD FÜR MENÜAUSWAHLEN
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- REAL A
- C A: HILFSVARIABLE
- CHARACTER TEXT*30,ZEICH*28
- C TEXT: TESTVARIABLE
- C ZEICH: STRING MIT FILTERZEICHEN
-
- C DATEN
- DATA ZEICH /'ABCDEFGHIJKLMNOPQRSTUVWXYZ '/
-
- C MENÜ GENERIEREN (BILDSCHIRMFENSTER NR. 3)
- CALL GETFEN (3,2,2,VSEG,IOS)
- 1 CALL ME1FEN (3,17,1,ME,VSEG,33,IOS)
-
- C UNTERPROGRAMM VERLASSEN
- IF (ME(17) .GT. 0) RETURN
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C CURSOR EINSCHALTEN
- CALL CTYP (1,1)
-
- C STRING POSITIONIERT EINLESEN
- IF (ME(1) .GT. 0) THEN
- CALL AWRI ('Geben Sie mit Hilfe von AREAD einen Text ein!',
- - 45,9,18,COL)
- CALL AREAD (TEXT,30,13,26,71,632,0)
- CALL AWRI (TEXT,30,17,26,COL)
- CALL PAUS (3)
-
- C STRING POSITIONIERT KORRIGIEREN
- ELSEIF (ME(2) .GT. 0) THEN
- CALL AWRI ('Korrigieren Sie mit Hilfe von AREAD einen Text!',
- - 47,9,17,COL)
- TEXT='Dieses ist ein Korrekturtext!'
- CALL AREAD (TEXT,30,13,26,71,632,1)
- CALL AWRI (TEXT,30,17,26,COL)
- CALL PAUS (3)
-
- C STRING GEFILTERT POSITIONIERT EINLESEN
- ELSEIF (ME(3) .GT. 0) THEN
- CALL AWRI ('Geben Sie mit Hilfe von AREADZ einen Text ein!',
- - 46,9,18,COL)
- CALL AWRI ('Es sind nur die Zeichen A bis Z zugelassen!',
- - 43,10,19,COL)
- CALL AREADZ (TEXT,30,ZEICH,28,13,26,71,632,0)
- CALL AWRI (TEXT,30,17,26,COL)
- CALL PAUS (3)
-
- C STRING GEFILTERT POSITIONIERT KORRIGIEREN
- ELSEIF (ME(4) .GT. 0) THEN
- CALL AWRI ('Korrigieren Sie mit Hilfe von AREADZ einen Text!',
- - 48,9,17,COL)
- CALL AWRI ('Es sind nur die Zeichen A bis Z zugelassen!',
- - 43,10,19,COL)
- TEXT='Dieses ist ein Korrekturtext!'
- CALL AREADZ (TEXT,30,ZEICH,28,13,26,71,632,1)
- CALL AWRI (TEXT,30,17,26,COL)
- CALL PAUS (3)
-
- C STRING POSITIONIERT SCHREIBEN
- ELSEIF (ME(5) .GT. 0) THEN
- CALL AWRI ('Mit Hilfe von AWRI werden Strings geschrieben!',
- - 46,9,17,COL)
- TEXT='Zu schreibender Text!'
- CALL AWRI (TEXT,21,11,21,71)
- CALL AWRI (TEXT,21,13,40,142)
- CALL AWRI (TEXT,21,15,18,117)
- CALL AWRI (TEXT,21,17,26,57)
- CALL AWRI (TEXT,21,16,38,224)
- CALL AWRI ('<RETURN>',8,19,62,COL)
- CALL TAST (1,1)
-
- C INTEGER POSITIONIERT LESEN
- ELSEIF (ME(6) .GT. 0) THEN
- CALL AWRI ('Geben Sie mit Hilfe von IREAD ein Integer ein!',
- - 46,9,18,COL)
- CALL IREAD (I,8,13,37,71,632,0)
- CALL IWRI (I,8,17,37,COL)
- CALL PAUS (3)
-
- C INTEGER POSITIONIERT KORRIGIEREN
- ELSEIF (ME(7) .GT. 0) THEN
- CALL AWRI ('Korrigieren Sie mit Hilfe von IREAD ein Integer!',
- - 47,9,17,COL)
- I=12345678
- CALL IREAD (I,8,13,37,71,632,1)
- CALL IWRI (I,8,17,37,COL)
- CALL PAUS (3)
-
- C INTEGERS POSITIONIERT SCHREIBEN
- ELSEIF (ME(8) .GT. 0) THEN
- CALL AWRI ('Mit Hilfe von IWRI werden Integers geschrieben!',
- - 47,9,17,COL)
- CALL IWRI (11,2,11,21,71)
- CALL IWRI (24561,9,13,44,142)
- CALL IWRI (1248,4,15,19,117)
- CALL IWRI (-12847362,10,17,29,57)
- CALL IWRI (-111,4,16,56,224)
- CALL AWRI ('<RETURN>',8,19,62,COL)
- CALL TAST (1,1)
-
- C REAL POSITIONIERT LESEN
- ELSEIF (ME(9) .GT. 0) THEN
- CALL AWRI ('Geben Sie mit Hilfe von RREAD ein Real ein!',
- - 43,9,19,COL)
- CALL RREAD (A,10.3,13,36,71,632,0)
- CALL RWRI (A,10.3,17,36,COL)
- CALL PAUS (3)
-
- C REAL POSITIONIERT KORRIGIEREN
- ELSEIF (ME(10) .GT. 0) THEN
- CALL AWRI ('Korrigieren Sie mit Hilfe von RREAD ein Real!',
- - 44,9,19,COL)
- A=123456.789
- CALL RREAD (A,10.3,13,36,71,632,1)
- CALL RWRI (A,10.3,17,36,COL)
- CALL PAUS (3)
-
- C REALS POSITIONIERT SCHREIBEN
- ELSEIF (ME(11) .GT. 0) THEN
- CALL AWRI ('Mit Hilfe von RWRI werden Reals geschrieben!',
- - 44,9,19,COL)
- CALL RWRI (11.22,5.2,11,21,71)
- CALL RWRI (24561.1456,10.4,13,44,142)
- CALL RWRI (1248.0,8.1,15,19,117)
- CALL RWRI (-12847362.12456,15.5,17,29,57)
- CALL RWRI (-111.33,7.2,16,56,224)
- CALL AWRI ('<RETURN>',8,19,62,COL)
- CALL TAST (1,1)
-
- C DATUM POSITIONIERT LESEN
- ELSEIF (ME(12) .GT. 0) THEN
- CALL AWRI ('Geben Sie mit Hilfe von DREAD ein Datum ein!',
- - 44,9,19,COL)
- CALL DREAD (I,13,36,71,632,0)
- CALL DWRI (I,17,36,COL)
- CALL PAUS (3)
-
- C DATUM POSITIONIERT KORRIGIEREN
- ELSEIF (ME(13) .GT. 0) THEN
- CALL AWRI ('Korrigieren Sie mit Hilfe von DREAD ein Datum!',
- - 45,9,18,COL)
- I=19900115
- CALL DREAD (I,13,36,71,632,1)
- CALL DWRI (I,17,36,COL)
- CALL PAUS (3)
-
- C DATUM POSITIONIERT SCHREIBEN
- ELSEIF (ME(14) .GT. 0) THEN
- CALL AWRI ('Mit Hilfe von DWRI werden Daten geschrieben!',
- - 44,9,19,COL)
- CALL DWRI (19900122,11,21,71)
- CALL DWRI (18851124,13,44,142)
- CALL DWRI (17150923,15,19,117)
- CALL DWRI (19891224,17,29,57)
- CALL DWRI (20000101,16,56,224)
- CALL AWRI ('<RETURN>',8,19,62,COL)
- CALL TAST (1,1)
-
- C FEHLERMELDUNG AUSGEBEN
- ELSEIF (ME(15) .GT. 0) THEN
- CALL AWRI ('Mit FMEL wird eine Fehlermeldung ausgegeben!',
- - 43,9,19,COL)
- CALL AWRI ('Hier sind Zahlen zwischen 10 und 20 zugelassen!',
- - 46,10,18,COL)
- CALL IREAD (I,4,13,25,71,632,0)
- IF (I .LT. 10) THEN
- CALL FMEL ('zu klein!',9,1,13,48,71)
- ELSEIF (I .GT. 20) THEN
- CALL FMEL ('zu groß!',8,1,13,49,71)
- ELSE
- CALL FMEL ('richtig!',8,1,13,49,71)
- ENDIF
- CALL PAUS (5)
-
- C ZEICHEN AUS DER TASTATUR LESEN
- ELSEIF (ME(16) .GT. 0) THEN
- CALL AWRI ('TAST gibt den Zeichencode einer Taste zurück!',
- - 45,9,18,COL)
- CALL AWRI ('Beenden Sie den Test mit <RETURN>!',34,10,24,COL)
- CALL AWRI ('Zeichencode: , Gruppenflag: ',33,17,24,COL)
- J=1
- 2 CALL TAST (I,J)
- CALL IWRI (I,3,17,37,COL)
- CALL IWRI (J,2,17,55,COL)
- IF (J .NE. 5) GOTO 2
- CALL PAUS (1)
- ENDIF
-
- C CURSOR WIEDER AUSSCHALTEN
- CALL CTYP (0,0)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- GOTO 1
- END
-
-
- SUBROUTINE IOBW (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT DIE BLOCKWEISE BILDSCHIRM-I/O
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,IOS,ME(7),VSEG
- C COL: FARBATTRIBUT
- C IOS: ERRORFLAG
- C ME: FELD FÜR MENÜAUSWAHLEN
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- CHARACTER FELD(7)*50
- C FELD: HILFSFELD FÜR DIE ROUTINE SCREEN
-
- C MENÜ GENERIEREN (BILDSCHIRMFENSTER NR. 4)
- CALL GETFEN (4,4,37,VSEG,IOS)
- 1 CALL ME1FEN (4,7,1,ME,VSEG,52,IOS)
-
- C UNTERPROGRAMM VERLASSEN
- IF (ME(7) .GT. 0) RETURN
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C BILDSCHIRMFENSTER LÖSCHEN
- IF (ME(1) .GT. 0) THEN
- CALL AWRI ('Mit LOES kann man Bildschirmblöcke überschreiben!',
- - 49,9,16,COL)
- CALL LOES (7,56,12,13,176,78,0)
- CALL LOES (4,12,13,15,32,47,0)
- CALL LOES (5,18,13,35,48,95,3)
- CALL LOES (3,12,15,55,250,99,0)
- CALL PAUS (6)
-
- C RAHMEN ZEICHNEN
- ELSEIF (ME(2) .GT. 0) THEN
- CALL AWRI ('RAHM zeichnet einen Rahmen auf den Bildschirm!',
- - 45,9,18,COL)
- CALL RAHM (7,56,12,13,0,16,0)
- CALL RAHM (4,12,13,15,1,18,0)
- CALL RAHM (5,18,13,35,2,20,3)
- CALL RAHM (3,12,15,55,0,30,0)
- CALL PAUS (6)
-
- C TEXT- UND ATTRIBUTBLOCK LESEN UND SCHREIBEN
- ELSEIF (ME(3) .GT. 0 .OR. ME(4) .GT. 0) THEN
- IF (ME(3) .GT. 0) THEN
- CALL AWRI ('SCREEN kann Textblöcke positioniert lesen '//
- - 'und schreiben!',56,9,13,COL)
- I=0
- J=10
- ELSE
- CALL AWRI ('SCREEN kann Farbblöcke positioniert lesen '//
- - 'und schreiben!',56,9,13,COL)
- CALL AWRI ('Mit Monochrome-Monitor ist nichts zu sehen!',
- - 43,10,19,COL)
- I=1
- J=11
- ENDIF
- CALL SCREEN (I,FELD,7,50,2,16)
- CALL SCREEN (J,FELD,7,50,12,16)
- CALL PAUS (6)
-
- C TEXTBLOCK AUF- UND ABWÄRTS SCROLLEN
- ELSEIF (ME(5) .GT. 0 .OR. ME(6) .GT. 0) THEN
- IF (ME(5) .GT. 0) THEN
- CALL AWRI ('Mit WIND kann ein Text aufwärts gescrollt '//
- - 'werden!',48,9,17,COL)
- I=0
- ELSE
- CALL AWRI ('Mit WIND kann ein Text abwärts gescrollt '//
- - 'werden!',47,9,17,COL)
- I=1
- ENDIF
- CALL AWRI ('Dieses Textfenster wird',23,13,29,COL)
- CALL AWRI ('mit Hilfe der',13,14,34,COL)
- CALL AWRI ('Subroutine WIND',15,15,33,COL)
- CALL AWRI ('aufwärts oder abwärts',21,16,30,COL)
- CALL AWRI ('über den Bildschirm gescrollt!',30,17,26,COL)
- CALL PAUS (1)
- DO 2 J=1,9
- CALL WIND (I,1,11,25,19,60,COL)
- CALL PAUS (1)
- 2 CONTINUE
- ENDIF
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- GOTO 1
- END
-
-
- SUBROUTINE MENU (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT DIE VERWENDUNG VON MENUABFRAGEN
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,FELD(12),IOS,ME(7),VSEG
- C COL: FARBATTRIBUT
- C FELD: FELD ZUR DEMONSTRATION DER MENÜAUSWAHLEN
- C IOS: ERRORFLAG
- C ME: FELD FÜR MENÜAUSWAHLEN
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- CHARACTER A*1,STRING*6
- C A: ANTWORTVARIABLE FÜR DIE SUBROUTINE FRAG
- C STRING: STRING FÜR DIE ROUTINE OPTION
-
- C MENÜ GENERIEREN (BILDSCHIRMFENSTER NR. 3)
- CALL GETFEN (5,15,12,VSEG,IOS)
- 1 CALL ME1FEN (5,7,1,ME,VSEG,83,IOS)
-
- C UNTERPROGRAMM VERLASSEN
- IF (ME(7) .GT. 0) RETURN
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C FÜR EINIGE FUNKTIONEN CURSOR EINSCHALTEN
- IF (ME(1) .EQ. 0 .AND. ME(2) .EQ. 0) CALL CTYP (1,1)
-
- C MENÜTEXT AUF DEN BILDSCHIRM BRINGEN
- IF (ME(1) .GT. 0) THEN
- CALL AWRI ('MENTXT schreibt Text aus einer Datei in Menüform!',
- - 49,9,16,COL)
- CALL MENTXT (12,12,3,12,100,1,64,COL)
- CALL PAUS (6)
-
- C EINFACHE AUSWAHL UND MEHRFACHE AUSWAHL
- ELSEIF (ME(2) .GT. 0 .OR. ME(3) .GT. 0) THEN
- IF (ME(2) .GT. 0) THEN
- I=1
- J=28
- CALL AWRI ('MENAKT ermöglicht eine einfache Auswahl!',
- - 40,9,21,COL)
- ELSE
- I=0
- J=16
- CALL AWRI ('MENAKT ermöglicht eine mehrfache Auswahl!',
- - 41,9,20,COL)
- ENDIF
- CALL MENTXT (12,12,3,13,100,1,64,COL)
- CALL MENAKT (12,12,3,13,100,I,FELD,10,J,COL)
- CALL PAUS (2)
-
- C MEHRFACHE MENÜAUSWAHL MIT KENNBUCHSTABEN
- ELSEIF (ME(4) .GT. 0) THEN
- CALL AWRI ('OPTION ermöglicht die Auswahl mit Kennbuchstaben!',
- - 49,8,16,COL)
- CALL MENTXT (6,22,1,10,100,1,64,COL)
- CALL OPTION (STRING,6,18,25,51,COL)
- CALL PAUS (2)
-
- C FRAGE MIT J/N
- ELSEIF (ME(5) .GT. 0) THEN
- CALL AWRI ('FRAG lässt nur die Antworten Ja oder Nein zu!',
- - 45,9,18,COL)
- CALL FRAG (A,'Gefällt Ihnen FORSUB.LIB?',25,14,23,56,COL)
- IF (A .EQ. 'J') THEN
- CALL AWRI ('Das habe ich erwartet!',22,16,30,COL)
- ELSE
- CALL AWRI ('Das wundert mich aber!',22,16,30,COL)
- ENDIF
- CALL PAUS (4)
-
- C FRAGE MIT ZIFFER ALS ANTWORT
- ELSEIF (ME(6) .GT. 0) THEN
- CALL AWRI ('ZIFRAG lässt als Antworten nur Ziffern zu!',
- - 42,9,20,COL)
- CALL ZIFRAG (I,'Wie würden Sie FORSUB.LIB benoten?',34,14,22,
- - 58,COL)
- IF (I .LT. 3) THEN
- CALL AWRI ('Das habe ich erwartet!',22,16,30,COL)
- ELSE
- CALL AWRI ('Das wundert mich aber!',22,16,30,COL)
- ENDIF
- CALL PAUS (4)
- ENDIF
-
- C CURSOR WIEDER AUSSCHALTEN
- IF (ME(1) .EQ. 0 .AND. ME(2) .EQ. 0) CALL CTYP (0,0)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- GOTO 1
- END
-
-
- SUBROUTINE MASKE (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT DIE VERWENDUNG VON BILDSCHIRMMASKEN
- ************************************************************************
-
- C VARIABLEN
- INTEGER AB(8),ADDR(8),ART(8),AUF(8),COL,FORM(8),IOS,KON(8),
- -LAN(8),ME(4),SP(8),SPM(8),TLAN(8),VSEG,ZEI(8),I/0/,J/0/,K/0/,L/0/
- C I, J, K, L MÜSSEN NICHT UNBEEDINGT MIT EINEN WERT VORBELEGT WERDEN;
- C JEDOCH BRINGEN EINIGE COMPILERVERSIONEN OHNE VORBELEGUNG EINE WARNUNG,
- C OBWOHL DAS PROGRAMM EINWANDFREI FUNKTIONIERT! DAS HAT MIT DER FUNCTION
- C LOC() ZU TUN!
- C AB: VARIABLENFELD FÜR MASK UND TYMASK
- C ADDR VARIABLENFELD FÜR MASK
- C ART: VARIABLENFELD FÜR MASK UND TXMASK
- C AUF: VARIABLENFELD FÜR MASK UND TXMASK
- C COL: FARBATTRIBUT
- C FORM: VARIABLENFELD FÜR MASK
- C IOS: ERRORFLAG
- C KON: VARIABLENFELD FÜR MASK UND TXMASK
- C LAN: VARIABLENFELD FÜR MASTXT
- C ME: FELD FÜR MENÜAUSWAHLEN
- C SP: VARIABLENFELD FÜR MASTXT
- C SPM: VARIABLENFELD FÜR MASK UND TXMASK
- C TLAN: VARIABLENFELD FÜR TXMASK
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- C ZEI: VARIABLENFELD FÜR MASTXT, MASK UND TXMASK
- REAL A/0.0/,B/0.0/
- C A, B MÜSSEN NICHT UNBEEDINGT MIT EINEN WERT VORBELEGT WERDEN;
- C JEDOCH BRINGEN EINIGE COMPILERVERSIONEN OHNE VORBELEGUNG EINE WARNUNG,
- C OBWOHL DAS PROGRAMM EINWANDFREI FUNKTIONIERT! DAS HAT MIT DER FUNCTION
- C LOC() ZU TUN!
- C A: HILFSVARIABLE
- C B: HILFSVARIABLE
- CHARACTER TEXT(8)*20
- C TEXT: TEXTVARIABLENFELD FÜR MASK UND TXMASK
-
- C DATEN
- DATA LAN /12,17,9,14,9,12,10,15/, ZEI /12,12,13,14,15,15,16,16/,
- - SP /15,43,22,45,20,42,18,41/, ART /1,1,2,2,3,3,4,4/,
- - FORM /4,6,62,41,10,1,0,0/, SPM /28,61,32,60,30,55,29,57/,
- - AUF /0,0,1,3,4,4,5,6/, AB /3,3,4,5,7,8,0,0/,
- - TLAN /13,6,20,7,10,1,11,10/
-
- C MENÜ GENERIEREN (BILDSCHIRMFENSTER NR. 3)
- CALL GETFEN (6,19,24,VSEG,IOS)
- 1 CALL ME1FEN (6,4,1,ME,VSEG,98,IOS)
-
- C UNTERPROGRAMM VERLASSEN
- IF (ME(4) .GT. 0) RETURN
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C FÜR EINIGE FUNKTIONEN CURSOR EINSCHALTEN UND KENNFELD NULL SETZEN
- IF (ME(2) .GT. 0 .OR. ME(3) .GT. 0) THEN
- CALL CTYP (1,1)
- DO 2 I=1,8
- KON(I)=0
- 2 CONTINUE
- ENDIF
-
- C MASKENTEXT AUF DEN BILDSCHIRM BRINGEN
- IF (ME(1) .GT. 0) THEN
- CALL AWRI ('MASTXT positioniert Dateitext auf dem Bildschirm!',
- - 49,9,16,COL)
- CALL MASTXT (8,LAN,ZEI,SP,1,86,COL)
- CALL RAHM (7,54,11,14,1,COL,0)
- CALL PAUS (6)
-
- C MASKE FÜR ALLE DATENTYPEN GENERIEREN
- ELSEIF (ME(2) .GT. 0) THEN
- CALL AWRI ('MASK generiert eine Maske für alle Datentypen!',
- - 46,9,18,COL)
- CALL MASTXT (8,LAN,ZEI,SP,1,86,COL)
- CALL RAHM (8,54,11,14,1,COL,0)
- ADDR(1)=LOC(I)
- ADDR(2)=LOC(J)
- ADDR(3)=LOC(A)
- ADDR(4)=LOC(B)
- ADDR(5)=LOC(TEXT(1))
- ADDR(6)=LOC(TEXT(2))
- ADDR(7)=LOC(K)
- ADDR(8)=LOC(L)
- CALL MASK (ART,ADDR,FORM,ZEI,SPM,AUF,AB,KON,8,17,16,COL,512)
- CALL PAUS (4)
-
- C MASKE NUR FÜR TEXTE GENERIEREN
- ELSEIF (ME(3) .GT. 0) THEN
- CALL AWRI ('TXMASK generiert eine Maske für Textvariablen!',
- - 46,9,18,COL)
- CALL MASTXT (8,LAN,ZEI,SP,1,97,COL)
- CALL RAHM (8,54,11,14,1,COL,0)
- CALL TXMASK (TEXT,TLAN,ZEI,SPM,AUF,AB,KON,8,17,16,COL,512)
- CALL PAUS (4)
- ENDIF
-
- C CURSOR WIEDER AUSSCHALTEN
- IF (ME(2) .GT. 0 .OR. ME(3) .GT. 0) CALL CTYP (0,0)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- GOTO 1
- END
-
-
- SUBROUTINE FENST (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT DIE VERWENDUNG DER FENSTERTECHNIK
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,COLD(28),FELD(12),IOS,RART(28),VSEG,VSEGD
- C COL: FARBATTRIBUT
- C COLD FARBATTRIBUTE FÜR DEMONSTRATIONEN
- C IOS: ERRORFLAG
- C FELD: VARIABLENFELD FÜR ME1FEN UND MENFEN
- C RART: RAHMENART
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- C VSEGD: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG FÜR DEMONSTRATION
-
- C FENSTER MIT HINWEIS ZUR DEMONSTRATION DER FENSTERTECHNIK
- CALL PRIFEN (7,30,VSEG,0,IOS)
- CALL GETFEN (30,20,2,VSEG,IOS)
-
- C HINTERGRUND IN FENSTER NUMMER 29 ABLEGEN
- CALL PUTFEN (29,25,80,1,1,VSEG,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL PAUS (8)
- CALL PRIFEN (7,30,VSEG,0,IOS)
-
- C BILDSCHIRM LÖSCHEN
- CALL LOES (25,80,1,1,32,COL,0)
-
- C BILDSCHIRMFENSTER FÜR DEN HINTERGRUND ERZEUGEN (FENSTER 1, VSEGD)
- CALL PUTFEN (1,25,80,1,1,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,2,1,50,1,114,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C ZUFÄLLIGE FENSTER ERZEUGEN
- DO 1 I=2,28
- CALL ZUFALL (COLD(I),1,126)
- CALL ZUFALL (IH,3,13)
- CALL ZUFALL (IB,6,40)
- CALL ZUFALL (IZEI,1,26-IH)
- CALL ZUFALL (ISP,1,81-IB)
- IF (COLD(I) .LT. 16) COLD(I)=COLD(I)+15+IB
- IF (I .EQ. 6) COLD(I)=71
- IF (I .EQ. 25) COLD(I)=2
- IF (I .EQ. 28) COLD(I)=4
- CALL LOES (IH,IB,IZEI,ISP,32,COLD(I),0)
- CALL PUTFEN (I,IH,IB,IZEI,ISP,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- 1 CONTINUE
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,1,1,50,1,116,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C FENSTER UMRAHMEN
- DO 2 I=2,28
- CALL ZUFALL (RART(I),1,2)
- CALL RAMFEN (I,RART(I),COLD(I),'Test','NUM',VSEGD,IOS)
- 2 CONTINUE
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,1,1,50,1,117,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C PRIORITÄT ZWEIER FENSTER TAUSCHEN
- CALL PRIFEN (25,28,VSEGD,COL,IOS)
- CALL PAUS (4)
- CALL PRIFEN (25,28,VSEGD,COL,IOS)
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,1,1,50,1,118,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C POSITION EINES FENSTERS VERÄNDERN
- CALL MOPFEN (25,2,2,VSEGD,COL,IOS)
- CALL PAUS (4)
- CALL MOPFEN (25,5,10,VSEGD,COL,IOS)
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,1,1,50,1,119,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C GRÖßE EINES FENSTERS VERÄNDERN
- CALL GRPFEN (25,13,40,VSEGD,COLD(25),IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL LOSFEN (25,32,COLD(25),VSEGD,IOS)
- CALL RAMFEN (25,RART(25),COLD(25),'Test','NUM',VSEGD,IOS)
- CALL PAUS (4)
- CALL GRPFEN (25,3,6,VSEGD,COLD(25),IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL LOSFEN (25,32,COLD(25),VSEGD,IOS)
- CALL RAMFEN (25,RART(25),COLD(25),'Test','NUM',VSEGD,IOS)
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,1,1,50,1,120,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C FENSTERINHALTE ÜBERSCHREIBEN
- DO 3 I=2,28
- CALL LOSFEN (I,62+I,COLD(I),VSEGD,IOS)
- 3 CONTINUE
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,1,1,50,1,121,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C FENSTERINHALTE LÖSCHEN
- DO 4 I=2,28
- CALL LOSFEN (I,32,COLD(I),VSEGD,IOS)
- 4 CONTINUE
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,1,1,50,1,122,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C FENSTER SCHLIEßEN
- DO 5 I=2,28
- CALL CLOFEN (I,VSEGD,0,IOS)
- 5 CONTINUE
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (2)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,4,1,50,1,125,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,11,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C FENSTER UMRAHMEN UND ÖFFNEN
- DO 6 I=2,11
- CALL RAMFEN (I,1,COLD(I),'Demo','NUM',VSEGD,IOS)
- CALL INFFEN (I,0,0,IZEI,ISP,0,0,VSEGD,IOS)
- CALL GETFEN (I,IZEI,ISP,VSEGD,IOS)
- 6 CONTINUE
-
- C FENSTER MANUELL BEWEGEN
- CALL MOVFEN (6,VSEGD,0,IOS)
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,3,1,50,1,132,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C FENSTER MANUELL VERGRÖßERN ODER VERKLEINERN
- CALL GROFEN (6,VSEGD,COLD(6),IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL LOSFEN (6,32,COLD(6),VSEGD,IOS)
- CALL RAMFEN (6,RART(6),COLD(6),'Test','NUM',VSEGD,IOS)
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,3,1,50,1,138,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C FENSTER MANUELL BESCHREIBEN
- CALL CTYP (1,1)
- CALL WRIFEN (6,VSEGD,IOS)
- CALL CTYP (0,0)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,3,1,50,1,144,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C EINFACHE AUSWAHL AUS EINEM FENSTER REALISIEREN
- CALL FREFEN (15,VSEGD,IOS)
- CALL TEXFEN (15,12,3,12,1,64,2,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (15,1,3,'┤einfache Auswahl├','<Cursor>─<Return>',
- -VSEGD,IOS)
- CALL GETFEN (15,4,21,VSEGD,IOS)
- CALL ME1FEN (15,12,3,FELD,VSEGD,0,IOS)
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,3,1,50,1,150,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C MEHRFACHE AUSWAHL AUS EINEM FENSTER REALISIEREN
- CALL FREFEN (16,VSEGD,IOS)
- CALL TEXFEN (16,12,3,12,1,64,2,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (16,1,3,'┤mehrfache Auswahl├',
- -'<Cursor>─<Return>─<F1>─<F2>',VSEGD,IOS)
- CALL GETFEN (16,18,5,VSEGD,IOS)
- CALL MENFEN (16,12,3,FELD,VSEGD,0,IOS)
- CALL PAUS (1)
-
- C MELDUNGSFENSTER FREIGEBEN
- CALL CLOFEN (29,VSEGD,COL,IOS)
- CALL FREFEN (29,VSEGD,IOS)
- CALL PAUS (6)
-
- C BILDSCHIRMFENSTER FÜR DIE MELDUNG ERZEUGEN (FENSTER 29, VSEGD)
- CALL TEXFEN (29,3,1,50,1,156,78,VSEGD,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL RAMFEN (29,1,78,CHAR(0),CHAR(0),VSEGD,IOS)
- CALL GETFEN (29,12,15,VSEGD,IOS)
- CALL PAUS (4)
-
- C FENSTER MANUELL VERWALTEN
- DO 7 I=2,29
- CALL CLOFEN (I,VSEGD,0,IOS)
- 7 CONTINUE
- CALL FREFEN (1,VSEGD,IOS)
- CALL CTYP (1,1)
- CALL VERFEN (VSEGD,COL,IOS)
- CALL CTYP (0,0)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL PAUS (1)
-
- C FENSTER SCHLIEßEN UND AUS DER MEMORY ENTFERNEN
- DO 8 I=1,30
- CALL CLOFEN (I,VSEGD,COL,IOS)
- CALL FREFEN (I,VSEGD,IOS)
- 8 CONTINUE
-
- C HINTERGRUND WIEDERHERSTELLEN UND VERWALTUNGSFELD AUS MEMORY ENTFERNEN
- CALL GETFEN (29,1,1,VSEG,IOS)
- CALL FREFEN (29,VSEG,IOS)
- CALL FREMEM (VSEGD,IOS)
- END
-
-
- SUBROUTINE SCHRI (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT DIE VERWENDUNG VERSCHIEDENER SCHRIFTEN
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,IOS,ME(5),VSEG
- C COL: FARBATTRIBUT
- C IOS: ERRORFLAG
- C ME: FELD FÜR MENÜAUSWAHLEN
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
-
- C MENÜ GENERIEREN (BILDSCHIRMFENSTER NR. 6)
- CALL GETFEN (8,5,17,VSEG,IOS)
- 1 CALL ME1FEN (8,5,1,ME,VSEG,3,IOS)
-
- C UNTERPROGRAMM VERLASSEN
- IF (ME(5) .GT. 0) RETURN
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C FÜR EINIGE FUNKTIONEN CURSOR EINSCHALTEN
- IF (ME(3) .GT. 0 .OR. ME(4) .GT. 0) CALL CTYP (1,1)
-
- C ROM-ÄQUIVALENTEN BLOCKTEXT SCHREIBEN
- IF (ME(1) .GT. 0) THEN
- CALL AWRI ('SCBL schreibt ROM-äquivalenten Blocktext!',
- - 41,9,20,COL)
- CALL SCBL ('TEST',4,12,100,0,COL,5)
- CALL PAUS (6)
-
- C FILIGRANEN BLOCKTEXT SCHREIBEN
- ELSEIF (ME(2) .GT. 0) THEN
- CALL AWRI ('SCBL schreibt filigranen Blocktext zum Bildschirm!'
- - ,50,9,16,COL)
- CALL SCBL ('TEST',4,12,100,0,COL,0)
- CALL PAUS (6)
-
- C TEXTZEICHENSÄTZE LADEN UND VORFÜHREN
- ELSEIF (ME(3) .GT. 0) THEN
-
- C HINWEISTEXT AUF DEN BILDSCHIRM BRINGEN
- CALL AWRI ('SCRIPT benutzt alternative Zeichensätze!)'
- - ,40,9,21,COL)
- CALL AWRI ('EGA- oder VGA-Videokonfiguration wird benötigt!)',
- - 47,11,17,COL)
-
- C ERSTE SCHRIFT AUF DEN BILDSCHIRM BRINGEN
- I=0
- CALL SCRIPT ('ELITE14'//CHAR(0),I)
- IF (I .NE. 0) THEN
- CALL AWRI ('Keine EGA- oder VGA- Videokonfiguration,',
- - 39,15,21,COL)
- CALL AWRI ('oder Scriptdateien nicht im Verzeichnis!',
- - 39,16,21,COL)
- CALL PAUS (6)
- GOTO 3
- ENDIF
- CALL AWRI ('Dieser Text ist in ELITE14 geschrieben!',
- - 39,15,21,COL)
- CALL PAUS (6)
-
- C DREI ANDERE SCHRIFTEN AUF DEN BILDSCHIRM BRINGEN
- CALL SCRIPT ('BOLD6'//CHAR(0),0)
- CALL AWRI (' Dieser Text ist in BOLD6 geschrieben! ',
- - 39,15,21,COL)
- CALL PAUS (6)
- CALL SCRIPT ('PICA10'//CHAR(0),0)
- CALL AWRI (' Dieser Text ist in PICA10 geschrieben!',
- - 39,15,21,COL)
- CALL PAUS (6)
- CALL SCRIPT ('SCR24'//CHAR(0),0)
- CALL AWRI (' Dieser Text ist in SCR24 geschrieben! ',
- - 39,15,21,COL)
- CALL PAUS (6)
-
- C ALTEN VIDEOMODUS WIEDERHERSTELLEN
- CALL VIDMOD (2,0,2)
- CALL VIDMOD (3,0,2)
-
- C TEXTZEICHENSATZ IM 40-ZEILEN-MODUS LADEN UND VORFÜHREN
- ELSEIF (ME(4) .GT. 0) THEN
-
- C HINTERGRUND IN FENSTER 29 ABLEGEN
- CALL PUTFEN (29,25,80,1,1,VSEG,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
- CALL LOES (25,80,1,1,32,COL,0)
-
- C VIDEOMODUS 40 ZEICHEN SETZEN
- I=2
- CALL VIDMOD (1,IALT,I)
- IF (I .EQ. 0) CALL VIDMOD (0,IALT,2)
-
- C NEUEN ZEICHENSATZ GENERIEREN UND RAHMEN ZEICHNEN
- I=0
- CALL SCRIPT ('SCR24'//CHAR(0),I)
- IF (I .NE. 0) THEN
- CALL AWRI ('Keine EGA- oder VGA-Videokonfig.!',
- - 33,9,5,COL)
- GOTO 2
- ENDIF
- CALL RAHM (16,40,1,1,0,COL,5)
-
- C SCHRIFT AUSGEBEN
- CALL AWRI ('SCRIPT benutzt alternat. Zeichensätze',
- - 37,6,2,COL)
- CALL AWRI ('mit EGA- oder VGA-Videokonfiguration!',
- - 37,8,2,COL)
- CALL AWRI ('Dieser Text ist in SCR24 geschrieben!',
- - 37,10,2,COL)
-
- C ALTE VIDEOKONFIGURATION SETZEN UND BILDSCHIRM WIEDERHERSTELLEN
- 2 CALL PAUS (6)
- CALL VIDMOD (IALT,0,1)
- CALL GETFEN (29,1,1,VSEG,IOS)
- CALL FREFEN (29,VSEG,IOS)
- ENDIF
-
- C CURSOR WIEDER AUSSCHALTEN
- 3 IF (ME(3) .GT. 0 .OR. ME(4) .GT. 0) CALL CTYP (0,0)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- GOTO 1
- END
-
-
- SUBROUTINE ZEIT (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT ZEIT- UND AKUSTIKSTEUERUNG
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,IOS,VSEG
- C COL: FARBATTRIBUT
- C IOS: ERRORFLAG
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
-
- C HINWEISFENSTER GENERIEREN (BILDSCHIRMFENSTER NR. 9)
- CALL PRIFEN (9,30,VSEG,0,IOS)
- CALL GETFEN (30,21,19,VSEG,IOS)
- CALL PAUS (8)
- CALL PRIFEN (9,30,VSEG,0,IOS)
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C HINWEISTEXT SCHREIBEN
- CALL AWRI ('Mit den Subroutinen PAUS, LAUT und PIEPS',
- -40,9,21,COL)
- CALL AWRI ('können Pausen beliebiger Zeitdauer und Töne',
- -43,11,19,COL)
- CALL AWRI ('beliebiger Frequenz und Dauer erzeugt werden!',
- -45,13,18,COL)
-
- C PAUSEN ERZEUGEN UND DABEI FELD FARBLICH KENNZEICHNEN
- DO 1 I=1,20
- IF (J .EQ. 176) THEN
- J=177
- ELSEIF (J .EQ. 177) THEN
- J=178
- ELSEIF (J .EQ. 178) THEN
- J=176
- ELSE
- J=176
- ENDIF
- CALL LOES (4,50,15,16,J,(MOD(I-1,8)*16)+15,0)
- CALL RWRI (I*0.1,4.1,17,34,COL)
- CALL AWRI (' SEKUNDEN!',10,17,38,COL)
- CALL LAUT (100,INT(I*0.1/0.055),1)
- 1 CONTINUE
- CALL LOES (4,50,15,16,32,COL,0)
- CALL PAUS (3)
-
- C TÖNE ERZEUGEN
- DO 2 I=1,16
- CALL LAUT (100,INT(I*0.05/0.055),1)
- CALL IWRI (100+I*200,4,17,35,COL)
- CALL AWRI ('HERTZ!',6,17,40,COL)
- CALL LAUT (INT(1193180/(300+I*200)),INT(I*0.05/0.055),0)
- 2 CONTINUE
- CALL AWRI ('PAUS wartet bis Sie eine Taste drücken!',39,17,21,COL)
- CALL PAUS (-1)
- CALL LOES (1,40,17,21,32,COL,0)
- DO 3 I=16,1,-1
- CALL LAUT (100,INT((17-I)*0.05/0.055),1)
- CALL IWRI (100+I*200,4,17,35,COL)
- CALL AWRI ('HERTZ!',6,17,40,COL)
- CALL LAUT (INT(1193180/(300+I*200)),INT((17-I)*0.05/0.055),0)
- 3 CONTINUE
- CALL PAUS (3)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- END
-
-
- SUBROUTINE TRANS (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT TRANSFORMATIONEN
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,IOS,VSEG
- C COL: FARBATTRIBUT
- C IOS: ERRORFLAG
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
-
- C HINWEISFENSTER GENERIEREN (BILDSCHIRMFENSTER NR. 10)
- CALL PRIFEN (10,30,VSEG,0,IOS)
- CALL GETFEN (30,2,28,VSEG,IOS)
- CALL PAUS (8)
- CALL PRIFEN (10,30,VSEG,0,IOS)
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C HINWEISTEXT FÜR FARBTRANSFORMATION SCHREIBEN
- CALL AWRI ('ATTRIB erzeugt aus einem normalen Farbattribut',
- -46,11,18,COL)
- CALL AWRI ('je ein inverses, intensives, blinkendes und',
- -43,12,19,COL)
- CALL AWRI ('intensivinverses Farbattribut!',30,13,26,COL)
-
- C ATTRIBUTE ERZEUGEN UND DEMONSTRIEREN
- IN=71
- CALL ATTRIB (IN,IV,IT,IB,II)
- CALL AWRI (' normal ',8,16,17,IN)
- CALL AWRI ('inverse ',8,16,27,IV)
- CALL AWRI ('intensiv',8,16,37,IT)
- CALL AWRI ('blinkend',8,16,47,IB)
- CALL AWRI ('int/inv.',8,16,57,II)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR ADRESSTRANSFORMATION SCHREIBEN
- CALL LOES (6,55,11,14,32,COL,0)
- CALL AWRI ('ADRESS wandelt eine Maschinenadresse aus der',
- -44,11,19,COL)
- CALL AWRI ('LOC()-Funktion in Segment und Offset um:',
- -40,12,21,COL)
-
- C ADRESSE TRANSFORMIEREN UND ERGEBNISSE SCHREIBEN
- CALL ADRESS (LOC(COL),IS,IO)
- CALL AWRI ('Adresse: Segment: Offset:',
- -46,16,14,COL)
- CALL IWRI (LOC(COL),10,16,23,COL)
- CALL IWRI (IS,7,16,44,COL)
- CALL IWRI (IO,7,16,61,COL)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR DATUMSTRANSFORMATION SCHREIBEN
- CALL LOES (6,55,11,14,32,COL,0)
- CALL AWRI ('DTRAN kann ein Datum vom Stringformat in ein Integer',
- -52,11,15,COL)
- CALL AWRI ('wandeln und umgekehrt!',
- -22,12,30,COL)
-
- C DATUM TRANSFORMIEREN UND ERGEBNISSE SCHREIBEN
- CALL DTRAN (I,'20.01.1990',1)
- CALL AWRI ('Datum: 20.01.1990 Integeräquivalent:',
- -37,16,19,COL)
- CALL IWRI (I,8,16,57,COL)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR ZEITTRANSFORMATION SCHREIBEN
- CALL LOES (6,55,11,14,32,COL,0)
- CALL AWRI ('ZTRAN kann eine Zeit vom Stringformat in ein Integer',
- -52,11,15,COL)
- CALL AWRI ('wandeln und umgekehrt!',
- -22,12,30,COL)
-
- C ZEIT TRANSFORMIEREN UND ERGEBNISSE SCHREIBEN
- CALL ZTRAN (I,'14.25.00',1)
- CALL AWRI ('Zeit: 14.25.00 Integeräquivalent:',
- -34,16,20,COL)
- CALL IWRI (I,6,16,55,COL)
- CALL PAUS (6)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- END
-
-
- SUBROUTINE ZUSOR (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT ZUFALLZAHLEN UND SORTIERUNGEN
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,IFELD(10),IOS,ME(5),VSEG
- C COL: FARBATTRIBUT
- C IFELD: FELD FÜR SORTIERUNG
- C IOS: ERRORFLAG
- C ME: FELD FÜR MENÜAUSWAHLEN
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- REAL RFELD(10)
- C RFELD: FELD FÜR SORTIERUNG
- CHARACTER AFELD(10)*10
- C AFELD: FELD FÜR SORTIERUNG
-
- DATEN
- DATA IFELD /932434,124232,12,34545,98989,-1284,773271,-71232,
- -23245,-45627/
- DATA RFELD /932.34,124.32,12.0,434.54,989.9,-14.,73.71,-21.32,
- -33.5,-56.7/
- DATA AFELD /'eins','zwei','drei','vier','fünf','sechs','sieben',
- -'acht','neun','zehn'/
-
- C HINWEISFENSTER GENERIEREN (BILDSCHIRMFENSTER NR. 9)
- CALL GETFEN (11,10,26,VSEG,IOS)
- 1 CALL ME1FEN (11,5,1,ME,VSEG,82,IOS)
-
- C UNTERPROGRAMM VERLASSEN
- IF (ME(5) .GT. 0) RETURN
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C ZUFALLZAHLEN ERZEUGEN
- IF (ME(1) .GT. 0) THEN
- CALL AWRI ('ZUFALL erzeugt zufällige Zahlen im Integerformat!',
- - 49,9,16,COL)
- DO 2 I=1,10
- CALL ZUFALL (J,0,100000)
- IF (I .LT. 6) THEN
- CALL IWRI (J,6,13,14+I*8,COL)
- ELSE
- CALL IWRI (J,6,15,14+(I-5)*8,COL)
- ENDIF
- 2 CONTINUE
- CALL PAUS (6)
-
- C INTEGER SORTIEREN
- ELSEIF (ME(2) .GT. 0) THEN
- CALL AWRI ('ISORT sortiert Integers fallend oder steigend!',
- - 46,9,18,COL)
- CALL ISORT (10,IFELD,0)
- DO 3 I=1,10
- IF (I .LT. 6) THEN
- CALL IWRI (IFELD(I),6,13,14+I*8,COL)
- ELSE
- CALL IWRI (IFELD(I),6,15,14+(I-5)*8,COL)
- ENDIF
- 3 CONTINUE
- CALL PAUS (6)
-
- C REALS SORTIEREN
- ELSEIF (ME(3) .GT. 0) THEN
- CALL AWRI ('RSORT sortiert Reals fallend oder steigend!',
- - 43,9,19,COL)
- CALL RSORT (10,RFELD,0)
- DO 4 I=1,10
- IF (I .LT. 6) THEN
- CALL RWRI (RFELD(I),6.2,13,14+I*8,COL)
- ELSE
- CALL RWRI (RFELD(I),6.2,15,14+(I-5)*8,COL)
- ENDIF
- 4 CONTINUE
- CALL PAUS (6)
-
- C STRINGS SORTIEREN
- ELSEIF (ME(4) .GT. 0) THEN
- CALL AWRI ('ASORT sortiert Teste fallend oder steigend!',
- - 43,9,19,COL)
- CALL ASORT (10,AFELD,0)
- DO 5 I=1,10
- IF (I .LT. 6) THEN
- CALL AWRI (AFELD(I),6,13,15+I*8,COL)
- ELSE
- CALL AWRI (AFELD(I),6,15,15+(I-5)*8,COL)
- ENDIF
- 5 CONTINUE
- CALL PAUS (6)
- ENDIF
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- GOTO 1
- END
-
-
- SUBROUTINE STRIMA (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT STRINGMANIPULATIONEN
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,IOS,VSEG
- C COL: FARBATTRIBUT
- C IOS: ERRORFLAG
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- CHARACTER TEXT1*50,TEXT2*50
- C TEXT1: ORIGINALTEXT FÜR DEMONSTRATIONEN
- C TEXT2: DURCH DEMONSTRATION VERÄNDERTER TEXT
-
- C DATEN
- DATA TEXT1 /'Oben steht der Originaltext, unten die Abänderung!'/
-
- C HINWEISFENSTER GENERIEREN (BILDSCHIRMFENSTER NR. 12)
- CALL PRIFEN (12,30,VSEG,0,IOS)
- CALL GETFEN (30,15,13,VSEG,IOS)
- CALL PAUS (8)
- CALL PRIFEN (12,30,VSEG,0,IOS)
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C HINWEISTEXT FÜR "CHANGE" SCHREIBEN
- CALL AWRI ('CHANGE wechselt den String "Original" gegen den',
- -47,9,18,COL)
- CALL AWRI ('String "Ur" aus!',16,10,33,COL)
-
- C ORIGINALTEXT UND GEÄNDERTEN TEXT SCHREIBEN
- CALL AWRI (TEXT1,50,15,16,71)
- CALL CHANGE (TEXT1,'Original',TEXT2,'Ur')
- CALL AWRI (TEXT2,50,17,16,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "CHAWAL" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('CHAWAL wechselt das Zeichen "e" gegen',
- -37,9,23,COL)
- CALL AWRI ('das Zeichen "$" aus!',20,10,31,COL)
-
- C ORIGINALTEXT UND GEÄNDERTEN TEXT SCHREIBEN
- CALL AWRI (TEXT1,50,15,16,71)
- CALL CHAWAL (TEXT1,'e',TEXT2,'$')
- CALL AWRI (TEXT2,50,17,16,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "CHAZEI" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('CHAZEI wechselt alle Zeichen, die lexikaligraphisch',
- -51,9,15,COL)
- CALL AWRI ('kleiner als m und größer als d sind, gegen % aus!',
- -49,10,16,COL)
-
- C ORIGINALTEXT UND GEÄNDERTEN TEXT SCHREIBEN
- CALL AWRI (TEXT1,50,15,16,71)
- CALL CHAZEI (TEXT1,'e','m',TEXT2,'%')
- CALL AWRI (TEXT2,50,17,16,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "DEHN" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('DEHN vervielfacht Leerzeichen solange, bis eine',
- -47,9,17,COL)
- CALL AWRI ('Stringlänge von 50 Characters erreicht ist!',
- -43,10,19,COL)
-
- C ORIGINALTEXT UND GEÄNDERTEN TEXT SCHREIBEN
- TEXT2='Das ist ein auf 50 Zeichen zu dehnender Text'
- CALL AWRI (TEXT2,50,15,16,71)
- CALL DEHN (TEXT2,TEXT2,50)
- CALL AWRI (TEXT2,50,17,16,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "DELETE" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('DELETE entfernt alle Zeichenketten "er"',39,9,21,COL)
- CALL AWRI ('aus dem Originaltext!',21,10,30,COL)
-
- C ORIGINALTEXT UND GEÄNDERTEN TEXT SCHREIBEN
- CALL AWRI (TEXT1,50,15,16,71)
- CALL DELETE (TEXT1,TEXT2,'er')
- CALL AWRI (TEXT2,50,17,16,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "FUEG" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('FUEG fügt eine Zeichenkette an einer vorgegebenen',
- -49,9,16,COL)
- CALL AWRI ('Position im Text ein!',21,10,30,COL)
-
- C ORIGINALTEXT UND GEÄNDERTEN TEXT SCHREIBEN
- TEXT2='In diesen Text wird eingefügt!'
- CALL AWRI (TEXT2,50,15,16,71)
- CALL FUEG (TEXT2,'ein String ',TEXT2,20)
- CALL AWRI (TEXT2,50,17,16,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "GETWOR" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('GETWOR ermittelt das vierte Wort im Text!',
- -41,9,20,COL)
-
- C ORIGINALTEXT UND GEÄNDERTEN TEXT SCHREIBEN
- CALL AWRI (TEXT1,50,15,16,71)
- CALL GETWOR (TEXT1,4,TEXT2)
- CALL AWRI (TEXT2,50,17,16,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "LAENGE" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('LAENGE ermittelt die Stringlänge eines Textes!',
- -46,9,18,COL)
-
- C ORIGINALTEXT UND STRINGLÄNGE SCHREIBEN
- CALL AWRI (TEXT1,50,15,16,71)
- CALL LAENGE (TEXT1,I)
- CALL AWRI ('Der Text ist Characters lang!',32,17,25,71)
- CALL IWRI (I,2,17,38,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "POSIT" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('POSIT ermittelt die Position des Strings "Ab"!',
- -45,9,18,COL)
-
- C ORIGINALTEXT UND POSITION SCHREIBEN
- CALL AWRI (TEXT1,50,15,16,71)
- CALL POSIT (TEXT1,I,'Ab',0)
- CALL AWRI ('Der String beginnt in Position !',34,17,24,71)
- CALL IWRI (I,2,17,55,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "UPCASE" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('UPCASE wechselt alle Kleinbuchstaben gegen',
- -42,9,20,COL)
- CALL AWRI ('Großbuchstaben aus!',19,10,31,COL)
-
- C ORIGINALTEXT UND GEÄNDERTEN TEXT SCHREIBEN
- CALL AWRI (TEXT1,50,15,16,71)
- CALL UPCASE (TEXT1,TEXT2)
- CALL AWRI (TEXT2,50,17,16,71)
- CALL PAUS (6)
-
- C HINWEISTEXT ÜBER WEITERE ROUTINEN SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('Es sind weitere Subroutinen zu',30,9,26,COL)
- CALL AWRI ('diesem Thema in FORSUB.LIB vorhanden,',37,10,22,COL)
- CALL AWRI ('die am Bildschirm nicht',23,11,29,COL)
- CALL AWRI ('demonstriert werden können!',27,12,27,COL)
- CALL AWRI ('Die Möglichkeiten der hier in',29,14,26,COL)
- CALL AWRI ('Kurzform vorgestellten Routinen',31,15,25,COL)
- CALL AWRI ('sind weitaus größer!',20,16,31,COL)
- CALL PAUS (6)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- END
-
-
- SUBROUTINE DATVER (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT DATEI- LAUFWERKS- UND VERZEICHNISROUTINEN
- ************************************************************************
-
- C VARIABLEN
- INTEGER COL,IOS,VSEG
- C COL: FARBATTRIBUT
- C IOS: ERRORFLAG
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- CHARACTER ATTR*6,DATEI(6)*12,DATEI1(6)*50,DATUM*10,LW,LWKE*20,
- -NAME*12,VERZ*64,ZEIT*8
- C ATTR: DATEIATTRIBUTE
- C DATEI: DATEINAMEN OHNE PFAD
- C DATEI1: DATEINAMEN MIT PFAD
- C DATUM: DATEIDATUM
- C LW: AKTUELLES LAUFWERK
- C LWKE: ALLE LAUFWERKE
- C NAME: DATEINAME
- C VERZ: VERZEICHNIS
- C ZEIT: DATEIZEIT
-
- C HINWEISFENSTER GENERIEREN (BILDSCHIRMFENSTER NR. 13)
- CALL PRIFEN (13,30,VSEG,0,IOS)
- CALL GETFEN (30,15,35,VSEG,IOS)
- CALL PAUS (8)
- CALL PRIFEN (13,30,VSEG,0,IOS)
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C HINWEISTEXT FÜR "LAUFD" SCHREIBEN
- CALL AWRI ('LAUFD ermittelt das aktuelle Laufwerk!',38,9,22,COL)
-
- C AKTUELLES LAUFWERK ERMITTELN
- CALL AWRI ('Das aktuelle Laufwerk ist :',28,15,27,COL)
- CALL LAUFD (LW)
- CALL AWRI (LW,1,15,53,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "LAUFW" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('LAUFW ermittelt alle physikalischen, logischen,',
- -47,9,17,COL)
- CALL AWRI ('und substituierten Laufwerke im System!',39,10,21,COL)
-
- C ALLE LAUFWERKE ERMITTELN
- CALL AWRI ('Diese Laufwerke sind im System vorhanden:',
- -41,15,20,COL)
- CALL LAUFW (LWKE,I)
- CALL AWRI (LWKE,I,16,(80-I)/2+1,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "LAUFK" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('LAUFK ermittelt den Typ eines Laufwerks!',40,9,21,COL)
-
- C ALLE LAUFWERKTYPEN ERMITTELN
- DO 1 J=1,MIN(I,6)
- CALL LAUFK (LWKE(J:J),K)
- IF (K .EQ. 0) THEN
- CALL AWRI ('Laufwerk '//LWKE(J:J)//': Festplatte oder '//
- - 'RAM-Disk!',37,12+J,22,COL)
- ELSEIF (K .EQ. 1) THEN
- CALL AWRI ('Laufwerk '//LWKE(J:J)//': Diskettenlaufwerk!',
- - 30,12+J,22,COL)
- ELSEIF (K .EQ. 2) THEN
- CALL AWRI ('Laufwerk '//LWKE(J:J)//': Serverlaufwerk!',
- - 27,12+J,22,COL)
- ELSE
- CALL AWRI ('Laufwerk '//LWKE(J:J)//': ungültiges Laufwerk!',
- - 32,12+J,22,COL)
- ENDIF
- 1 CONTINUE
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "GETVER" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('GETVER ermittelt das aktuelle Verzeichnis!',
- -42,9,20,COL)
-
- C AKTUELLES VERZEICHNIS ERMITTELN
- CALL AWRI ('Das aktuelle Verzeichnis ist:',29,15,26,COL)
- CALL GETVER (VERZ,I)
- CALL LAENGE (VERZ,I)
- IF (I .EQ. 0) THEN
- VERZ='\'
- I=1
- ENDIF
- CALL AWRI (VERZ,I,16,(80-I)/2+1,71)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "DSUCH" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('DSUCH findet eine oder mehrere Dateien',38,9,22,COL)
- CALL AWRI ('oder Unterverzeichnisse in einem Verzeichnis!',
- -45,10,18,COL)
-
- C DATEIEN *.* IM AKTUELLEN VERZEICHNIS FINDEN
- K=6
- CALL DSUCH ('*.*'//CHAR(0),127,K,DATEI)
- DO 2 J=1,K
- CALL LAENGE (DATEI(J),I)
- CALL AWRI (DATEI(J),I,12+J,35,71)
- 2 CONTINUE
- CALL PAUS (8)
-
- C HINWEISTEXT FÜR "DFIND" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('DFIND findet eine oder mehrere Dateien',38,9,22,COL)
- CALL AWRI ('"*.COM" im gesamten System!',27,10,27,COL)
-
- C DATEIEN *.COM IM GESAMTEN SYSTEM FINDEN
- I=6
- CALL DFIND ('*.COM'//CHAR(0),I,DATEI1)
- DO 3 J=1,I
- CALL LAENGE (DATEI1(J),K)
- CALL AWRI (DATEI1(J),K,12+J,(80-K)/2+1,71)
- 3 CONTINUE
- CALL PAUS (8)
-
- C HINWEISTEXT FÜR "DINFO" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('DINFO liefert Dateiinformationen!',33,9,24,COL)
-
- C DATEIINFORMATIONEN ERMITTELN
- DO 4 J=1,I
- CALL LAENGE (DATEI1(J),K)
- CALL DINFO (DATEI1(J)(1:K)//CHAR(0),NAME,ATTR,IDAT,IZEIT,IGRO)
- CALL DTRAN (IDAT,DATUM,0)
- CALL ZTRAN (IZEIT,ZEIT,0)
- CALL AWRI (ATTR//' '//DATUM//' '//ZEIT//' '//NAME,
- - 46,12+J,18,71)
- CALL IWRI (IGRO,6,12+J,45,71)
- 4 CONTINUE
- CALL PAUS (10)
-
- C HINWEISTEXT ÜBER WEITERE ROUTINEN SCHREIBEN
- CALL LOES (10,55,9,14,32,COL,0)
- CALL AWRI ('Es sind weitere Subroutinen zu',30,9,26,COL)
- CALL AWRI ('diesem Thema in FORSUB.LIB vorhanden,',37,10,22,COL)
- CALL AWRI ('die am Bildschirm nicht',23,11,29,COL)
- CALL AWRI ('demonstriert werden können!',27,12,27,COL)
- CALL PAUS (6)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- END
-
-
- SUBROUTINE PEKPOK (VSEG)
- C DIE SUBROUTINE SCHREIBT EINEN HINWEISTEXT ÜBER LESE- UND SCHREIB-
- C OPERATIONEN VON UND ZU MASCHINENADRESSEN
- ************************************************************************
-
- C VARIABLEN
- INTEGER IOS,VSEG
- C IOS: ERRORFLAG
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
-
- C HINWEISFENSTER GENERIEREN (BILDSCHIRMFENSTER NR. 14)
- CALL PRIFEN (14,30,VSEG,0,IOS)
- CALL GETFEN (30,6,21,VSEG,IOS)
- CALL TAST (1,1)
- CALL PRIFEN (14,30,VSEG,0,IOS)
- END
-
-
- SUBROUTINE VIRSPE (VSEG)
- C DIE SUBROUTINE SCHREIBT EINEN HINWEISTEXT ZUR VIRITUELLEN SPEICHER-
- C VERWALTUNG
- ************************************************************************
-
- C VARIABLEN
- INTEGER IOS,VSEG
- C IOS: ERRORFLAG
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
-
- C HINWEISFENSTER GENERIEREN (BILDSCHIRMFENSTER NR. 15)
- CALL PRIFEN (15,30,VSEG,0,IOS)
- CALL GETFEN (30,7,2,VSEG,IOS)
- CALL TAST (1,1)
- CALL PRIFEN (15,30,VSEG,0,IOS)
- END
-
-
- SUBROUTINE CHIINT (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT EINEN CHILD-PROZESS UND EINEN INTERRUPT-
- C AUFRUF
- ************************************************************************
-
- C VARIABLEN
- INTEGER AX,COL,IOS,VSEG
- C AX: AX-REGISTER FÜR INTERRUPT-AUFRUF
- C COL: FARBATTRIBUT
- C IOS: ERRORFLAG
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
-
- C HINWEISFENSTER GENERIEREN (BILDSCHIRMFENSTER NR. 16)
- CALL PRIFEN (16,30,VSEG,0,IOS)
- CALL GETFEN (30,11,21,VSEG,IOS)
- CALL PAUS (6)
- CALL PRIFEN (16,30,VSEG,0,IOS)
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C HINWEISTEXT FÜR "SYS" SCHREIBEN
- CALL AWRI ('SYS startet einen Childprozess!',31,9,25,COL)
- CALL AWRI ('Als Beispiele wurden die DOS-Funktionen',39,11,21,COL)
- CALL AWRI ('CLS, DIR, ATTRIB und PATH gewählt!',34,13,24,COL)
- CALL AWRI ('Es können aber auch COM- und',28,15,27,COL)
- CALL AWRI ('EXE-Programme aktiviert werden!',31,17,25,COL)
- CALL PAUS (8)
-
- C HINTERGRUND IN FENSTER 29 ABLEGEN
- CALL PUTFEN (29,25,80,1,1,VSEG,IOS)
- IF (IOS .NE. 0) CALL ERRLEV (2)
-
- C CLS, DIR UND CHKDSK NACHEINANDER AUFRUFEN
- CALL SYS ('CLS')
- CALL SYS ('DIR')
- CALL PAUS (3)
- WRITE(*,'(///)')
- CALL SYS ('ATTRIB *.*')
- CALL PAUS (3)
- WRITE(*,'(///)')
- CALL SYS ('PATH')
- CALL PAUS (6)
-
- C BILDSCHIRM WIEDERHERSTELLEN
- CALL GETFEN (29,1,1,VSEG,IOS)
- CALL FREFEN (29,VSEG,IOS)
-
- C HINWEISTEXT FÜR "INTER" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('INTER ermöglicht die Ausführung eines Software-',
- -47,9,17,COL)
- CALL AWRI ('Interrupts!',11,10,35,COL)
- CALL AWRI ('Im Beispiel wird die Funktion 30H des Interrupts 21H',
- -52,12,15,COL)
- CALL AWRI ('aufgerufen. Dadurch wird die Nummer der',39,13,21,COL)
- CALL AWRI ('aktuellen DOS-Version im AX-Register zurückgegeben.',
- -51,14,15,COL)
-
- C INTERRUPT AUFRUFEN
- AX=#3000
- CALL INTER (#21,AX,0,0,0,0,0,0,0,0,0)
-
- C ERGEBNIS AUF DEN BILDSCHIRM SCHREIBEN
- CALL AWRI ('Die DOS-Version hat die Nummer !',36,16,23,COL)
- CALL IWRI (IAND(AX,2#11111111),1,16,54,71)
- CALL AWRI ('.',1,16,55,71)
- CALL IWRI (ISHFT(AX,-8),2,16,56,71)
- CALL PAUS (7)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- END
-
-
- SUBROUTINE VERSCH (VSEG,COL)
- C DIE SUBROUTINE DEMONSTRIERT DATEI- LAUFWERKS- UND VERZEICHNISROUTINEN
- ************************************************************************
-
- C VARIABLEN UND DATEN
- INTEGER COL,IOS,VSEG
- C COL: FARBATTRIBUT
- C IOS: ERRORFLAG
- C VSEG: ADRESSE DER BILDSCHIRMFENSTERVERWALTUNG IN DER MEMORY
- CHARACTER BILDS(2)*10,TAG(7)*10
- C BILDS: FELD MIT ART DES VERW. BILDSCHIRMS
- C TAG: FELD MIT WOCHENTAGEN
- DATA BILDS /'Monochrome','Farb '/
- DATA TAG /'Montag ','Dienstag ','Mittwoch ','Donnerstag',
- - 'Freitag ','Samstag ','Sonntag '/
- C HINWEISFENSTER GENERIEREN (BILDSCHIRMFENSTER NR. 17)
- CALL PRIFEN (17,30,VSEG,0,IOS)
- CALL GETFEN (30,4,4,VSEG,IOS)
- CALL PAUS (8)
- CALL PRIFEN (17,30,VSEG,0,IOS)
-
- C AKTIONSFENSTER ÖFFNEN (BILDSCHIRMFENSTER NR. 30)
- CALL GETFEN (30,6,11,VSEG,IOS)
-
- C CURSOR EINSCHALTEN
- CALL CTYP (1,1)
-
- C HINWEISTEXT FÜR "CPOS" SCHREIBEN
- CALL AWRI ('CPOS positioniert den Cursor!',29,9,26,COL)
-
- C CURSOR MEHRMALS POSITIONIEREN
- DO 1 I=1,5
- CALL CPOS (10+I,10+I*10)
- CALL PAUS (2)
- 1 CONTINUE
-
- C HINWEISTEXT FÜR "CTYP" SCHREIBEN
- CALL LOES (1,55,9,14,32,COL,0)
- CALL AWRI ('CTYP verändert das Aussehen des Cursors!',40,9,21,COL)
-
- C CURSOR MEHRMALS VERÄNDERN
- CALL CPOS (14,41)
- DO 2 I=1,5
- CALL CTYP (0,2*I-1)
- CALL PAUS (2)
- 2 CONTINUE
-
- C CURSOR WIEDER AUSSCHALTEN
- CALL CTYP (0,0)
-
- C HINWEISTEXT FÜR "CONTCA" SCHREIBEN
- CALL LOES (1,55,9,14,32,COL,0)
- CALL AWRI ('CONTCA verhindert den Programmabbruch mit CONTROL-C!',
- -52,9,15,COL)
- CALL AWRI ('Versuchen Sie es zehn Sekunden lang!',36,11,23,COL)
-
- C "CONTROL-C" ABSCHALTEN UND ERST NACH 10 SEKUNDEN WIEDER ZULASSEN
- CALL CONTCA ()
- CALL PAUS (10)
- CALL PIEPS (880,0.3)
- CALL CTBUF ()
- CALL CONTCE ()
-
- C HINWEISTEXT FÜR "CONTCE" SCHREIBEN
- CALL AWRI ('CONTCE hat die CONTROL-C-Routine wieder '//
- -'eingeschaltet!',54,15,14,COL)
- CALL PAUS (6)
-
- C HINWEISTEXT FÜR "DRUST" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('DRUST kontrolliert die Betriebsbereitschaft',
- -43,9,19,COL)
- CALL AWRI ('eines Druckers an LPT1!',23,11,29,COL)
-
- C DRUCKER KONTROLLIEREN UND MITTEILUNG SCHREIBEN
- I=1
- CALL DRUST (I)
- IF (I .EQ. 0) THEN
- CALL AWRI ('Drucker nicht betriebsbereit!',29,15,26,COL)
- ELSE
- CALL AWRI ('Drucker ist betriebsbereit!',27,15,27,COL)
- ENDIF
- CALL PAUS (8)
-
- C HINWEISTEXT FÜR "GETDAY" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('GETDAY ermittelt den aktuellen Wochentag!',
- -41,9,20,COL)
-
- C AKTUELLEN WOCHENTAG ERMITTELN
- CALL GETDAY (ITAG)
- CALL LAENGE (TAG(ITAG),I)
- CALL AWRI ('Heute ist '//TAG(ITAG)(1:I),10+I,15,(70-I)/2+1,COL)
- CALL PAUS (8)
-
- C HINWEISTEXT FÜR "SCPRF" SCHREIBEN
- CALL LOES (9,55,9,14,32,COL,0)
- CALL AWRI ('SCPRF ermittelt den verwendeten Monitortyp!',
- -43,9,19,COL)
-
- C BILDSCHIRMTYP ERMITTELN
- CALL SCPRF (I)
- IF (I .EQ. #B000) THEN
- J=1
- ELSE
- J=2
- ENDIF
- CALL LAENGE (BILDS(J),I)
- CALL AWRI ('Sie verwenden einen '//BILDS(J)(1:I)//'-Bildschirm!',
- -32+I,15,(48-I)/2+1,COL)
- CALL PAUS (8)
-
- C HINWEISTEXT ÜBER WEITERE ROUTINEN SCHREIBEN
- CALL LOES (10,55,9,14,32,COL,0)
- CALL AWRI ('Es sind weitere Subroutinen zu',30,9,26,COL)
- CALL AWRI ('diesem Thema in FORSUB.LIB vorhanden,',37,10,22,COL)
- CALL AWRI ('die am Bildschirm nicht',23,11,29,COL)
- CALL AWRI ('demonstriert werden können!',27,12,27,COL)
- CALL PAUS (6)
-
- C AKTIONSFENSTER SCHLIEßEN (BILDSCHIRMFENSTER NR. 30)
- CALL CLOFEN (30,VSEG,0,IOS)
- END
-