1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
*DECK PSMOVE
SUBROUTINE PSMOVE(ISPSP,XYPOS,ITMOVE)
C
C--------------------------- PSMOVE ---------------------------------
C
C 1- PROGRAMME STATISTICS:
C NAME : PSMOVE
C USE : MOVE PLOT REFERENCE POINT
C REPLACES PSPLOT ROUTINE PLOT
C
C 2- ROUTINE PARAMETERS:
C INPUT/OUTPUT
C ISPSP : PSP FILE UNIT I
C YXPOS : FINAL (X,Y) POSITION TO REACH R(2)
C ITMOVE : TYPE OF DISPLACEMENT
C
C--------------------------- PSMOVE --------------------------------
C
IMPLICIT NONE
INTEGER ISPSP,ITMOVE
REAL XYPOS(2)
C----
C LOCAL VARIABLES
C----
CHARACTER NAMSBR*6
REAL CONVER
PARAMETER (NAMSBR='PSMOVE',CONVER=72.0)
CHARACTER CMDSTR*132
C----
C IF ITMOVE=999 TERMINATE PLOT SESSION
C----
IF(ITMOVE .EQ. 999) THEN
CMDSTR='stroke showpage'
CALL PSCPUT(ISPSP,CMDSTR)
RETURN
ENDIF
C----
C MOVE WITH PEN UP (3) OR DOWN (OTHER VALUES) AS REQUESTED
C----
CMDSTR=' '
IF(ABS(ITMOVE).EQ.3) THEN
WRITE(CMDSTR,'(2(F8.2,1X),A2)')
> XYPOS(1)*CONVER,XYPOS(2)*CONVER,'SM'
ELSE
WRITE(CMDSTR,'(2(F8.2,1X),A3)')
> XYPOS(1)*CONVER,XYPOS(2)*CONVER,'LSM'
ENDIF
CALL PSCPUT(ISPSP,CMDSTR)
C----
C RESET ORIGIN IF ITMOVE < 0
C----
CMDSTR=' '
IF(ITMOVE.LT.0) THEN
WRITE(CMDSTR,'(2(F8.2,1X),A9)')
> XYPOS(1)*CONVER,XYPOS(2)*CONVER,'translate'
CALL PSCPUT(ISPSP,CMDSTR)
ENDIF
RETURN
END
|