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 |