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
|
C----------------------------------------------------------------------
subroutine ftc2s(in,cval,status)
C convert an input quoted string to an unquoted string
C
C The first character of the input string must be a quote character (')
C and at least one additional quote character must also be present in the
C input string. This routine then simply outputs all the characters
C between the first and last quote characters in the input string.
C
C in c input quoted string
C cval c output unquoted string
C status i output error status (0=ok, 1=first quote missing,
C 2=second quote character missing.
character*(*) in,cval
integer length,i,j,i2,status
character*1 dtype
C test for datatype
call ftdtyp(in,dtype,status)
if (status .gt. 0)return
if (dtype .ne. 'C')then
C do no conversion and just return the raw character string
cval=in
else
C convert character string to unquoted string
C find closing quote character
length=len(in)
i2=length-1
do 10 i=length,2,-1
if (in(i:i) .eq. '''')go to 20
i2=i2-1
10 continue
20 continue
if (i2 .eq. 0)then
C there was no closing quote character
status=205
call ftpmsg('The following keyword value string has no '
& //'closing quote:')
call ftpmsg(in)
else if (i2 .eq. 1)then
C null string
cval=' '
else
cval=in(2:i2)
C test for double single quote characters; if found,
C then delete one of the quotes (FITS uses 2 single
C quote characters to represent a single quote)
i2=i2-2
do 30 i=1,i2
if (cval(i:i) .eq. '''')then
if (cval(i+1:i+1) .eq. '''')then
do 40 j=i+1,i2
cval(j:j)=cval(j+1:j+1)
40 continue
cval(i2:i2)=' '
end if
end if
30 continue
end if
end if
end
|