48 lines
1.8 KiB
OpenEdge ABL
48 lines
1.8 KiB
OpenEdge ABL
|
43600 #include "rundecs.h"
|
||
|
43610 (* COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER *)
|
||
|
43620 (**)
|
||
|
43630 (**)
|
||
|
43670 (*RNSTART HAD BETTER BE WRITTEN IN ASSEMBLER ON MOST SYSTEMS*)
|
||
|
43680 (**)
|
||
|
43690 (*-01() (*-05()
|
||
|
43700 FUNCTION GETADDRESS (VAR VARIABLE :IPOINT) :IPOINT; EXTERN;
|
||
|
43710 FUNCTION GETCALLER (CALLEE :IPOINT) :IPOINT; EXTERN;
|
||
|
43720 FUNCTION GETLINENO :INTEGER; EXTERN;
|
||
|
43730 PROCEDURE RNSTART;
|
||
|
43740 VAR TSCOPE: DEPTHRANGE;
|
||
|
43750 RNIB: IPOINT;
|
||
|
43760 CURR : INTPOINT ;
|
||
|
43764 PROCEDURE SETNSTATIC( N: INTEGER ) ; EXTERN ;
|
||
|
43770 BEGIN
|
||
|
43780 RNIB := DYNAMIC(ME);
|
||
|
43790 (*+05()SETMYSTATIC(STATIC(DYNAMIC(RNIB)));(*TO ALGOL 68 CALLER*) ()+05*)
|
||
|
43800 (*-05()SETMYSTATIC(GETCALLER(RNIB); ()-05*)
|
||
|
43810 TSCOPE := SCOPE ;
|
||
|
43820 (*+02()LINENO:=GETLINENO;()+02*)
|
||
|
43830 SETMYSTATIC(RNIB); (* TO ALGOL 68 CALLEE *)
|
||
|
43840 (*+05()CURR := ASPTR(RNIB-SZWORD*2);(*CURR IS NOW POINTING TO ALGOL 68 CALLEE'S STATIC LINK*)
|
||
|
43850 CURR ^ := RNIB ; (* SET ALGOL 68 CALLEE'S STATIC LINK TO ITSELF *)
|
||
|
43860 STATICP:=STATICP-192; (*ENABLING ACCESS BY OFFSET FROM PNX R2*)()+05*)
|
||
|
43870 SCOPE := TSCOPE+LOCRG;
|
||
|
43880 LEVEL := PROCBL^.LEVEL;
|
||
|
43890 (*-02()LINENO := 0;()-02*)
|
||
|
43900 WITH FIRSTRG DO WITH FIRSTW DO
|
||
|
43910 BEGIN LOOPCOUNT := 0; RECGEN := NIL; RGIDBLK := PROCBL ^ . IDBLOCK ; RGSCOPE := 1;
|
||
|
43920 RIBOFFSET := INCPTR( ASPTR( RNIB ) , IBCONST + RGCONST );
|
||
|
43930 (*+05()RGLASTUSED :=ASPTR(RNIB-PARAMOFFSET);()+05*)
|
||
|
43940 (*-05()RGLASTUSED:=INCPTR(ASPTR(GETADDRESS(STATICP)),-PARAMOFFSET);()-05*)
|
||
|
43950 END;
|
||
|
43960 IF LEVEL > PROCBL^.SCOPELEVEL + 1 THEN SETNSTATIC( LEVEL - ( PROCBL^.SCOPELEVEL + 1 ) ) ;
|
||
|
43970 END;
|
||
|
43980 ()-05*) ()-01*)
|
||
|
43990 (**)
|
||
|
44000 (**)
|
||
|
44010 (*-02()
|
||
|
44020 BEGIN
|
||
|
44030 END ;
|
||
|
44040 ()-02*)
|
||
|
44050 (*+01()
|
||
|
44060 BEGIN (*OF MAIN PROGRAM*)
|
||
|
44070 END (*OF EVERYTHING*).
|
||
|
44080 ()+01*)
|