76 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
36400 #include "rundecs.h"
 | 
						|
36410     (*  COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER  *)
 | 
						|
36420 (**)
 | 
						|
36430 (**)
 | 
						|
36440 FUNCTION CRSTRUCT(TEMPLATE: DPOINT): OBJECTP; EXTERN;
 | 
						|
36450 (**)
 | 
						|
36460 (**)
 | 
						|
36470 FUNCTION HEAPSTR(TEMPLATE: DPOINT): OBJECTP;
 | 
						|
36480 (*PLEAPGEN+1*)
 | 
						|
36490   VAR NEWREF: OBJECTP;
 | 
						|
36500     BEGIN
 | 
						|
36510     IF ORD(TEMPLATE)=SZINT THEN
 | 
						|
36520       BEGIN
 | 
						|
36530       ENEW(NEWREF, REF1SIZE);
 | 
						|
36540       WITH NEWREF^ DO BEGIN
 | 
						|
36550 (*-02() FIRSTWORD := SORTSHIFT * ORD(REF1); ()-02*)
 | 
						|
36560 (*+02() PCOUNT:=0; SORT:=REF1; ()+02*)
 | 
						|
36570 (*+01() SECONDWORD := 0; ()+01*)
 | 
						|
36580         ANCESTOR := NEWREF;
 | 
						|
36590         PVALUE := HIGHPCOUNT;
 | 
						|
36600         OFFSET := REF1SIZE-SZINT;
 | 
						|
36610         VALUE := INTUNDEF
 | 
						|
36620         END
 | 
						|
36630       END
 | 
						|
36640 (*-01()
 | 
						|
36650     ELSE IF ORD(TEMPLATE)=SZLONG THEN
 | 
						|
36660       BEGIN
 | 
						|
36670       ENEW(NEWREF, REF2SIZE);
 | 
						|
36680       WITH NEWREF^ DO BEGIN
 | 
						|
36690 (*-02() FIRSTWORD := SORTSHIFT * ORD(REF2); ()-02*)
 | 
						|
36700 (*+02() PCOUNT:=0; SORT:=REF2; ()+02*)
 | 
						|
36710         ANCESTOR := NEWREF;
 | 
						|
36720         PVALUE := HIGHPCOUNT;
 | 
						|
36730         OFFSET := REF2SIZE-SZINT;
 | 
						|
36740         LONGVALUE := LONGUNDEF
 | 
						|
36750         END
 | 
						|
36760       END
 | 
						|
36770 ()-01*)
 | 
						|
36780     ELSE
 | 
						|
36790       BEGIN
 | 
						|
36800      ENEW(NEWREF, REFNSIZE);
 | 
						|
36810       WITH NEWREF^ DO
 | 
						|
36820         BEGIN
 | 
						|
36830 (*-02() FIRSTWORD := SORTSHIFT * ORD(REFN); ()-02*)
 | 
						|
36840 (*+02() PCOUNT:=0; SORT:=REFN; ()+02*)
 | 
						|
36850  (*+01() SECONDWORD := 0; ()+01*)
 | 
						|
36860         IF ORD(TEMPLATE)=0 THEN PVALUE := UNDEFIN
 | 
						|
36870         ELSE
 | 
						|
36880           BEGIN
 | 
						|
36890           PVALUE := CRSTRUCT(TEMPLATE);
 | 
						|
36900           FPINC(PVALUE^);
 | 
						|
36910           ANCESTOR := NEWREF;
 | 
						|
36920           OFFSET := STRUCTCONST;
 | 
						|
36930           END;
 | 
						|
36940         END
 | 
						|
36950       END;
 | 
						|
36960     NEWREF^.OSCOPE := 3;
 | 
						|
36970     HEAPSTR := NEWREF;
 | 
						|
36980     END;
 | 
						|
36990 (**)
 | 
						|
37000 (**)
 | 
						|
37010 FUNCTION GENSTR(TEMPLATE: DPOINT; LOCRG: DEPTHRANGE): OBJECTP;
 | 
						|
37020 (*PLEAPGEN*)
 | 
						|
37030   VAR NEWREF: OBJECTP;
 | 
						|
37040     BEGIN
 | 
						|
37050     NEWREF := HEAPSTR(TEMPLATE);
 | 
						|
37060     NEWREF^.OSCOPE := SCOPE+LOCRG;
 | 
						|
37070     GENSTR := NEWREF;
 | 
						|
37080     END;
 | 
						|
37090 (**)
 | 
						|
37100 (**)
 | 
						|
37110 (*-02() BEGIN END ; ()-02*)
 | 
						|
37120 (*+01()
 | 
						|
37130 BEGIN (*OF MAIN PROGRAM*)
 | 
						|
37140 END (*OF EVERYTHING*).
 | 
						|
37150 ()+01*)
 |