74200 #include "rundecs.h" 74210 (* COPYRIGHT 1983 C.H.LINDSEY, UNIVERSITY OF MANCHESTER *) 74220 (**) 74230 (**) 74240 FUNCTION SUBFIXED(SIGN, BEFORE, POINT, AFTER : INTEGER; VAR EXP: INTEGER; EXPNEEDED: BOOLEAN; 74250 X: REALTEGER; R: BOOLEAN; VAR S: OBJECTP; START: INTEGER): BOOLEAN; EXTERN; 74260 PROCEDURE ERRORFILL(VAR S: OBJECTP; LENGTH: INTEGER); EXTERN; 74270 (**) 74280 (**) 74290 FUNCTION FIXED(XMODE: INTEGER; VAL: REALTEGER; WIDTH, AFTER: INTEGER): OBJECTP; 74300 VAR 74310 S: OBJECTP; 74320 SIGN, ABSWIDTH, BEFORE, POINT, E: INTEGER; 74330 OK: BOOLEAN; 74340 BEGIN 74350 ABSWIDTH := ABS(WIDTH); 74360 SIGN := ORD((WIDTH>0) OR (VAL.INT<0)); 74370 IF ABSWIDTH-AFTER=1 THEN 74380 IF (WIDTH<0) AND (VAL.INT<0) THEN AFTER := AFTER-1; 74390 S := NIL; 74400 REPEAT 74410 POINT := ORD(AFTER>0); 74420 BEFORE := ABSWIDTH-SIGN-POINT-AFTER-ORD(WIDTH=0); (*-VE FOR WIDTH=0*) 74430 IF (WIDTH<>0) AND (BEFORE<0) THEN AFTER := -1; (*WILL CAUSE SUBFIXED TO FAIL*) 74440 OK := SUBFIXED(SIGN, BEFORE, POINT, AFTER, E, FALSE, VAL, XMODE=2, S, 1); 74450 AFTER := AFTER-1 74460 UNTIL OK OR (AFTER<0); 74470 IF NOT OK THEN ERRORFILL(S, ABSWIDTH+ORD(WIDTH=0)); 74480 FIXED := S; 74490 END; 74500 (**) 74510 (**) 74520 (*-02() 74530 BEGIN (*OF A68*) 74540 END; (*OF A68*) 74550 ()-02*) 74560 (*+01() 74570 BEGIN (*OF MAIN PROGRAM*) 74580 END (* OF EVERYTHING *). 74590 ()+01*)