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
ENDNote: 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.
| WebFOCUS | |
|
Feedback |