diff options
Diffstat (limited to 'pkg/tbtables/fitsio/ftd2e.f')
-rw-r--r-- | pkg/tbtables/fitsio/ftd2e.f | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/pkg/tbtables/fitsio/ftd2e.f b/pkg/tbtables/fitsio/ftd2e.f new file mode 100644 index 00000000..71cbb7bc --- /dev/null +++ b/pkg/tbtables/fitsio/ftd2e.f @@ -0,0 +1,43 @@ +C---------------------------------------------------------------------- + subroutine ftd2e(val,dec,cval,vlen,status) + +C convert a double precision value to an E format character string +C If it will fit, the value field will be 20 characters wide; +C otherwise it will be expanded to up to 35 characters, left +C justified. +C +C val d input value to be converted +C dec i number of decimal places to display in output string +C cval c output character string +C vlen i length of output string +C status i output error status (0 = OK) + + double precision val + integer dec,vlen,status + character*35 cval,form*10 + + if (status .gt. 0)return + + if (dec .ge. 1 .and. dec .le. 9)then + vlen=20 + write(form,2000)dec +2000 format('(1pe20.',i1,')') + else if (dec .ge. 10 .and. dec .le. 28)then + vlen=max(20,dec+7) + write(form,2001)vlen,dec +2001 format('(1pe',i2,'.',i2,')') + else +C illegal number of decimal places were specified + status=411 + call ftpmsg('Error in FTR2E: number of decimal places ' + & //'is less than 1 or greater than 28.') + return + endif + + write(cval,form,err=900)val + if (cval(1:1) .eq. '*')go to 900 + return + +900 status=402 + call ftpmsg('Error in FTD2E converting double to En.m string.') + end |