LoginSignup
4
4

41Hb9INzhYL.SL500.jpg
演習 大学院入試問題[数学]II
姫野 俊一
https://bookmeter.com/books/233806

のFORTRANプログラムを動かそうとして出たエラー群。

この記事は、fortranに限定して記載し、
fortranに再び馴染むために、打ち間違いなどを記録して、どういうコンパイルエラーがでるかを
確認するために記録しようとしていました。
論理は別記事にする予定で、演算子などあまり深く考えずに入力していました。

使った資料は第一版で、文字形(font)が読みにくい上に、印刷がかすれていて、文字が判別しにくく、コンパイルエラーが出ないと誤植か、誤入力かの判定ができない状態。
30年前の印刷の書籍で、文字形も1とIが判定しずらく、KとRも見間違え。
-と=は単純な打ち間違い(シフトの押すタイミングがずれて)。
まだ、もうすこしプログラムがあり、順次追加します。
統計のプログラム全部打ち終えたら、統計の記事を別途書く予定です。
1日、1プログラムしか入力できそうになく、時間がかかりますが、よろしくお願いします。

docker

使ったのは、

$ docker run -v /tmp:/tmp -it kaizenjapan/fortran /bin/bash

使う前に更新。

# apt update; apt -y upgrade

pushしてある。
/home/fortran
にソースをコピーしておいた。入っているはず。

最初にdockerでFORTRANについて利用した記事は下記。

プログラムちょい替え(11)Fortran 多次元配列のアクセス順序による計算時間の違い: docker(96)
https://qiita.com/kaizen_nagoya/items/3d657649d74fdd753bad

p487.f

bash
# gfortran p487.f 
p487.f:12:11:

   C(N,q)=N
           1
Warning: Legacy Extension: REAL array index at (1)
/tmp/ccq2t893.o: In function `insatu_':
p487.f:(.text+0xb2): undefined reference to `r_'
collect2: error: ld returned 1 exit status

ソースコードは下記。

p487.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806
C	PASKAL
	CALL PASKAL
	CALL INSATU
	STOP
	END
	
	SUBROUTINE PASKAL
	INTEGER C, R
	COMMON /NCR/C(20,20)
	NMAX=20
	DO 1 N=1, NMAX
		C(N,q)=N
		C(N,N)=1
1	CONTINUE
	DO 2 N=2, NMAX
		DO 3 R=2, N-1
			C(N,R)=C(N-1,R-1)*C(N-1,R)
3		CONTINUE
2	CONTINUE
	RETURN
	END
	
	SUBROUTINE INSATU
	COMMON /NCR/K(20,20)
	DO 1 I=1,10
		WRITE(6,601) (R(I,J),J=1,I)
601		FORMAT(' 1',I3,I4,I5,10I7,I5,I5,I5,I4,I3,I2)
1	CONTINUE
	RETURN
	END

単純な打ち誤り。

# gfortran p487.f 
/tmp/cc5XGojg.o: In function `insatu_':
p487.f:(.text+0xb2): undefined reference to `r_'
collect2: error: ld returned 1 exit status

1017を10I7に変えても同じエラー。

10I7をI7に変えても同じエラー。

K(20,20)でなくてR(20,20)だった。

直してコンパイルして実行。

./a.out
At line 26 of file p487.f (unit = 6, file = 'stdout')
Fortran runtime error: Expected INTEGER for item 1 in formatted transfer, got REAL
(' 1',I3,I4,I5,I7,I5,I5,I5,I4,I3,I2)
      ^

Error termination. Backtrace:
#0  0x7f636cbae32a
#1  0x7f636cbaeed5
#2  0x7f636cbaf69d
#3  0x7f636cd18cb1
#4  0x7f636cd25522
#5  0x7f636cd28222
#6  0x7f636cd286dc
#7  0x55911f8e2935
#8  0x55911f8e2ae4
#9  0x55911f8e2b29
#10  0x7f636c7c3bf6
#11  0x55911f8e2769
#12  0xffffffffffffffff

N=2, ではなく、N=3,だった。

直しても同じエラー。

I3じゃなくてR3にしてみる。

# gfortran p487.f 
p487.f:27:22:

 601  FORMAT(' 1', R3, I4, I5, I7, I5, I5, I5, I4, I3, I2)
                      1
Error: Unexpected element '3' in format string at (1)
p487.f:26:72:

   WRITE(6,601) (R(I,J),J=1,I)
                                                                        1
Error: FORMAT label 601 at (1) not defined

エラーが取れない。
ひとまず投稿してから考える。

複数のR()をK()に変えて、コンパイル。実行。

bash
# gfortran p487.f
# ./a.out
 1  1
 1  2   1
 1  3   2    1
 1  4   6    2      1
 1  5  24   12      2    1
 1  6 120  288     24    2    1
 1  7 72034560   6912   48    2    1
 1  85040*****************   96    2   1
 1  9**************************  192   2  1
 1 10*********      0    0    0***** 384  2 1

あと一息。@cure_honey さんの指摘に基づき*を+に変更。

# gfortran p487.F
root@0546c6fb4c77:/tmp# ./a.out
 1  1
 1  2   1
 1  3   3    1
 1  4   6    4      1
 1  5  10   10      5      1
 1  6  15   20     15      6      1
 1  7  21   35     35     21      7      1
 1  8  28   56     70     56     28      8      1
 1  9  36   84    126    126     84     36      9      1
 1 10  45  120    210    252    210    120     45     10      1

現状のソースは

p487.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806  
C	PASKAL
	CALL PASKAL
	CALL INSATU
	STOP
	END
	
	SUBROUTINE PASKAL
	INTEGER C, R
	COMMON /NCR/C(20,20)
	NMAX=20
	DO 1 N=1, NMAX
		C(N,1)=N
		C(N,N)=1
1	CONTINUE
	DO 2 N=3, NMAX
		DO 3 R=2, N-1
			C(N,R)=C(N-1,R-1)+C(N-1,R)
3		CONTINUE
2	CONTINUE
	RETURN
	END
	
	SUBROUTINE INSATU
	COMMON /NCR/K(20,20)
	DO 1 I=1,10
		WRITE(6,601) (K(I,J),J=1,I)
601		FORMAT(' 1', I3, I4, I5, 10I7, I5, I5, I5, I4, I3, I2)
1	CONTINUE
	RETURN
	END

p487-2.f

# gfortran p487-2.f 
p487-2.f:2:19:

 50 READA(5,100) N
                   1
Error: Expected comma in I/O list at (1)
p487-2.f:3:5:

 100 FORMAT(I3)
     1
Error: Non-numeric character in statement label at (1)
p487-2.f:3:5:

 100 FORMAT(I3)
     1
Error: Unclassifiable statement at (1)
p487-2.f:5:5:

 200 FORMAT(' ',5X,'N',7X,'KAIJOU',5X,'STIRLING')
     1
Error: Non-numeric character in statement label at (1)
p487-2.f:5:5:

 200 FORMAT(' ',5X,'N',7X,'KAIJOU',5X,'STIRLING')
     1
Error: Unclassifiable statement at (1)
p487-2.f:13:5:

 201 FORMAT(' ',I6,I13,F13,0)
     1
Error: Non-numeric character in statement label at (1)
p487-2.f:13:5:

 201 FORMAT(' ',I6,I13,F13,0)
     1
Error: Unclassifiable statement at (1)
p487-2.f:4:72:

  WRITE(6,200)
                                                                        1
Error: FORMAT label 200 at (1) not defined
p487-2.f:12:72:

  WRITE(6,201)N,KAI,STIRL
                                                                        1
Error: FORMAT label 201 at (1) not defined
p487-2.f:14:72:

  GOTO 50
                                                                        1
Error: Label 50 referenced at (1) is never defined

ソースは

p487.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806    
C	FACTIORIAL
50	READA(5,100) N
100 FORMAT(I3)
	WRITE(6,200)
200 FORMAT(' ',5X,'N',7X,'KAIJOU',5X,'STIRLING')
	IF(N.LE.0) STOP
	KAI=1
	DO 10 I=1,N
10	KAI=KAI*I
	AN=A
	STIRL=SQRT(2.*3.14159*AN)*(AN/2.71828)**N
	WRITE(6,201)N,KAI,STIRL
201 FORMAT(' ',I6,I13,F13,0)
	GOTO 50
	STOP
	END

50 READA(5,100) N
と本には,がない。
50 READA(5,100) , N
にしないとgfortranはコンパイルが通らないのかも。

201 FORMAT(' ',I6,I13,F13,0)
は,を.に訂正(誤植)。
201 FORMAT(' ',I6,I13,F13.0)

AN=A
のAをNに訂正(誤植)。
AN=N

再度コンパイル

# gfortran p487-2.f 
p487-2.f:4:11:

 50  READA(5,100) , N
           1
Error: FORMAT tag at (1) must be of type default-kind CHARACTER or of INTEGER
# 

この時点のソース

p487-2.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806  
C		FACTIORIAL
50		READA(5,100) , N
100 	FORMAT(I3)
		WRITE(6,200)
200 	FORMAT(' ',5X,'N',7X,'KAIJOU',5X,'STIRLING')
		IF(N.LE.0) STOP
		KAI=1
		DO 10 I=1,N
10			KAI=KAI*I

		STIRL=SQRT(2.*3.14159*AN)*(AN/2.71828)**N
		WRITE(6,201)N,KAI,STIRL
201 	FORMAT(' ',I6,I13,F13.0)
		GOTO 50
		STOP
		END

50 READA(5,100),N
READAじゃなくてREADだった。
50 READ(5,100)N

bash
# gfortran p487-2.f 
# ./a.out
10
      N       KAIJOU     STIRLING
     10      3628800          NaN

現在のソース

p487-2.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806  
C		FACTIORIAL
 50		READ(5,100)N
 100 	FORMAT(I3)
		WRITE(6,200)
 200 	FORMAT(' ',5X,'N',7X,'KAIJOU',5X,'STIRLING')
		IF(N.LE.0) STOP
		KAI=1
		DO 10 I=1,N
 10			KAI=KAI*I
		STIRL=SQRT(2.*3.14159*AN)*(AN/2.71828)**N
		WRITE(6,201)N,KAI,STIRL
 201 	FORMAT(' ',I6,I13,F13.0)
		GOTO 50
		STOP
		END

#p491.f

# gfortran p491.f 
p487-2.f:4:11:

 50  READA(5,100) , N
           1
Error: FORMAT tag at (1) must be of type default-kind CHARACTER or of INTEGER
root@0546c6fb4c77:/tmp# gfortran p491.f 
p491.f:7:19:

  90  FORMAT(' ', ’ーMR COURSE-')
                   1
Error: Unexpected element '\xe3' in format string at (1)
p491.f:9:6:

  100 FORMT(' ','I=DOBOK', 1X,'2=KIKAI',1X,'3=DENKI',1X,
      1
Error: Unclassifiable statement at (1)
p491.f:10:9:

     +'4=OBUTU',1X,'5=GENSI',1X,'6=JOUHO')
         1
Error: Unclassifiable statement at (1)
p491.f:15:7:

  20  FIRNAT(I5,F10.2)
       1
Error: Unclassifiable statement at (1)
p491.f:17:7:

   DO 2 I-1,N
       1
Error: Unclassifiable statement at (1)
p491.f:24:8:

    S-S+HH(I)
        1
Error: Unclassifiable statement at (1)
p491.f:28:7:

   DO 12 I-1,N
       1
Error: Unclassifiable statement at (1)
p491.f:29:24:

    SS=(HH(I)-HEIKIN(N)**2+SS
                        1
Error: Expected a right parenthesis in expression at (1)
p491.f:6:72:

   WRITE(6,90)
                                                                        1
Error: FORMAT label 90 at (1) not defined
p491.f:8:72:

   WRITE(6,100)
                                                                        1
Error: FORMAT label 100 at (1) not defined
p491.f:14:72:

    READ(5,20)LL(I),HH(I)
                                                                        1
Error: FORMAT label 20 at (1) not defined
p491.f:23:12:

   DO 11 U=1,N
            1
Warning: Deleted feature: Loop variable at (1) must be integer

最初の入力は

p491.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806  
C		URIAGE
C		HEIKIN, HYOUJUN HENSA, SAIDAI, SAISHOU
		INTEGER LL(200)
		REAL HH(200), S, SS, HEIKIN, BUNSAN, SIGMA
		INTEGER N, I
		WRITE(6,90)
 90		FORMAT(' ', ’ーMR COURSE-')
		WRITE(6,100)
 100	FORMT(' ','I=DOBOK', 1X,'2=KIKAI',1X,'3=DENKI',1X,
	   +'4=OBUTU',1X,'5=GENSI',1X,'6=JOUHO')
	   READ(5,10)N
 10		FORMAT(I5)
		DO 1 I=1,N
			READ(5,20)LL(I),HH(I)
 20		FIRNAT(I5,F10.2)
 1		CONTINUE
		DO 2 I-1,N
			WRITE(6,30)LL(I),HH(I)
30			FORMAT('  SENKOU',I4,4X,'WARIAI'F6.2)
 2		CONTINUE
C		HEIKIN,HYOUJUNHENSA
		S=0.0
		DO 11 U=1,N
			S-S+HH(I)
 11		CONTINUE
 		HEIKIN=S/REAL(N)
		 SS=0.0
		DO 12 I-1,N
			SS=(HH(I)-HEIKIN(N)**2+SS
 12		CONTINUE
 		BUNSAN=SS/REAL(N)
		 SIGMA=SQRT(BUNSAN)
		WRITE(6,40)HEIKIN
 40		FORMAT(' HEININ0',7X,F4.2)
 		WRITE(6,50)SIGMA
 50		FORMAT(' HYOUJUN HENSA=',F4.2)
C		saidai, saishou
		KMIN=1
		KMAX=1
		DO 22 I=2,N
			IF(HH(I).LT.HH(KMIN))KMIN=1
			IF(HH(I).GT.HH(KMAX))KMAX=1
 22		CONTINUE
		WRITE(6,60)HH(KMIN),LL(KMIN)
 60		FORMAT(' MIN=',4X,F10.2,3X,'SENKOU=',I5)
 		WRITE(6,80)HH(KMAX),LL(KMAX)
 80		FORMAT(' MAX=',4X,F10.2,3X,'SENKOU',I5)
 		STOP
		END

継続行の+印の前の空白文字の数

 +'4=OBUTU',1X,'5=GENSI',1X,'6=JOUHO')

+の前の空白が正確に5文字必要で、タブで代替すると今のところうまく行っていない。

2バイト文字混入

90 FORMAT(' ', ’ーMR COURSE-')
2バイト文字が入っていた。
90 FORMAT(' ', ’-MR COURSE-')

予約語(FORMAT)打ち間違い

100 FORMT(' ','I=DOBOK', 1X,'2=KIKAI',1X,'3=DENKI',1X,

100 FORMAT(' ','I=DOBOK', 1X,'2=KIKAI',1X,'3=DENKI',1X,

20 FIRNAT(I5,F10.2)

20 FORMAT(I5,F10.2)

変数間違い

DO 11 U=1,N
は、
DO 11 I=1,N

演算子間違い

	DO 2 I-1,N


DO 2 I=1,N

	DO 12 I-1,N


DO 12 I=1,N

		S-S+HH(I)


S=S+HH(I)

その他の打ち間違い

		SS=(HH(I)-HEIKIN(N)**2+SS


SS=(HH(I)-HEIKIN)**2+SS

bash
# gfortran p491.f 
# ./a.out
 -MR course-
 I=DOBOK 2=KIKAI 3=DENKI 4=OBUTU 5=GENSI 6=JOUHO
6
5
4
3
2
1
0
  SENKOU   5    WARIAI  0.00
  SENKOU   4    WARIAI  0.00
  SENKOU   3    WARIAI  0.00
  SENKOU   2    WARIAI  0.00
  SENKOU   1    WARIAI  0.00
  SENKOU   0    WARIAI  0.00
 HEININ0       0.00
 HYOUJUN HENSA=0.00
 MIN=          0.00   SENKOU=    5
 MAX=          0.00   SENKOU    5

文字の誤植を直し、コンパイル、実行。

bash
# fortran p491.f
# ./a.out
 -MR COURSE-
 I=DOBOK 2=KIKAI 3=DENKI 4=OBUTU 5=GENSI 6=JOUHO
6
1	0.25
At line 14 of file p491.F (unit = 5, file = 'stdin')
Fortran runtime error: Bad value during integer read

Error termination. Backtrace:
#0  0x7f3fb5daa32a
#1  0x7f3fb5daaed5
#2  0x7f3fb5dab69d
#3  0x7f3fb5f1f34c
#4  0x7f3fb5f2339c
#5  0x7f3fb5f2472c
#6  0x564623933bf9
#7  0x564623934164
#8  0x7f3fb59bfbf6
#9  0x564623933929
#10  0xffffffffffffffff

入力は、最初に何個値を入れるか。
次に、2つの数値の値を順に入れるはず。

p491.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806  
C		URIAGE
C		HEIKIN, HYOUJUN HENSA, SAIDAI, SAISHOU
		INTEGER LL(200)
		REAL HH(200), S, SS, HEIKIN, BUNSAN, SIGMA
		INTEGER N, I
		WRITE(6,90)
90		FORmat(' ','-MR COURSE-')
		WRITE(6,100)
100		FORMAT(' ','I=DOBOK', 1X,'2=KIKAI',1X,'3=DENKI',1X,
     +'4=OBUTU',1X,'5=GENSI',1X,'6=JOUHO')
	   READ(5,10)N
10		FORMAT(I5)
		DO 1 I=1,N
			READ(5,20)LL(I),HH(I)
20		FORMAT(I5,F10.2)
1		CONTINUE
		DO 2 I=1,N
			WRITE(6,30)LL(I),HH(I)
30			FORMAT('  SENKOU',I4,4X,'WARIAI'F6.2)
2		CONTINUE
C		HEIKIN,HYOUJUNHENSA
		S=0.0
		DO 11 I=1,N
			S=S+HH(I)
11		CONTINUE
 		HEIKIN=S/REAL(N)
		 SS=0.0
		DO 12 I=1,N
			SS=(HH(I)-HEIKIN)**2+SS
12		CONTINUE
 		BUNSAN=SS/REAL(N)
		 SIGMA=SQRT(BUNSAN)
		WRITE(6,40)HEIKIN
40		FORMAT(' HEININ0',7X,F4.2)
 		WRITE(6,50)SIGMA
50		FORMAT(' HYOUJUN HENSA=',F4.2)
C		saidai, saishou
		KMIN=1
		KMAX=1
		DO 22 I=2,N
			IF(HH(I).LT.HH(KMIN))KMIN=1
			IF(HH(I).GT.HH(KMAX))KMAX=1
 22		CONTINUE
		WRITE(6,60)HH(KMIN),LL(KMIN)
 60		FORMAT(' MIN=',4X,F10.2,3X,'SENKOU=',I5)
 		WRITE(6,80)HH(KMAX),LL(KMAX)
 80		FORMAT(' MAX=',4X,F10.2,3X,'SENKOU=',I5)
 		STOP
		END

p491-2.f

# gfortran p491-2.f
p491-2.f:4:17:

   READ(5,100)
                 1
Error: Syntax error in READ statement at (1)
p491-2.f:26:7:

   DO 10 I-1,N
       1
Error: Unclassifiable statement at (1)
p491-2.f:31:23:

    SYY=SYY+YY(I)*:2
                       1
Error: Invalid character in name at (1)
p491-2.f:37:7:

     1 /(SQRT(SXX-FN*XMEAN**2)
       1
Error: Invalid character in name at (1)
p491-2.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806  
C		correlation coefficient
C		MAIN PROGRAM
		DIMENSION X(99),Y(99)
		READ(5,100
100		FORMAT(I5)
		READ(5,110)(X(I),Y(I),I=1,N)
110		FORMAT(2F10.3)
		WRITE(6,105)
105		FORMAT(' OCCUPIED RATE',3X,'UNEXAMINED ENTRANT RATE')
		WRITE(6,120)(X(I),Y(I),I=1,N)
120		FORMAT(F10.3,4X,F10.3)
		R=SOKAN(N,X,Y)
		WRITE(6,200)R
200 	FORMAT(' ','SOUKAN KEISUU=',F10.4)
		STOP
		END
		
C 		SUBPROGRAM
		FUNCTION SOUKAN(N,XX,YY)
		DIMENSION XX(99),YY(99)
		SX=0.0
		SY=0.0
		SXY=0.0
		SXX=0.0
		SYY=0.0
		DO 10 I-1,N
			SX=SX+XX(I)
			SY=SY+YY(I)
			SXY=SXY+XX(I)*YY(I)
			SXX=SXX+XX(I)**2
			SYY=SYY+YY(I)*:2
10		CONTINUE
		FN=N
		XMEAN=SX/FN
		YMEAN=SY/FN
		SOKAN=(SXY-FN*XMEAN*YMEAN)
    1	/(SQRT(SXX-FN*XMEAN**2)
	2	*SQRT(SYY-FN*YMEAN**2))
	 RETURN
	 END
	 

p502.f

# gfortran p502.f
p502.f:3:7:

   DIMENSION X(100),(100)
       1
Error: Unclassifiable statement at (1)
p502.f:6:7:

    DO 1 I-1,N
       1
Error: Unclassifiable statement at (1)
p502.f:7:19:

    READ(5,20)X(I),Y(I)
                   1
Error: Syntax error in READ statement at (1)
p502.f:9:12:

   WRITE'6,22)(I,X(I),Y(I),I-1,N)
            1
Error: Syntax error in WRITE statement at (1)
p502.f:21:7:

   DO 3 I-1,N
       1
Error: Unclassifiable statement at (1)

D(5,20)X(I),Y(I)
                   1
Error: Syntax error in READ statement at (1)
p502.f:9:12:

   WRITE'6,22)(I,X(I),Y(I),I-1,N)
            1
Error: Syntax error in WRITE statement at (1)
p502.f:21:7:

  

最初のソースは

p502.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806  
C		LEAST SQUARE, Y=AX+B
C		NUMBER OF MR YS NUMBER OF DR
		DIMENSION X(100),(100)
		READ(5,10)N
 10		FORMAT(I5)
 		DO 1 I-1,N
			READ(5,20)X(I),Y(I)
 20		FORMAT(' ','DEPT.',3X,'NO.OF MR',3X,'NO.OF DR')
		WRITE'6,22)(I,X(I),Y(I),I-1,N)
 22		FORMAT(I5,3X,F8.0,3X,F8.0)
		SX=0.0
		SY=0.0
		DO 2 I=1,N
			SX=SX+X(I)
			SY=SY+Y(I)
 2		CONTINUE
		XM=SX/REAL(N)
		YM=SY/REAL(N)	
		S1=0.0
		S2=0.0 
		DO 3 I-1,N
			S1=S1+(X(I)-XM)*(Y(I)-YM)
			S2=S2+(X(I)-XM)**2
 3		CONTINUE
 		A=S1/S2
		B=YM-A*XM
		WRITE(6,30)A
 30		FORMAT(' ','A=',F12.5)
 		WRITE(6,40)B
 40		FORMAT(' ','B=',F12.5)
 		STOP
		END
bash
./a.out
9
34.	11.
At line 7 of file p502.f (unit = 5, file = 'stdin')
Fortran runtime error: Bad value during floating point read

Error termination. Backtrace:
#0  0x7f595bf1332a
#1  0x7f595bf13ed5
#2  0x7f595bf1469d
#3  0x7f595c088d6d
#4  0x7f595c08c0a8
#5  0x7f595c08d72c
#6  0x555aa5d17b31
#7  0x555aa5d17fb1
#8  0x7f595bb28bf6
#9  0x555aa5d17929
#10  0xffffffffffffffff

現状のソース

p502.f
C       演習 大学院入試問題[数学]II姫野 俊一 p.487
C       https://bookmeter.com/books/233806  

C		LEAST SQUARE, Y=AX+B
C		NUMBER OF MR VS NUMBER OF DR
		DIMENSION X(100),Y(100)
		READ(5,10)N
 10		FORMAT(I5)
 		DO 1 I=1,N
			READ(5,20)X(I),Y(I)
 20		FORMAT(2F10.0)
 1		CONTINUE
 		WRITE(6,21)
 21		FORMAT(' ','DEPT.',3X,'NO.OF MR',3X,'NO.OF DR')
		WRITE(6,22)(I,X(I),Y(I),I=1,N)
 22		FORMAT(I5,3X,F8.0,3X,F8.0)
		SX=0.0
		SY=0.0
		DO 2 I=1,N
			SX=SX+X(I)
			SY=SY+Y(I)
 2		CONTINUE
		XM=SX/REAL(N)
		YM=SY/REAL(N)	
		S1=0.0
		S2=0.0 
		DO 3 I=1,N
			S1=S1+(X(I)-XM)*(Y(I)-YM)
			S2=S2+(X(I)-XM)**2
 3		CONTINUE
 		A=S1/S2
		B=YM-A*XM
		WRITE(6,30)A
 30		FORMAT(' ','A=',F12.5)
 		WRITE(6,40)B
 40		FORMAT(' ','B=',F12.5)
 		STOP
		END

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

文書履歴(document history)

ver. 0.01 初稿 20210326
ver. 0.02 書籍表紙、p487-2.f 追記 20210327
ver. 0.03 docker記事、p491.f 追記 @cure_honey さんの指摘により訂正。20210328
ver. 0.04 p491-2.f 追記 20210329
ver. 0.05 p502.f 追記 20210330
ver. 0.06 書式補正 20221211

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

このエントリーをはてなブックマークに追加

4
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4