75 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
29100 #include "rundecs.h"
 | 
						|
29110     (*  COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER  *)
 | 
						|
29120 (**)
 | 
						|
29130 PROCEDURE GARBAGE (ANOBJECT: OBJECTP); EXTERN;
 | 
						|
29140 PROCEDURE ERRORR(N :INTEGER); EXTERN;
 | 
						|
29150 (**)
 | 
						|
29160 (**)
 | 
						|
29170 FUNCTION DREFS(REFER: OBJECTP): A68INT;
 | 
						|
29180 (*PDEREF*)
 | 
						|
29190   VAR PTR: UNDRESSP;
 | 
						|
29200     BEGIN WITH REFER^ DO
 | 
						|
29210       CASE SORT OF
 | 
						|
29220         REF1: DREFS := VALUE;
 | 
						|
29230         CREF: DREFS := IPTR^.FIRSTINT;
 | 
						|
29240         REFSL1: BEGIN PTR := INCPTR(ANCESTOR^.PVALUE, OFFSET); DREFS := PTR^.FIRSTINT END;
 | 
						|
29250         UNDEF: ERRORR(RDEREF);
 | 
						|
29260         NILL: ERRORR(RDEREFNIL);
 | 
						|
29270       END;
 | 
						|
29280     IF FPTST(REFER^) THEN GARBAGE(REFER)
 | 
						|
29290     END;
 | 
						|
29300 (**)
 | 
						|
29310 (**)
 | 
						|
29320 (*-01()
 | 
						|
29330 FUNCTION DREFS2(REFER: OBJECTP): A68LONG;
 | 
						|
29340 (*PDEREF+1*)
 | 
						|
29350   VAR PTR: UNDRESSP;
 | 
						|
29360     BEGIN WITH REFER^ DO
 | 
						|
29370       CASE SORT OF
 | 
						|
29380         REF2: DREFS2 := LONGVALUE;
 | 
						|
29390         CREF: DREFS2 := IPTR^.FIRSTLONG;
 | 
						|
29400         REFSL1: BEGIN PTR := INCPTR(ANCESTOR^.PVALUE, OFFSET); DREFS2 := PTR^.FIRSTLONG END;
 | 
						|
29410         UNDEF: ERRORR(RDEREF);
 | 
						|
29420         NILL: ERRORR(RDEREFNIL);
 | 
						|
29430       END;
 | 
						|
29440     IF FPTST(REFER^) THEN GARBAGE(REFER)
 | 
						|
29450     END;
 | 
						|
29460 (**)
 | 
						|
29470 (**)
 | 
						|
29480 ()-01*)
 | 
						|
29490 (**)
 | 
						|
29500 (**)
 | 
						|
29510 FUNCTION DREFPTR(REFER: OBJECTP): OBJECTP;
 | 
						|
29520 (*PDEREF+2*)
 | 
						|
29530   VAR RESULT: OBJECTP;
 | 
						|
29540       PTR: UNDRESSP;
 | 
						|
29550     BEGIN
 | 
						|
29560     WITH REFER^ DO
 | 
						|
29570       BEGIN
 | 
						|
29580       CASE SORT OF
 | 
						|
29590         RECN, REFN: RESULT := PVALUE;
 | 
						|
29600         CREF: RESULT := IPTR^.FIRSTPTR;
 | 
						|
29610         REFSL1: BEGIN PTR := INCPTR(ANCESTOR^.PVALUE, OFFSET); RESULT := PTR^.FIRSTPTR END;
 | 
						|
29620         UNDEF: ERRORR(RDEREF);
 | 
						|
29630         NILL: ERRORR(RDEREFNIL);
 | 
						|
29640       END;
 | 
						|
29650       IF SORT<>CREF THEN WITH RESULT^ DO
 | 
						|
29660         BEGIN
 | 
						|
29670         FINC;
 | 
						|
29680         IF FPTST(REFER^) THEN GARBAGE(REFER);
 | 
						|
29690         FDEC
 | 
						|
29700         END
 | 
						|
29710       ELSE IF FPTST(REFER^) THEN GARBAGE(REFER);
 | 
						|
29720       DREFPTR := RESULT;
 | 
						|
29730       END
 | 
						|
29740     END;
 | 
						|
29750 (**)
 | 
						|
29760 (**)
 | 
						|
29770 (*-02()
 | 
						|
29780   BEGIN
 | 
						|
29790   END;
 | 
						|
29800 ()-02*)
 | 
						|
29810 (*+01()
 | 
						|
29820 BEGIN (*OF MAIN PROGRAM*)
 | 
						|
29830 END  (*OF EVERYTHING*).
 | 
						|
29840 ()+01*)
 |