MTHNAME Fortran Implementation

Note:

Source:

      SUBROUTINE MTHNAME (MTH,MONTH)
      REAL*8     MTH
      INTEGER*4  MONTH(3),A(13,3),IMTH
      DATA
     +     A( 1,1)/'Janu'/, A( 1,2)/'ary '/, A( 1,3)/'    '/,
     +     A( 2,1)/'Febr'/, A( 2,2)/'uary'/, A( 2,3)/'    '/,
     +     A( 3,1)/'Marc'/, A( 3,2)/'h   '/, A( 3,3)/'    '/,
     +     A( 4,1)/'Apri'/, A( 4,2)/'l   '/, A( 4,3)/'    '/,
     +     A( 5,1)/'May '/, A( 5,2)/'    '/, A( 5,3)/'    '/,
     +     A( 6,1)/'June'/, A( 6,2)/'    '/, A( 6,3)/'    '/,
     +     A( 7,1)/'July'/, A( 7,2)/'    '/, A( 7,3)/'    '/,
     +     A( 8,1)/'Augu'/, A( 8,2)/'st  '/, A( 8,3)/'    '/,
     +     A( 9,1)/'Sept'/, A( 9,2)/'embe'/, A( 9,3)/'r   '/,
     +     A(10,1)/'Octo'/, A(10,2)/'ber '/, A(10,3)/'    '/,
     +     A(11,1)/'Nove'/, A(11,2)/'mber'/, A(11,3)/'    '/,
     +     A(12,1)/'Dece'/, A(12,2)/'mber'/, A(12,3)/'    '/,
     +     A(13,1)/'**ER'/, A(13,2)/'ROR*'/, A(13,3)/'*   '/
      IMTH=MTH+0.000001
      IF (IMTH .LT. 1 .OR. IMTH .GT. 12) IMTH=13
      DO 1 I=1,3
    1 MONTH(I)=A(IMTH,I)
      RETURN
      END

Note: Some Fortran compilers support character variables longer than 4 bytes and, in this case, the example’s array could be constructed as a CHARACTER*10 with A(1)/’January’/, ..., A(13)/’***ERROR**’/ syntax, but the split array syntax used in example above is known to work on all Fortran compilers.


iWay Software