ack/lang/a68s/liba68s/tassts.p
1988-10-04 13:41:01 +00:00

83 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*)