summaryrefslogtreecommitdiff
path: root/Utilib/src/PSCPUT.f
blob: 4fe7220c14a2b63d0f4c4d05e1f16a50b8a3bd8a (plain)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
*DECK PSCPUT
      SUBROUTINE PSCPUT(ISPSP,CMDSTR)
C
C---------------------------  PSCPUT  ---------------------------------
C
C  1- PROGRAMME STATISTICS:
C      NAME     : PSCPUT
C      USE      : TRANSFER COMMAND LINE TO FILE
C                 REPLACES PSPLOT ROUTINE FILLER
C
C  2- ROUTINE PARAMETERS:
C    INPUT/OUTPUT
C      ISPSP    : PSP FILE UNIT                          I
C      CMDSTR   : COMMAND LINE                           C*132
C    LOCAL
C      IBSL     : ASCII REPRESENTATION OF BACKSLASH      I
C
C---------------------------   PSCPUT  --------------------------------
C
      IMPLICIT         NONE
      INTEGER          ISPSP
      CHARACTER        CMDSTR*132
C----
C  LOCAL VARIABLES
C----
      CHARACTER        NAMSBR*6
      INTEGER          IBSL
      PARAMETER       (IBSL=92,NAMSBR='PSCPUT')
      INTEGER          LCMD,IBSLH,ISPACE,IPAREN,IC
      CHARACTER        CBSL*1
      CBSL=CHAR(IBSL)
      LCMD=0
      IBSLH=0
      ISPACE=0
      IPAREN=0
C----
C  COMPRESS COMMAND LINE TO REMOVE USELESS BLANKS
C----
      DO 100 IC=1,132
        IF(CMDSTR(IC:IC) .EQ. ' ' ) THEN
C----
C  REMOVE BLANK IF NOT INSERTED BETWEEN () OR
C  2 OR MORE IN SUCCESSION
C----
          IF(IPAREN .EQ. 0) THEN
            ISPACE=ISPACE+1
          ENDIF
          IF(ISPACE .LE. 1 ) THEN
            LCMD=LCMD+1
            CMDSTR(LCMD:LCMD)=CMDSTR(IC:IC)
          ENDIF
        ELSE
          ISPACE=0
          LCMD=LCMD+1
          CMDSTR(LCMD:LCMD)=CMDSTR(IC:IC)
C----
C  TEST FOR SET OF PARENTHESIS
C  "Backslash"( AND "Backslash") ARE CONSIDERED AS COMMENTED PARENTHESIS
C  AND NOT TREATED
C----
          IF(IBSLH .EQ. 0) THEN
            IF(CMDSTR(IC:IC) .EQ. '(') THEN
              IPAREN=IPAREN+1
            ELSE IF(CMDSTR(IC:IC) .EQ. ')') THEN
              IPAREN=IPAREN-1
            ENDIF
          ENDIF
          IBSLH=0
          IF(CMDSTR(IC:IC) .EQ. CBSL) THEN
            IBSLH=1
          ENDIF
        ENDIF
 100  CONTINUE
C----
C  TEST IF LAST CHARACTER IS A BLANK
C----
      IF(CMDSTR(LCMD:LCMD).EQ. ' ') THEN
        LCMD=LCMD-1
      ENDIF
C----
C  CLEAR REST OF COMMAND STRING AFTER COMPRESSION
C  OF BLANK CHARACTERS
C----
      IF(LCMD .LT. 132) THEN
        CMDSTR(LCMD+1:132)=' '
      ENDIF
C----
C  TRANSFER COMPRESSED COMMAND LINE TO FILE
C----
      IF(LCMD .GT. 0) THEN
        WRITE(ISPSP,'(132A1)')(CMDSTR(IC:IC),IC=1,LCMD)
      ENDIF
      RETURN
      END