SC=2000; MODULE KURVE; /* Diese Datei enthaelt ein Beispiel fuer die Anwendung von GKS. Es zeichnet ein beschriftetes Achsenkreuz in einem Rahmen. Ausserdem enthaelt der Modul das Ergebnis einer Fleissarbeit: saemtliche Spezifikationen fuer GKS! Geschrieben und fuer die allgemeine Benutzung freigegeben von Uwe Begier c/o Ing.-Buero Thamsen Postfach 1884 2400 LUEBECK 14 (Dieses Prograemmchen ist bei mir im Rahmen eines groesseren Projekts angefallen und ist nur ein Nebenprodukt; aber warum soll denn jeder wieder das Rad aufs Neue erfinden?) */ /*Beschreibungen der GKS-Prozeduren im GKS-Handbuch! Zum Laden sind GKS und GRADST erforderlich. */ SYSTEM; CVI: VI.C <- ; CVO: VO.C ->; PROBLEM; SPC CVI DATION IN ALPHIC CONTROL(ALL); SPC CVO DATION OUT ALPHIC CONTROL(ALL); /*Spezifikationen der GKS-Prozeduren Siehe Handbuch Kap. 2.2 */ /* GKS öffnen und schließen */ SPC GOPKS ENTRY (FIXED) GLOBAL; SPC GCLKS ENTRY GLOBAL; SPC GECLKS ENTRY GLOBAL; /*Arbeitsplatzbefehle */ SPC GOPWK ENTRY (FIXED,FIXED,FIXED) GLOBAL; SPC GCLWK ENTRY (FIXED) GLOBAL; SPC GACWK ENTRY (FIXED) GLOBAL; SPC GDAWK ENTRY (FIXED) GLOBAL; SPC GCLRWK ENTRY (FIXED,FIXED) GLOBAL; SPC GUWK ENTRY (FIXED,FIXED) GLOBAL; /*Transformationen */ SPC GSWN ENTRY (FIXED,FLOAT,FLOAT,FLOAT,FLOAT) GLOBAL; SPC GSVP ENTRY (FIXED,FLOAT,FLOAT,FLOAT,FLOAT) GLOBAL; SPC GSWKWN ENTRY (FIXED,FLOAT,FLOAT,FLOAT,FLOAT) GLOBAL; SPC GSWKVP ENTRY (FIXED,FLOAT,FLOAT,FLOAT,FLOAT) GLOBAL; SPC GSELNT ENTRY (FIXED) GLOBAL; /*Klippen */ SPC GSCLIP ENTRY (FIXED) GLOBAL; /*Darstellungselemente und Attribute */ SPC GPL ENTRY (FIXED,() FLOAT,() FLOAT) GLOBAL; SPC GSLN ENTRY (FIXED) GLOBAL; SPC GSLWSC ENTRY (FLOAT) GLOBAL; SPC GSPLCI ENTRY (FIXED) GLOBAL; SPC GSPLI ENTRY (FIXED) GLOBAL; SPC GPM ENTRY (FIXED,() FLOAT,() FLOAT) GLOBAL; SPC GSMK ENTRY (FIXED) GLOBAL; SPC GSMKSC ENTRY (FLOAT) GLOBAL; SPC GSPMCI ENTRY (FIXED) GLOBAL; SPC GSPMI ENTRY (FIXED) GLOBAL; SPC GTX ENTRY (FLOAT,FLOAT,CHAR(80)) GLOBAL; SPC GSCHH ENTRY (FLOAT) GLOBAL; SPC GSCHUP ENTRY (FLOAT,FLOAT) GLOBAL; SPC GSTXCI ENTRY (FIXED) GLOBAL; SPC GSTXI ENTRY (FIXED) GLOBAL; SPC GSTXP ENTRY (FIXED) GLOBAL; SPC GSTXAL ENTRY (FIXED,FIXED) GLOBAL; SPC GSTXFP ENTRY (FIXED,FIXED) GLOBAL; SPC GSCHXP ENTRY (FLOAT) GLOBAL; SPC GSCHSP ENTRY (FLOAT) GLOBAL; SPC GFA ENTRY (FIXED,() FLOAT,() FLOAT) GLOBAL; SPC GSFAIS ENTRY (FIXED) GLOBAL; SPC GSFASI ENTRY (FIXED) GLOBAL; SPC GSFACI ENTRY (FIXED) GLOBAL; SPC GSFAI ENTRY (FIXED) GLOBAL; SPC GSPA ENTRY (FLOAT,FLOAT) GLOBAL; SPC GSPARF ENTRY (FLOAT,FLOAT) GLOBAL; SPC GCA ENTRY (FLOAT,FLOAT,FLOAT,FLOAT,FIXED,FIXED,FIXED, FIXED,FIXED,FIXED,(,)FIXED IDENT) GLOBAL; SPC GGDP ENTRY (FIXED,()FLOAT IDENT,()FLOAT IDENT,FIXED, FIXED,CHAR(80)) GLOBAL; /*Farbänderungen */ SPC GSCR ENTRY (FIXED,FIXED,FLOAT,FLOAT,FLOAT) GLOBAL; /*Aspektanzeiger */ SPC GSASF ENTRY (()BIT) GLOBAL; /*Fehlerfunktionen */ SPC GERHND ENTRY (FIXED,FIXED,FIXED) GLOBAL; SPC GERLOG ENTRY (FIXED,FIXED,FIXED) GLOBAL; /*Abfragefunktionen */ SPC GQOPS ENTRY (FIXED IDENT) GLOBAL; SPC GQLVKS ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQEWK ENTRY (FIXED,FIXED IDENT,FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQMNTN ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQOPWK ENTRY (FIXED IDENT,FIXED IDENT,FIXED IDENT, FIXED IDENT) GLOBAL; SPC GQPLI ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQPMI ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQTXI ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQCHH ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQCHUP ENTRY (FIXED IDENT,FLOAT IDENT,FLOAT IDENT) GLOBAL; SPC GQTXP ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQTXAL ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQFAI ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQPA ENTRY (FIXED IDENT,FLOAT IDENT,FLOAT IDENT) GLOBAL; SPC GQPARF ENTRY (FIXED IDENT,FLOAT IDENT,FLOAT IDENT) GLOBAL; SPC GQLN ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQLWSC ENTRY (FIXED IDENT,FLOAT IDENT) GLOBAL; SPC GQPLCI ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQMK ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQMKSC ENTRY (FIXED IDENT,FLOAT IDENT) GLOBAL; SPC GQPMCI ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQIXFP ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQCHXP ENTRY (FIXED IDENT,FLOAT IDENT) GLOBAL; SPC GQCHSP ENTRY (FIXED IDENT,FLOAT IDENT) GLOBAL; SPC GQIXCI ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQFAIS ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQFASI ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQFACI ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQASF ENTRY (FIXED IDENT,() FIXED IDENT) GLOBAL; SPC GQCNTN ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQENTN ENTRY (FIXED,FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQNT ENTRY (FIXED,FIXED IDENT, FLOAT IDENT,() FLOAT IDENT) GLOBAL; SPC GQCLIP ENTRY (FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQWKC ENTRY (FIXED,FIXED IDENT,FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQWKS ENTRY (FIXED,FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQWKDU ENTRY (FIXED,FIXED IDENT,FIXED IDENT,FIXED IDENT, FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQTXX ENTRY (FIXED,FLOAT,FLOAT,CHAR(80),FIXED IDENT, FLOAT IDENT,FLOAT IDENT,() FLOAT IDENT, () FLOAT IDENT) GLOBAL; SPC GQECI ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT, FIXED IDENT) GLOBAL; SPC GQCR ENTRY (FIXED,FIXED,FIXED,FIXED IDENT, FLOAT IDENT,FLOAT IDENT,FLOAT IDENT) GLOBAL; SPC GQWKT ENTRY (FIXED,FIXED IDENT,FIXED IDENT, () FLOAT IDENT,() FLOAT IDENT, () FLOAT IDENT,() FLOAT IDENT) GLOBAL; SPC GQWKCA ENTRY (FIXED,FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQWKCL ENTRY (FIXED,FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQMDS ENTRY (FIXED,FIXED IDENT,FIXED IDENT,FLOAT IDENT, FLOAT IDENT,FLOAT IDENT,FLOAT IDENT) GLOBAL; SPC GQPLF ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT, FIXED IDENT,FIXED IDENT, FLOAT IDENT,FLOAT IDENT, FLOAT IDENT,FIXED IDENT) GLOBAL; SPC GQPPLR ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT, FLOAT IDENT,FIXED IDENT) GLOBAL; SPC GQPMF ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT, FIXED IDENT,FIXED IDENT, FLOAT IDENT,FLOAT IDENT, FLOAT IDENT,FIXED IDENT) GLOBAL; SPC GQPPMR ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT, FLOAT IDENT,FIXED IDENT) GLOBAL; SPC GQTXF ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT, FIXED IDENT,FIXED IDENT,FIXED IDENT, FLOAT IDENT,FLOAT IDENT,FIXED IDENT, FLOAT IDENT,FLOAT IDENT,FIXED IDENT) GLOBAL; SPC GQPTXR ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT,FIXED IDENT, FLOAT IDENT,FLOAT IDENT,FIXED IDENT) GLOBAL; SPC GQFAF ENTRY (FIXED,FIXED,FIXED,FIXED IDENT, FIXED IDENT,FIXED IDENT,FIXED IDENT, FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQPFAR ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT, FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQPAF ENTRY (FIXED,FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQPPAR ENTRY (FIXED,FIXED,FIXED,FIXED, FIXED IDENT,FIXED IDENT,FIXED IDENT, (,) FIXED IDENT) GLOBAL; SPC GQCF ENTRY (FIXED,FIXED IDENT,FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQPCR ENTRY (FIXED,FIXED,FIXED IDENT, FLOAT IDENT,FLOAT IDENT,FLOAT IDENT) GLOBAL; SPC GQEGDP ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT, () FIXED IDENT) GLOBAL; SPC GQGDP ENTRY (FIXED,FIXED,FIXED IDENT,FIXED IDENT, () FIXED IDENT) GLOBAL; SPC GQPXAD ENTRY (FIXED,FLOAT,FLOAT,FLOAT,FLOAT, FIXED IDENT,FIXED IDENT,FIXED IDENT) GLOBAL; SPC GQPXA ENTRY (FIXED,FLOAT,FLOAT, FIXED,FIXED,FIXED,FIXED,FIXED,FIXED, FIXED IDENT,() FIXED IDENT) GLOBAL; SPC GQPX ENTRY (FIXED,FLOAT,FLOAT, FIXED IDENT,FIXED IDENT) GLOBAL; /*Ende der Spezifikationen für GKS */ BILD: TASK; DCL (L,R,U,O) FLOAT INIT(-1.5,20.0,-1.5,10.0); DCL (XR,YR)(5) FLOAT; DCL (XA,YA)(3) FLOAT; DCL (XM,YM)(2) FLOAT; DCL STR CHAR(80); DCL ASF(13) FIXED; CALL GOPKS(1); CALL GOPWK(1,1,1); CALL GACWK(1); CALL GCLRWK(1,0); FOR I TO 13 REPEAT ASF(I):=1; END; CALL GSASF(ASF); XR(1):=L; YR(1):=U; /* Rahmen-Koordinaten*/ XR(2):=R; YR(2):=U; XR(3):=R; YR(3):=O; XR(4):=L; YR(4):=O; XR(5):=L; YR(5):=U; XA(1):=0.0; YA(1):=O-1.5; /*Achsen-Koordinaten*/ XA(2):=0.0; YA(2):=0.0; XA(3):=R-1.5; YA(3):=0.0; /* Grundeinstellungen */ CALL GSWN(1,L,R,U,O); CALL GSVP(1,0.0,0.9,0.0,0.45); CALL GSELNT(1); CALL GSWKWN(1,0.0,0.9,0.0,0.45); CALL GSWKVP(1,0.005,0.205,0.005,0.125); CALL GSCLIP(1); CALL GSCHH(0.35); CALL GSTXFP(1,1); CALL GSCHXP(0.5); CALL GSCHSP(0.5); CALL GSTXP(0); CALL GSTXAL(2,3); CALL GSTXCI(1); CALL GSLN(1); CALL GSPLCI(1); CALL GPL(5,XR,YR); /*Der Rahmen*/ CALL GPL(3,XA,YA); /*Die Achsen*/ YM(1):=0.0; YM(2):=-0.3; /*X-Achse markieren*/ XM(1):=0.0; XM(2):= 0.0; FOR I TO 18 REPEAT XM(1):=XM(1)+1.0; XM(2):=XM(2)+1.0; CALL GPL(2,XM,YM); PUT XM(1) TO CVO BY F(2,0),SKIP; GET STR FROM CVI BY SKIP,A(2); CALL GTX(XM(1),-0.8,STR); END; XM(2):=0.0; XM(1):=-0.3; /*Y-Achse markieren*/ YM(1):=0.0; YM(2):= 0.0; FOR I TO 8 REPEAT YM(1):=YM(1)+1.0; YM(2):=YM(2)+1.0; CALL GPL(2,XM,YM); PUT YM(1) TO CVO BY F(2,0),SKIP; /* Achtung: unbedingt die */ GET STR FROM CVI BY SKIP,A(2); /* Formatangaben einhalten!*/ CALL GTX(-1.0,YM(1),STR); /*Sonst kann man Ueberraschungen erleben*/ END; CALL GSCHH(0.6); /*Ueberschrift*/ CALL GSTXAL(1,4); CALL GTX(3.0,9.0,'Achsenkreuz im Rahmen'); CALL GDAWK(1); CALL GCLWK(1); CALL GCLKS; END; MODEND;