SUBROUTINE SCALE(DATA,IDATA) COMMON /PLTCOM/IP1P2(2,2),DMNMX(2,2),PMNMX(2,2),IPAPER(2,2) COMMON /PLTCOM/LEGWIN(2,2) COMMON /PLTCOM/NTICK(2) COMMON /PLTCOM/NPEN,NLINE,ISYM,NCNVER,NSTRT,IPLTOK,LEGPOS DIMENSION DATA(2),IDATA(2),RIDATA(2) C... CONVERTS DATA COORDS DATA TO PLOTTER COORDS IDATA C... IF CONVERSION IS NOT POSSIBLE (I.E. IDATA WOULD B OUTSIDE THE C... COMPUTER RANGE FOR INTEGERS), NCNVER (IN COMMON) IS INCREMENTED C... C... C... SCALE SHOULD INITIALLY BE CALLED WITH NCNVER=0. C... THEN, NCNVER WILL INDICATE THE TOTAL NUMBER OF CONVERSION C... ERRORS SINCE IT WAS SET TO ZERO. C C C... SCALE (AFFINE TRANSFORMATION) DO 10 K=1,2 I=K RIDATA(I)=RFLOOR((DATA(I)-PMNMX(I,1))*(IP1P2(I,2)-IP1P2(I,1))/ 1 (PMNMX(I,2)-PMNMX(I,1))+IP1P2(I,1)) C... CHECK FOR REAL -> INTEGER CONVERSION ERROR IF(RIDATA(I) .GE. 32768. .OR. RIDATA(I) .LT. -32768.) GOTO 20 10 IDATA(I)=RIDATA(I) RETURN C... CONVERSION ERROR 20 NCNVER=NCNVER+1 RETURN END SUBROUTINE UNSCL(DATA,IDATA) COMMON /PLTCOM/IP1P2(2,2),DMNMX(2,2),PMNMX(2,2),IPAPER(2,2) COMMON /PLTCOM/LEGWIN(2,2) COMMON /PLTCOM/NTICK(2) COMMON /PLTCOM/NPEN,NLINE,ISYM,NCNVER,NSTRT,IPLTOK,LEGPOS DIMENSION DATA(2),IDATA(2) C C... INVERSE OF "SCALE" C DO 10 I=1,2 10 DATA(I)=(IDATA(I)-IP1P2(I,1))*(PMNMX(I,2)-PMNMX(I,1))/ 1 (IP1P2(I,2)-IP1P2(I,1))+PMNMX(I,1) RETURN END FUNCTION ICEIL(X) C... ROUNDS X UP TO NTEGER VALUE (REAL -> INTEGER) ICEIL=RCEIL(X) RETURN END FUNCTION IFLOOR(X) C... ROUNDS X DOWN TO INTEGER VALUE (REAL -> INTEGER) IFLOOR=RFLOOR(X) RETURN END FUNCTION RCEIL(X) C... ROUNDS X UP TO INTEGER VALUE (REAL -> REAL) RCEIL=-RFLOOR(-X) RETURN END FUNCTION RFLOOR(X) C... ROUNDS X EOWN TO INTEGER VALUE (REAL -> REAL) RFLOOR=AINT(X) IF (X .LT. 0. .AND. RFLOOR .NE. X) RFLOOR=RFLOOR-1. RETURN END