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