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
|
C--------------------------------------------------------------------------
subroutine ftgtkn(iunit,nkey,keynam,ival,status)
C test that keyword number NKEY has name = KEYNAM and get the
C integer value of the keyword. Return an error if the keyword
C name does not match the input KEYNAM, or if the value of the
C keyword is not a positive integer.
C
C iunit i Fortran I/O unit number
C nkey i sequence number of the keyword to test
C keynam c name that the keyword is supposed to have
C OUTPUT PARAMETERS:
C ival i returned value of the integer keyword
C status i returned error status (0=ok)
C
C written by Wm Pence, HEASARC/GSFC, June 1991
C
integer iunit,nkey,status,ival
character*(*) keynam
character kname*8,value*30,comm*48,npos*8,keybuf*80
if (status .gt. 0)return
C read the name and value of the keyword
call ftgrec(iunit,nkey,keybuf,status)
kname=keybuf(1:8)
C parse the value and comment fields from the record
call ftpsvc(keybuf,value,comm,status)
if (status .gt. 0)go to 900
C test if the keyword has the correct name
if (kname .ne. keynam)then
status=208
go to 900
end if
C convert character string to integer
call ftc2ii(value,ival,status)
if (status .gt. 0 .or. ival .lt. 0 )then
C keyword value must be zero or positive integer
status=209
end if
900 continue
if (status .gt. 0)then
write(npos,1000)nkey
1000 format(i8)
call ftpmsg('FTGTKN found unexpected keyword or value '//
& 'for header keyword number '//npos//'.')
call ftpmsg(' Was expecting positive integer keyword '//
& keynam(1:8))
if (keybuf(9:10) .ne. '= ')then
call ftpmsg(' but found the keyword '//kname//
& ' with no value field (no "= " in cols. 9-10).')
else
call ftpmsg(' but instead found keyword = '//kname//
& ' with value = '//value)
end if
call ftpmsg(keybuf)
end if
end
|