SUBROUTINE RVSNAM(KFILDO,EQNNAM,NPROJ,IER) C C JANUARY 2015 GLAHN MDL MOS-2000 C MAY 2015 GLAHN REVISED TO ADD UP TO 3 DIGITS VICE 2 C C PURPOSE C TO MODIFY THE FILE NAME IN EQNNAM. IT IS THE FILE C CONTAINING THE REGRESSION EQUATIONS. IT IS UP TO C 60 CHARACTERS IN LENGTH, AND MUST END IN ONE, TWO, OR C THREE NUMERIC DIGITS. THESE DIGITS ARE REPLACED WITH THE C FORECAST PROJECTION NPROJ. C C DATA SET USE C KFILDO - UNIT NUMBER OF OUTPUT (PRINT) FILE. (OUTPUT) C C VARIABLES C KFILDO = UNIT NUMBER OF OUTPUT (PRINT) FILE. (INPUT) C EQNNAM = NAME OF FILE TO BE MODIFIED. (INPUT/OUTPUT) C NPROJ = FORECAST PROJECTION. (INPUT) C IER = COMPLETION CODE. (OUTPUT) C 0 = GOOD C 777 = ERROR. WILL BE TREATED AS FATAL IN C CALLING PROGRAM. C 1 2 3 4 5 6 7 X C C NONSYSTEM SUBROUTINES USED C NONE C CHARACTER*60 EQNNAM C D CALL TIMPR(KFILDO,KFILDO,'START RVSNAM ') IER=0 C CCC WRITE(KFILDO,100)EQNNAM CCC 100 FORMAT(/' EQUATION FILE NAME = ',A60) C DO 110 J=60,3,-1 C IF(EQNNAM(J:J).EQ.' ')THEN GO TO 110 ELSE C C TEST TWO CHARACTERS FOR NUMERIC VALUE. C IF(EQNNAM(J:J).GE.'0'.AND. 1 EQNNAM(J:J).LE.'9')THEN C NUMERIC VALUES 46-57 ARE THE DIGITS 0 THROUGH 9. C IF(EQNNAM(J-1:J-1).GE.'0'.AND. 1 EQNNAM(J-1:J-1).LE.'9')THEN C IF(EQNNAM(J-2:J-2).GE.'0'.AND. 1 EQNNAM(J-2:J-2).LE.'9')THEN NPLACE=J-2 ELSE NPLACE=J-1 ENDIF C ELSE NPLACE=J ENDIF C GO TO 115 ELSE WRITE(KFILDO,105) 105 FORMAT(/' ****FILE NAME IN RVSNAM DOES NOT END IN', 1 ' A NUMERIC VALUE. ABORT AT 105.') IER=777 GO TO 150 ENDIF C ENDIF c WRITE(KFILDO,106) 106 FORMAT(/' ****FILE NAME IN RVSNAM DOES NOT END IN', 1 ' A NUMERIC VALUE OR IS LESS THAN 3 CHARACTERS', 2 ' IN LENGTH. ABORT AT 106.') IER=777 GO TO 150 C 110 CONTINUE C C THE PLACEMENT OF THE PROJECTION STARTS IN LOCATION NPLACE IN C EQNNAM. C 115 IF(NPROJ.GE.100)THEN NOPL=3 C THREE DIGITS MUST BE PLACED. C IF(NPLACE.GT.58)THEN WRITE(KFILDO 116) 116 FORMAT(/' ****NOT ROOM FOR PROJECTION OF 3 CHARACTERS IN', 1 ' FILE NAME. ABORT IN RVSNAM AT 116.') IER=777 GO TO 150 ENDIF C ELSEIF(NPROJ.GE.10)THEN NOPL=2 C TWO DIGITS MUST BE PLACED. C IF(NPLACE.GT.59)THEN WRITE(KFILDO,120) 120 FORMAT(/' ****NOT ROOM FOR PROJECTION OF 2 CHARACTERS IN', 1 ' FILE NAME. ABORT IN RVSNAM AT 120.') IER=777 GO TO 150 ENDIF C ELSE NOPL=1 C PLACE ONE DIGIT. ENDIF C C NOW DO THE PLACEMENT, NOPL CHARACTERS STARTING IN NPLACE. C D WRITE(KFILDO,125)NOPL,NPLACE D125 FORMAT(/' AT 125 IN RVSNAM--NOPL,NPLACE',2I4) C IF(LPLACE+NOPL-1.GT.60)THEN WRITE(KFILDO,127)NOPL,NPLACE 127 FORMAT(/' ****NOT ROOM TO PLACE',I4,' DIGITS STARTING IN', 1 ' POSITION',I4,'. PLACEMENT NOT MADE.') IER=777 GO TO 150 ENDIF C IF(NOPL.EQ.1)THEN C IF(NPLACE.EQ.60)THEN WRITE(EQNNAM(NPLACE:NPLACE),130,IOSTAT=IOS,ERR=138)NPROJ 130 FORMAT(I1) ELSEIF(NPLACE.EQ.59)THEN C THIS GUARDS AGAINST 2 DIGITS BEING REPLACED BY 1 AND C THE SECOND BEING LEFT. WRITE(EQNNAM(NPLACE:NPLACE+1),131,IOSTAT=IOS,ERR=138)NPROJ 131 FORMAT(I1,' ') ELSE WRITE(EQNNAM(NPLACE:NPLACE+2),132,IOSTAT=IOS,ERR=138)NPROJ 132 FORMAT(I1,' ') ENDIF C ELSEIF(NOPL.EQ.2)THEN C IF(NPLACE.EQ.59)THEN WRITE(EQNNAM(NPLACE:NPLACE+1),133,IOSTAT=IOS,ERR=138)NPROJ 133 FORMAT(I2) ELSE WRITE(EQNNAM(NPLACE:NPLACE+2),135,IOSTAT=IOS,ERR=138)NPROJ 135 FORMAT(I2,' ') ENDIF C ELSE WRITE(EQNNAM(NPLACE:NPLACE+2),136,IOSTAT=IOS,ERR=138)NPROJ 136 FORMAT(I3) ENDIF C GO TO 150 C 138 WRITE(KFILDO,139)IOS 139 FORMAT(/' ****ERROR ON INTERNAL WRITE IN RVSNAM AT 139', 1 ' IOSTAT=',I5,'. ABORT.') IER=777 C 150 WRITE(KFILDO,151)EQNNAM 151 FORMAT(' COMPUTED FILE NAME = ',A60) C 200 CONTINUE C D CALL TIMPR(KFILDO,KFILDO,'END RVSNAM ') RETURN END