ack/lang/a68s/liba68s/rowm.p

45 lines
1.4 KiB
OpenEdge ABL
Raw Normal View History

1988-10-04 13:41:01 +00:00
44900 #include "rundecs.h"
44910 (* COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER *)
44920 (**)
44930 (**)
44940 FUNCTION GETMULT(NEWMULT: OBJECTP): OBJECTP; EXTERN;
44950 PROCEDURE GARBAGE (ANOBJECT: OBJECTP); EXTERN ;
44960 FUNCTION COPYDESC(ORIGINAL: OBJECTP; NEWSORT: STRUCTYPE): OBJECTP; EXTERN ;
44970 PROCEDURE COPYSLICE(ASLICE: OBJECTP); EXTERN ;
44980 (**)
44990 (**)
45000 FUNCTION ROWM(AMULT: OBJECTP; ROWCOUNT: INTEGER): OBJECTP;
45010 (*PROWMULT*)
45020 VAR NEWMULT, OLDESC, NEWDESC: OBJECTP;
45030 I: INTEGER; OLDROWS: 0..7;
45040 BEGIN
45050 WITH AMULT^ DO
45060 BEGIN
45070 IF BPTR<>NIL THEN (*A SLICE*)
45080 COPYSLICE(AMULT);
45090 OLDROWS := ROWS;
45100 ROWS := ROWCOUNT-1;
45110 NEWMULT := COPYDESC(AMULT, MULT);
45120 NEWMULT^.PVALUE := AMULT;
45130 NEWMULT := GETMULT(NEWMULT);
45140 ROWS := OLDROWS;
45150 WITH NEWMULT^ DO
45160 BEGIN
45170 ROWS := ROWCOUNT-1;
45180 FOR I := OLDROWS+1 TO ROWS DO WITH DESCVEC[I] DO
45190 BEGIN LI := 1; UI := 1; DI := PVALUE^.D0 END;
45200 LBADJ := LBADJ+DESCVEC[ROWS].DI*(ROWS-OLDROWS);
45210 FPINC(PVALUE^);
45220 END;
45230 IF FTST THEN GARBAGE(AMULT)
45240 END;
45250 ROWM := NEWMULT;
45260 END;
45270 (**)
45280 (**)
45290 (*-02() BEGIN END ; ()-02*)
45300 (*+01()
45310 BEGIN (*OF MAIN PROGRAM*)
45320 END (*OF EVERYTHING*).
45330 ()+01*)