82 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			OpenEdge ABL
		
	
	
	
	
	
54200 #include "rundecs.h"
 | 
						|
54210     (*  COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER  *)
 | 
						|
54220 (**)
 | 
						|
54230 PROCEDURE GARBAGE (ANOBJECT: OBJECTP); EXTERN;
 | 
						|
54240 PROCEDURE ERRORR(N :INTEGER); EXTERN;
 | 
						|
54250 FUNCTION SAFEACCESS(LOCATION: OBJECTP): UNDRESSP; EXTERN;
 | 
						|
54260 (**)
 | 
						|
54270 (**)
 | 
						|
54280 (*-01() (*-05()
 | 
						|
54290 FUNCTION TASSTS(DESTINATION: OBJECTP; SOURCE: A68INT): OBJECTP;
 | 
						|
54300 (*PASSIGNTT*)
 | 
						|
54310   VAR POINT: UNDRESSP;
 | 
						|
54320     BEGIN
 | 
						|
54330     WITH DESTINATION^.ANCESTOR^ DO
 | 
						|
54340         IF FPTWO(PVALUE^) THEN 
 | 
						|
54350         POINT := SAFEACCESS(DESTINATION)
 | 
						|
54360       ELSE
 | 
						|
54370         BEGIN
 | 
						|
54380         PVALUE^.OSCOPE := 0;
 | 
						|
54390         POINT := INCPTR(PVALUE, DESTINATION^.OFFSET)
 | 
						|
54400         END;
 | 
						|
54410     POINT^.FIRSTINT := SOURCE;
 | 
						|
54420     TASSTS := DESTINATION
 | 
						|
54430     END;
 | 
						|
54440 (**)
 | 
						|
54450 (**)
 | 
						|
54460 FUNCTION TASSTS2(DESTINATION: OBJECTP; SOURCE: A68LONG): OBJECTP;
 | 
						|
54470 (*PASSIGNTT+1*)
 | 
						|
54480   VAR POINT: UNDRESSP;
 | 
						|
54490     BEGIN
 | 
						|
54500     WITH DESTINATION^.ANCESTOR^ DO
 | 
						|
54510         IF FPTWO(PVALUE^) THEN 
 | 
						|
54520         POINT := SAFEACCESS(DESTINATION)
 | 
						|
54530       ELSE
 | 
						|
54540         BEGIN
 | 
						|
54550         PVALUE^.OSCOPE := 0;
 | 
						|
54560         POINT := INCPTR(PVALUE, DESTINATION^.OFFSET)
 | 
						|
54570         END;
 | 
						|
54580     POINT^.FIRSTLONG := SOURCE;
 | 
						|
54590     TASSTS2 := DESTINATION
 | 
						|
54600     END;
 | 
						|
54610 ()-05*) ()-01*)
 | 
						|
54620 (**)
 | 
						|
54630 (**)
 | 
						|
54640 (*-01()
 | 
						|
54650 FUNCTION TASSTPT(DESTINATION, SOURCE: OBJECTP): OBJECTP;
 | 
						|
54660 (*PASSIGNTT+2*)
 | 
						|
54670   VAR DESTPTR: OBJECTP;
 | 
						|
54680       DESTPTR2: UNDRESSP;
 | 
						|
54690     BEGIN
 | 
						|
54700     WITH SOURCE^ DO FINC;
 | 
						|
54710     IF DESTINATION^.OSCOPE<SOURCE^.OSCOPE THEN ERRORR(RSCOPE);
 | 
						|
54720     WITH DESTINATION^ DO
 | 
						|
54730       IF SORT=REFN THEN
 | 
						|
54740         BEGIN DESTPTR := PVALUE; PVALUE := SOURCE END
 | 
						|
54750       ELSE
 | 
						|
54760         BEGIN
 | 
						|
54770         WITH ANCESTOR^ DO
 | 
						|
54780           IF FPTWO(PVALUE^) THEN 
 | 
						|
54790             DESTPTR2 := SAFEACCESS(DESTINATION)
 | 
						|
54800           ELSE
 | 
						|
54810             BEGIN
 | 
						|
54820             PVALUE^.OSCOPE := 0;
 | 
						|
54830             DESTPTR2 := INCPTR(PVALUE, DESTINATION^.OFFSET)
 | 
						|
54840             END;
 | 
						|
54850         DESTPTR := DESTPTR2^.FIRSTPTR;
 | 
						|
54860         DESTPTR2^.FIRSTPTR := SOURCE
 | 
						|
54870         END;
 | 
						|
54880     WITH DESTPTR^ DO BEGIN FDEC; IF FTST THEN GARBAGE(DESTPTR) END;
 | 
						|
54890     TASSTPT := DESTINATION
 | 
						|
54900     END;
 | 
						|
54910 (**)
 | 
						|
54920 (**)
 | 
						|
54930 ()-01*)
 | 
						|
54940 (*-02()
 | 
						|
54950   BEGIN
 | 
						|
54960   END;
 | 
						|
54970 ()-02*)
 | 
						|
54980 (*+01()
 | 
						|
54990 BEGIN (*OF MAIN PROGRAM*)
 | 
						|
55000 END  (*OF EVERYTHING*).
 | 
						|
55010 ()+01*)
 |