home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
fortran
/
library
/
forsubl1
/
demo.for
< prev
next >
Wrap
Text File
|
1992-07-06
|
70KB
|
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