diff options
Diffstat (limited to 'pkg/tbtables/fitsio/ftchdu.f')
-rw-r--r-- | pkg/tbtables/fitsio/ftchdu.f | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/pkg/tbtables/fitsio/ftchdu.f b/pkg/tbtables/fitsio/ftchdu.f new file mode 100644 index 00000000..0e125727 --- /dev/null +++ b/pkg/tbtables/fitsio/ftchdu.f @@ -0,0 +1,58 @@ +C---------------------------------------------------------------------- + subroutine ftchdu(iunit,status) + +C Close Header Data Unit +C If we have write access to the file, then close the current HDU by: +C -padding remaining space in the header with blanks +C -writing the END keyword in the CHU +C -check the data fill values, and rewrite them if not correct +C -flushing the current buffer to disk +C -recover common block space containing column descriptors + +C iunit i fortran unit number +C status i output error status +C +C written by Wm Pence, HEASARC/GSFC, June, 1991 + + integer iunit,status + +C COMMON BLOCK DEFINITIONS:-------------------------------------------- + integer nb,ne + parameter (nb = 20) + parameter (ne = 200) + integer bufnum,chdu,hdutyp,maxhdu,hdstrt,hdend,nxthdr,dtstrt + integer nxtfld + logical wrmode + common/ft0001/bufnum(199),chdu(nb),hdutyp(nb),maxhdu(nb), + & wrmode(nb),hdstrt(nb,ne),hdend(nb),nxthdr(nb),dtstrt(nb),nxtfld +C END OF COMMON BLOCK DEFINITIONS----------------------------------- + + integer ibuff + +C ignore input status and close HDU regardless of input status value + + ibuff=bufnum(iunit) + +C see if we have write access to this file + if (wrmode(ibuff))then +C rewrite the header END card and the following blank fill, and +C insure that the internal data structure matches the keywords + call ftrdef(iunit,status) + +C write the correct data fill values, if they are not already correct + call ftpdfl(iunit,status) + end if + +C set current column name buffer as undefined + call ftrsnm + +C flush the buffers holding data for this HDU + call ftflsh(ibuff,status) + +C recover common block space containing column descriptors for this HDU + call ftfrcl(iunit,status) + + if (status .gt. 0)then + call ftpmsg('Error while closing current HDU (FTCHDU).') + end if + end |