40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
31300 #include "rundecs.h"
 | 
						|
31310     (*  COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER  *)
 | 
						|
31320 (**)
 | 
						|
31330 PROCEDURE GARBAGE (ANOBJECT: OBJECTP); EXTERN ;
 | 
						|
31340 (**)
 | 
						|
31350 (**)
 | 
						|
31360 FUNCTION GETMULT(NEWMULT: OBJECTP): OBJECTP;
 | 
						|
31370   VAR OLDMULT:OBJECTP;
 | 
						|
31380     BEGIN
 | 
						|
31390     WITH NEWMULT^ DO
 | 
						|
31400       BEGIN
 | 
						|
31410       OLDMULT := PVALUE;
 | 
						|
31420       SORT := MULT;
 | 
						|
31430       OSCOPE := 0;
 | 
						|
31440       PVALUE := OLDMULT^.PVALUE;
 | 
						|
31450       IF ( OLDMULT^.SORT <> MULT ) OR ( OLDMULT^.BPTR = NIL ) THEN
 | 
						|
31460         BEGIN
 | 
						|
31470         WITH PVALUE^ DO
 | 
						|
31480           IF CCOUNT<>0 THEN CCOUNT := CCOUNT+1;
 | 
						|
31490             (*CCOUNT=0 TREATED AS INFINITY*)
 | 
						|
31500         OLDMULT := PVALUE;
 | 
						|
31510         END;
 | 
						|
31520       BPTR := OLDMULT;
 | 
						|
31530       FPTR := OLDMULT^.IHEAD;
 | 
						|
31540       IHEAD := NIL;
 | 
						|
31550       IF FPTR <> NIL THEN FPTR^.BPTR := NEWMULT
 | 
						|
31560       ELSE FPINC(OLDMULT^);
 | 
						|
31570       OLDMULT^.IHEAD := NEWMULT;
 | 
						|
31580       FPINC(PVALUE^);
 | 
						|
31590       END;
 | 
						|
31600     IF FPTST(OLDMULT^) THEN GARBAGE(OLDMULT);
 | 
						|
31610     GETMULT := NEWMULT;
 | 
						|
31620     END;
 | 
						|
31630 (**)
 | 
						|
31640 (**)
 | 
						|
31650 (*-02() BEGIN END ; ()-02*)
 | 
						|
31660 (*+01()
 | 
						|
31670 BEGIN (*OF MAIN PROGRAM*)
 | 
						|
31680 END (*OF EVERYTHING*).
 | 
						|
31690 ()+01*)
 |