153 lines
5 KiB
OpenEdge ABL
153 lines
5 KiB
OpenEdge ABL
91300 #include "rundecs.h"
|
|
91310 (* COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER *)
|
|
91320 (**)
|
|
91330 (*+05() PROCEDURE FLSBUF(P: PCFILE; CH: CHAR); EXTERN; ()+05*)
|
|
91340 (*+02()
|
|
91350 PROCEDURE STOPEN (VAR PF: FYL; VAR RF: OBJECTP; LFN: LFNTYPE; PROCEDURE CH(COV:OBJECTP;L:LFNTYPE) ); EXTERN;
|
|
91360 ()+02*)
|
|
91370 (**)
|
|
91380 (**)
|
|
91390 (**)
|
|
91400 (*******STAND OUT PRIMITIVES*******)
|
|
91410 PROCEDURE SONEWLINE(COV:OBJECTP; VAR FYLE :FYL);
|
|
91420 (*+05()
|
|
91430 PROCEDURE WRC(P: PCFILE; CH: CHAR); EXTERN;
|
|
91440 ()+05*)
|
|
91450 BEGIN WITH COV^ DO
|
|
91460 BEGIN LOFCPOS:=LOFCPOS+1;
|
|
91470 COFCPOS:=1;
|
|
91480 (*+05()
|
|
91490 WITH BOOK^ DO
|
|
91500 IF (*ISTTY*) (XFILE^.FLAG DIV 512) MOD 2 <> 0 THEN
|
|
91510 FLSBUF(XFILE, CHR(10))
|
|
91520 ELSE WRC(XFILE, CHR(10));
|
|
91530 ()+05*)
|
|
91540 (*-05() WRITELN(FYLE); ()-05*)
|
|
91550 IF LOFCPOS>LINEBOUND THEN STATUS:=STATUS+[PAGEOVERFLOW,LINEOVERFLOW]
|
|
91560 ELSE BEGIN STATUS:=STATUS-[LINEOVERFLOW];
|
|
91570 IF CARRIAGE IN STATUS THEN WRITE(FYLE, ' ')
|
|
91580 END
|
|
91590 END
|
|
91600 END;
|
|
91610 (**)
|
|
91620 (**)
|
|
91630 PROCEDURE SONEWPAGE(COV:OBJECTP; VAR FYLE :FYL);
|
|
91640 VAR I: INTEGER;
|
|
91650 BEGIN WITH COV^ DO
|
|
91660 BEGIN
|
|
91670 IF COFCPOS<>1 THEN SONEWLINE(COV, FYLE);
|
|
91680 (*+05()
|
|
91690 IF (*ISTTY*) (BOOK^.XFILE^.FLAG DIV 512) MOD 2 <> 0 THEN
|
|
91700 FOR I := LOFCPOS TO LINEBOUND DO SONEWLINE(COV, FYLE)
|
|
91710 ELSE
|
|
91720 ()+05*)
|
|
91730 (*-50() PAGE(FYLE); ()-50*)
|
|
91740 (*+50() PUTSEG(FYLE); ()+50*)
|
|
91750 COFCPOS:=1; LOFCPOS:=1; POFCPOS:=POFCPOS+1;
|
|
91760 STATUS:=STATUS-[PAGEOVERFLOW,LINEOVERFLOW];
|
|
91770 IF POFCPOS>PAGEBOUND THEN
|
|
91780 STATUS:=STATUS+[PFE,PAGEOVERFLOW,LINEOVERFLOW]
|
|
91790 ELSE IF CARRIAGE IN STATUS THEN WRITE(FYLE, '1')
|
|
91800 END
|
|
91810 END;
|
|
91820 (**)
|
|
91830 (**)
|
|
91840 PROCEDURE SORESET(COV: OBJECTP; VAR FYLE: FYL);
|
|
91850 (*OPENED,MOODOK*)
|
|
91860 BEGIN WITH COV^ DO
|
|
91870 BEGIN
|
|
91880 IF RESETPOSS IN POSSIBLES THEN
|
|
91890 BEGIN (*+01()(*-52()BOOK^.STATUS := 15B; (*TO FIX A BUG IN PASCAL MK 2*) ()-52*)()+01*)
|
|
91900 REWRITE(FYLE)
|
|
91910 END;
|
|
91920 IF CARRIAGE IN STATUS THEN
|
|
91930 WRITE(FYLE, '1');
|
|
91940 STATUS := STATUS-[NOTRESET]
|
|
91950 END
|
|
91960 END;
|
|
91970 (**)
|
|
91980 (**)
|
|
91990 (*+01() PROCEDURE SOWRSTR(COV,STRNG: OBJECTP; LB,UB: INTEGER; VAR FYLE: FYL); ()+01*)
|
|
92000 (*+02() PROCEDURE SOWRSTR(COV,STRNG: OBJECTP; LB,UB: INTEGER; EFET: FETROOMP); ()+02*)
|
|
92010 (*+05() PROCEDURE SOWRSTR(COV,STRNG: OBJECTP; LB,UB: INTEGER; EFET: FETROOMP); ()+05*)
|
|
92020 (*POSN OF NEXT WIDTH CHARS ENSURED*)
|
|
92030 VAR I, WIDTH, J, WORD: INTEGER;
|
|
92040 PTR: UNDRESSP;
|
|
92050 (*+01()
|
|
92060 (*$X0*)
|
|
92070 PROCEDURE WRS(VAR FYLE: FYL; ADDR: UNDRESSP; FLDLGTH, STRLGTH: INTEGER); EXTERN;
|
|
92080 PROCEDURE WRSN(VAR FYLE: FYL; SHORTSTR: INTEGER; FLDLGTH, STRLGTH: INTEGER); EXTERN;
|
|
92090 (*$X4*)
|
|
92100 ()+01*)
|
|
92110 (*+02()
|
|
92120 CPTR: IPOINT;
|
|
92130 PROCEDURE WRC(CH :CHAR; FIL :FETROOMP); EXTERN;
|
|
92140 PROCEDURE WRS(LEN :INTEGER; CP :IPOINT; FIL :FETROOMP); EXTERN;
|
|
92150 ()+02*)
|
|
92160 (*+05()
|
|
92170 CPTR: CHARPOINT ;
|
|
92180 PROCEDURE WRS(P: PCFILE; CP: CHARPOINT; LEN: INTEGER ); EXTERN;
|
|
92190 PROCEDURE WRC(P: PCFILE; CH: CHAR); EXTERN;
|
|
92200 ()+05*)
|
|
92210 BEGIN
|
|
92220 (*+01()
|
|
92230 WIDTH := 1;
|
|
92240 IF LB<0 THEN WRITE(FYLE,CHR(UB))
|
|
92250 ELSE BEGIN
|
|
92260 LB := LB-1;
|
|
92270 PTR := INCPTR(STRNG, STRINGCONST + LB DIV CHARPERWORD);
|
|
92280 WIDTH := UB-LB;
|
|
92290 IF LB MOD CHARPERWORD <> 0 THEN
|
|
92300 BEGIN
|
|
92310 IF WIDTH <= CHARPERWORD - LB MOD CHARPERWORD THEN I := WIDTH ELSE I := CHARPERWORD - LB MOD CHARPERWORD;
|
|
92320 WORD := PTR^.FIRSTWORD;
|
|
92330 FOR J := 1 TO LB MOD CHARPERWORD DO WORD := WORD * CHARSPACE ;
|
|
92340 WRSN(FYLE, WORD, I, I);
|
|
92350 PTR := INCPTR(PTR, SZWORD);
|
|
92360 END
|
|
92370 ELSE I := 0;
|
|
92380 WRS(FYLE, PTR, WIDTH-I, WIDTH-I)
|
|
92390 END;
|
|
92400 ()+01*)
|
|
92410 (*+02()
|
|
92420 IF LB<0 THEN (*CHAR*)
|
|
92430 BEGIN
|
|
92440 WIDTH := 1;
|
|
92450 WRC(CHR(UB),EFET);
|
|
92460 END
|
|
92470 ELSE (*STRING*)
|
|
92480 BEGIN
|
|
92490 WIDTH:=UB-LB+1;
|
|
92500 CPTR:= ORD(STRNG) + STRINGCONST + (LB *(SZWORD DIV CHARPERWORD)-1);
|
|
92510 WRS(WIDTH,CPTR,EFET);
|
|
92520 END;
|
|
92530 ()+02*)
|
|
92540 (*+05()
|
|
92550 IF LB<0 THEN
|
|
92560 BEGIN
|
|
92570 WIDTH := 1;
|
|
92580 WRC(EFET^.XFILE, CHR(UB))
|
|
92590 END
|
|
92600 ELSE BEGIN
|
|
92610 WIDTH := UB - LB + 1;
|
|
92620 CPTR := ASPTR(( ORD( STRNG ) + STRINGCONST )*2 + LB - 1) ;
|
|
92630 WRS( EFET^.XFILE , CPTR , WIDTH ) ;
|
|
92640 END;
|
|
92650 ()+05*)
|
|
92660 WITH COV^ DO
|
|
92670 BEGIN COFCPOS:=COFCPOS+WIDTH;
|
|
92680 IF COFCPOS>CHARBOUND THEN
|
|
92690 STATUS:=STATUS+[LINEOVERFLOW];
|
|
92700 END;
|
|
92710 END;
|
|
92720 (**)
|
|
92730 (**)
|
|
92740 (*-02()
|
|
92750 BEGIN (*OF A68*)
|
|
92760 END; (*OF A68*)
|
|
92770 ()-02*)
|
|
92780 (*+01()
|
|
92790 BEGIN (*OF MAIN PROGRAM*)
|
|
92800 END (*OF EVERYTHING*).
|
|
92810 ()+01*)
|