— 27 —SENAC Vol. 45, No. 4（2012.10）

  3>H8=F0C?G0	
 
?	
  ǳɲĮ

®¾ÃÁiøĀč	
  ?	
 

Ǖĝ	
  ìŢ	
 
ƊĔŀŇǑŗŇɋɠƶɠńŗŇǧ	
 

	
 
	
 
ĉĮn 2575%1 mĸƞǝkƎƻi¼ÃmĀlRJ¯À¼¶mƘPƑleJgȬƓYvYaE
VVvhmǣȮæKbThɯĖǑǝlnj k¯À¼¶åVizğȐh[ɰ¯À¼¶inȤǷƮlÖÐX]aymżɥh[N~ɯ_tj©¼¡nIv] ɰĐåmȊ
ȺYƘRaym (2 Ǝ{ɯƟÝāŖm ,* ƎOæJVk]oɯȤǷƮmȐčmti jæJ
Vk[ViOhPv[ɰ	 YNYɑJ¯À¼¶ƘRiPnɯ·Á¡¥ÁmY{[XȎŷYgƘNkTokv] ɰ¯À¼¶OǤToùâȟkO~ {ïƱOhPv[OɯɑRki lƖɕONNɯȟȖiYl}ïƱµOȰVğȐŰzɬRkv[ɰȟȖiYɗSlnãşzȟǠ[ŭȞOIɯ ƖɕnX~lļŀYv[ɰ	 Vm·Á¡¥ÁōƔl[żƻmÄeO@®¾ÃÁAh[ɰ®¾ÃÁin·Á¯À¼¶iĤZ¿°¾mɓZa¯À¼¶mVihɯŭȞlŮZg×m¯À¼¶N~ĩpĀ
Yg_mƮȐæJv[ɰɑJ¯À¼¶®¾ÃÁlāČYɯ_~«¾¢Á®ÀiYgùâƩŹ[oɯ¯À¼¶åŹ{ïƱmåƦOƨlkv[ɰÔĮnVm®¾
ÃÁmåƑiæJƑȬƓYv[ɰ	 ¯À¼¶nȤǷX]bThnųĨOIv] ɰȄƣĀčYgĄygňȄYv[ɰVvhnɯzdizĕǽk 35,17 ƎhiIL\ǗɢlȚǦ[ƑƻædgPvYaOɯÔĮnłwlŮZgƌòmȚǦťŠĽLƑƻ{ɯ­¾líņ[ƑƻleJgȬƓYv[ɰX~l¢Ãøč[Vih¯À¼¶ĽƗ]\lĐåĽLƑƻleJgzȬƓYv[ɰ	 	  1<DH6G	
 	  1<DH6G"Roqp	
 @¾ÃÁAinɯĐåɔŃǆiȁÎǆOŉȌXgJɓZa¯À¼¶żɥǦ[ǔȫh[ɰ¯À¼¶ȰĐYaiPlƚĄlĐå[mn·Á¯À¼¶h[OɯV@·Á¾ÃÁAizJJv[ɰ@®¾ÃÁAnɯ·Á¯À¼¶iĤƪlĐåɔŃǆiȁÎǆƁdgJv[Oɯ·Á¯À¼¶iǚkɯĕǎhĐå[VinhPv] ɰŭ\ɯ×m¾
ÃÁlĐåɔŃĪÚȥȻYgɯŭȞlŮZgŋșX]ŭȞOIv[ɰÄem¯À¼¶l·Á¯À¼¶nÄeh[Oɯ®¾ÃÁnĥĉOǚkoȝƌņĳYgzNvJv] ɰ
vaɯJReNm¾ÃÁWil­¾åŹYgąFlÁª¾YɯŭȞlŮZgȄģɭ½
ÁɮX]VizğȐh[ɰ	 	 ®¾ÃÁĆǔ[ǟǝnÌiYgɳeIv[ɰ	 	 ȝƌmĺŻhĤZȤǷżɥæǔ[ay	 	 ƑǪŠmȢƻ{șăŠmȤǷkjm}KkŉĵÿǑ[ay	 	 ɑJ¯À¼¶āČYg·Á¡¥ÁōƔl[ay	
 O®¾ÃÁƞƠmæJƑh[ɰIÄɂmżɥȝƌmĺŻhæKiPɯ_`mĺŻlĤZ¯À¼¶ƘRiɯ¯À¼¶OɑRkYɯïƱmɝlãŻzĤZïƱYkT
okv] ɰVmiPɯ_mżɥ®¾ÃÁlȋPƉLoɯ¯À¼¶nǤRkYɯ åƦzǤȉXv[ɰ	 — 28 —

SENAC Vol. 45, No. 4（2012.10）

	 nǛœX]azmh[ɰȝɟkƌŇúŠ{ƸǔŰmIƌòȤǷ¾½¶¯À
¼¶ËlǠƆȥȻ[iPnɯ¯À¼¶ËhŌȣXaĽƌ{ɍăædgƘPv[ɰVmayɯĤZȤǷżɥąm¯À¼¶hæJaRgz_mvvæLinəv] ɰ_VhȤǷżɥ®¾ÃÁlYgɯȤǷlŭȞkƌòÈLɋāiȤǷȄƣmƌòĜTěɋābTOľɋN~ȟL}KlYgMPv[ɰ_K[oɯĜTǂYɋƘPƉLbThɯȝɟkȤǷżɥȔFk¯À¼¶N~Ćǔ[ViOhPv[ɰVm}Kl®¼ ² ĒYa®¾ÃÁnɯ×mÓlƈèYaɯ×mÓN~z~dgĆǔ[VizğȐhɯ_m}KkƸǔŰmI®¾ÃÁɞyazmOɯ@¼®¼½Ah[ɰ	 XgɯȤǷƮµº¿Ã»Ám}KlĿƌmȢƢżɥȝģYa¯À¼¶ƘRĺģlnɯmǟǝOɎȞlkv[ɰƪFkǋǑɅǪmȤǷ{ɯøĀčlɖ[åƦkjɯIǪşvivdaýōWil®¾ÃÁl[mh[ɰƎǱhJLoɯǱ{ǸlāČ[}Kkzmh[ɰVmayɯ·Á¯À¼¶lnɯ_`m®¾ÃÁĩpĀ[ƎiɯŭȞk~_~ȊȺ[aym (2 ƎbTƘJgMPv[ɰµº¿Ã»Á¯À¼¶nɯ®¾ÃÁiJKɋīædgȂwǰgzmbiȎLoJJhY|Kɰ	
 ®¾ÃÁlāČYgMToɯ¯À¼¶m·Á¡¥ÁOƨlkv[ɰVnɯ_`m¾ÃÁOǎǰYgJmhɯ¯À¼¶ïƱYaiPmŦɣ{ɯ¼ÃOǛǓ[ĖįO¾ÃÁýləŉXN~h[ɰ	
 	
 

	
  1<DH6G"_wY#P	 ®¾ÃÁn 68&5287,1) ƎhɔŃŌȣYɯ)1(	 68&5287,1) ƎhȁÎYv[ɰ[kcɯƯm}KkƩɁlYv[ɰ	 68&5287,1)	
 68&5	 	 	 ,03/,',7	 121)	 	 	 5)%/	 % &	 	 	 ,17)+)5	
 ,	
 
	
 	
 	
 	
 
	
 
	
 	
 	
 	
 
	
 
)1(	
 68&5287,1)	
 68&5	 ÷ɧm 68&5287,1) Ǝhɯ68&5287,1) mũlƂŉYaƎŅăɭVmçhn 68&5ɮ@®¾ÃÁĥAiJJv[ɰvaɯƚũm )1(	 68&5287,1)Ǝlz®¾ÃÁĥƂŉYv[ɰȟgN}Klɯ·Á¯À¼¶iĤZƩɁh[ɰ®¾ÃÁýɋm¯À¼¶mƘPƑzĸƞǝ
l·Á¯À¼¶iĤZhɯ68&5287,1) ƎmƯl ,03/,',7	 121)ƘPɯɡŋșƎÅƑlɞǼYgɯ_mũlŋșƎƘPv[ɰ®¾ÃÁn_ȑâhɓZgJmhɯŋșƎËhæ
KĽƌ{ɍănɯĸƞǝl_mýɋhŌȣYkTokv] ɰabYɯǚk¾ÃÁɕhûǔğȐkĽƌąȿǔų[VinğȐh[ɰVleJgnɯ  ǸhȬƓYv[ɰ	 Åmçhnɯ68&5287,1) Ǝl®¾ÃÁĥYNIv] OɯV@šƌkY®¾ÃÁAiJJv[ɰVlŏYgɯ®¾ÃÁĥmũlɯNdVhİ bĽƌ½£ØĎ[ViOhPɯV@šƌI®¾ÃÁAiJJv[ɰÛÆlçǦYv[ɰ	 68&5287,1)	
 68&5; 0 < 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; < % & = 	 	 	 ,17)+)5	
 0 1 , .	
 
	
 	
 	
 	
 
	
 
	
 	
 	
 	
 
	
 
)1(	
 68&5287,1)	
 68&5	 ½£ËmĽƌ@šƌAiJJv[ɰVmçhnɯ; 0 < 1 Ošƌh[ɰšƌnɯ®¾Ã
Ái_m®¾ÃÁæK¾ÃÁmɕhƌòĜTǂ[mlæJv[ɰšƌz®¾ÃÁýɋmĽƌkmhɯŭȞkĵlŮZaŌȣYkTokv] ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 29 —

®¾ÃÁĐåX]g_mƮȐæKiPnɯ'%// Ǝædg_m®¾ÃÁƂĥYv[ɰVmayɯ®¾ÃÁƂĥ[Viɯ@®¾ÃÁĩpĀ[AiN@Ã¾[A
iJJv[ɰ'%// ƎnÛÆm}KkťŠh[ɰ	 '%//	 ®¾ÃÁĥ	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
 	
  	
  	
 šƌkY®¾ÃÁǔ	 '%//	 ®¾ÃÁĥƌòvanĽƌm½£	
 	
 	
 	
 šƌI®¾ÃÁǔ	 çLoɯ÷tjĀgPaɯšƌkYišƌImÑem®¾ÃÁæKiPnɯ_`ɯƯmim}KlÃ¾Yv[ɰ	 	  5)%/	 =	 	  ,17)+)5	
 0	
 	
  '%//	
 68&5	
 	
 	
 	
 	
 	
 	
 	
 	
 
	
  0	
 	
 	
 
	
  '%//	
 68&5
= 0	
 	
 	
 	
 	
 	
 	
 	
 	
 

	
 
	
 	
 

ĉĮȬƓYa}KlɯȤǷŠnȤǷȄƣmƌòĐåĪÚlÈLmhɯ'%// ƎmšƌlnɯmÄǙĠm}KlȤǷŠÈLVizhPv[ɰ	 ®¾ÃÁnĕǎhnĐåhPkJmhɯ·Á¯À¼¶OąȿŭȞh[ɰçLoɯƯm}Kk £ƩŹYgĄygÄem¯À¼¶OňŹYv[ɰ	 352+5%0	
 67)67	 	 	 	 ,03/,',7	 121)	 	 	 	 5)%/	
 ; <	
 
	
 	
 	
 ;	
 	
  	
 
	
 	
 	
 <	
 	
 
	
 
	
 	
 	
 '%//	
 68&5; <  	
 
	
 	
 	
 35,17	  ; <	 )1(	 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5; < 1	
 
	
 	
 	
 ,03/,',7	 121)	 	 	 	 5)%/	
 ; <	
 
	
 	
 	
 ,17)+)5	
 1	
 
	
 	
 	
 ;	
 	
 1	
 
	
 	
 	
 <	
 	
 <;	
 
)1(	
 68&5287,1)	
 68&5	
 VVhnɯ·Á¯À¼¶÷lɯ®¾ÃÁũlƘPvYaOɯȾhzNvJv] ɰ®¾ÃÁOȝƌņĳ[ĺģzɯ¾ÃÁȥȻ[ɥǙnŋșȄƣinǇɖëh[ɰ®
¾ÃÁmËN~ąm®¾ÃÁÃ¾[VizğȐh[ɰ	 Åȥm¯À¼¶ŋșmƽıɱlǦYv[ɰ	 メインプログラムプログラム領域
program stest1
implicit none
real x,yx = 5.0
y = 100.0
call subr(x,y,10)
print *,x,y
end program stest1

実
行
の
流
れ

サブルーチンプログラム領域
subroutine subr(x,y,n)
implicit none
real x,y
integer nx = ny = y*x
end subroutine subr	 ıɱɰ®¾ÃÁmĩpĀYiŋșmƽ	 — 30 —

SENAC Vol. 45, No. 4（2012.10）

ım}Klɯ·Á¯À¼¶m '%// Ǝh®¾ÃÁƂĥ[iɯ®¾ÃÁmÄǙƚ
ĄmŋșƎlĐåOǩɯ®¾ÃÁýɋmĐåOňÎ[iɯÃ¾Ya·Á¯À¼¶lźdgɯ_m '%// ƎmƯmƎN~ŋșȆȇYv[ɰ	 ƟÝlŮZgɯȿËh®¾ÃÁmÿǑŽcĂdgźiPln 5)7851 ƎǔJv[ɰ	 68&5287,1)	
 68&5; < 0 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	 ; <	 	 	 ,17)+)5	
 0 1	
 
	
 	
 	
 	
 
	
 
	
 	
 ,*	
 0 	 5)7851	
 
	
 	
 	
 	
 
	
 
)1(	
 68&5287,1)	
 68&5	
 Vmçhnɯ0ɹ miPl®¾ÃÁmÿǑOȁÎYɯÃ¾Ya¾ÃÁlźv[ɰVVh 5)7851 ƎmÙl 6723 ƎǔJoɯ¯À¼¶ȑâOȁÎYv[ɰ	 	  1<DH6GNz"]eae	 ®¾ÃÁýɋhŌȣYaĽƌ{ɍănɯ·Á¯À¼¶{×m®¾ÃÁN~ǎǰY
gJv[ɰ[kcɯĤZĥĉædgzùRąmĽƌh[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; <	
 
	
 	
 ;	
 	
  	
 
	
 	
 <	
 	
  	
 
	
 	
 '%//	
 68&5	 )1(	 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5	 	 	
 ,03/,',7	 121)	 	 	 5)%/	 ; <	 	 	 35,17	  ; <	 )1(	
 68&5287,1)	
 68&5	 iƘJgzɯ®¾ÃÁËm 35,17 Ǝl}dgĀčX ; i < n·Á¯À¼¶hÙøYaihnkRɯùRǇɖëkƌŅh[ɰȾlȣLoɯ×m¾ÃÁhmŌȣƶl]\lĽƌ{ɍămĥĉƹyViOhPv[ɰVm¾ÃÁýɋhmwƛďkĽƌ@ÀÃ¾ĽƌAiJJv[ɰ	 Åȥm¯À¼¶ƜŨɀõN]aylɯÃ¾ô¾ÃÁmƌò®¾ÃÁlßLmOšƌh[ɰçLoɯÅȥm¯À¼¶ÛÆm}KlƘPǠ]oɯ®¾ÃÁËm 35,17
ƎhĀčX ; i < nɯ·Á¯À¼¶iĤZ ilkv[ɰ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; <	
 
	
 	
 ;	
 	
  	
 
	
 	
 <	
 	
  	
 
	
 	
 '%//	
 68&5; <	
 )1(	 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5; <	 	 	 ,03/,',7	 121)	 	 	 5)%/	 ; <	 	 	 35,17	  ; <	 )1(	
 68&5287,1)	
 68&5	 šƌnɯƌòmĜTǂY[aymǯĝlɅQkJmhɯ	 '%// ômšƌi 68&5287,1) ômFortran スマートプログラミング —第２回

šƌmĽƌĥĤZl[ŭȞnIv]
Yv[ɰ	 サブルーチンと入出力—— 31 —

ɰƯm®¾ÃÁlȋPNLgzùRĤZĐå

68&5287,1)	
 68&5% &	 	 	 ,03/,',7	 121)	 	 	 5)%/	 % &	 	 	 35,17	  % &	 )1(	
 68&5287,1)	
 68&5	 
ľɋN~mŦɣĜTaɯľɋlŦɣÈLɯiJKŰȯƁeViɚToɯšƌzÀÃ¾Ľƌh[ɰ[kcɯÃ¾Ya¾ÃÁN~_mȩǿnȟLv] ɰȟLmnɯšƌiJKǯĝmÊpbTh[ɰVmayɯšƌI®¾ÃÁæKiPlɎȞk³Á£nɯ	 	  	 šƌmƌ	 	 	 	 ŏŮ[šƌmĵ	 O '%// Ǝi 68&5287,1) ƎihÄȒYgJkTok~kJVih[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	 =	 	 	 ,17)+)5	
 1	
 
	
 	
 =	
 	
 
	
 
	
 	
 1	
 	
 	
 
	
 	
 '%//	
 68&5
= 
1	 )1(	
 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5; < 0 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	 ; <	 	 	 ,17)+)5	
 0 1	
 
	
 	
 35,17	  ; < 0 1	 )1(	 68&5287,1)	
 68&5	
 iJK¯À¼¶hnɯȚɱm}KkŏŮlkdgJv[ɰ	 Țɱɰ®¾ÃÁmšƌŏŮ	 '%// Ǝ	 68&5287,1) Ǝ	
 
ƌòĵ	
 


	
 

;	
 

ŋƌ	
 

=	
 

<	
 

ŋƌ	
 



0	
 

ƍƌ	
 

	
 

1	
 
1	
 
ƍƌ	
 
	
 
VVhƼų[sPkmnɯǳ  šƌm ; nŋƌĵkmhŋŉƌ ÈLɯǳ  šƌm 0 nƍƌĵkmhƍŉƌ  ÈLgJVih[ɰzYɯǳ  šƌlĤZųĨbKiůdg  iJKƍŉƌÈLiɯŋșƖ¼Ãlkv[ɰ	 ®¾ÃÁýɋmŋșƎhɯšƌlƌòÙø[iɯ'%// ƎmŏŮ[šƌlÈLaĽƌ
l_mƌòOÙøXv[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; < 3	
 
	
 	
 ;	
 	
  	
 
	
 	
 <	
 	
  	
 
	
 	
 '%//	
 68&5;< 	 	 35,17	  ; < 3	
 )1(	
 352+5%0	
 67)67	 3	 — 32 —

SENAC Vol. 45, No. 4（2012.10）

68&5287,1)	
 68&5; < =	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; < =	
 
	
 	
 =	
 	
 ;<	
 
)1(	
 68&5287,1)	
 68&5	 	 iƘRiɯ®¾ÃÁËm ; nÃ¾ôm ;<ɯ[kc hIɯ®¾ÃÁËm < nÃ¾ôm kmhɯ®¾ÃÁËm = ln ;< mȤǷȄƣhI OÙøXv[ɰVmiPɯ= Ošƌkmhɯ'%// ƎmŏŮ[áȋlIĽƌ 3 l OÙøXɯ'%// ƎmƯm 35,17 Ǝhn ;ɯ<ɯ3 iYgɯOĀčXv[ɰ	 Vm}Kl®¾ÃÁmšƌlƌòÙø[Vihɯ'%// ƎmšƌĽƌlÙøXƌò
@źòAiJJv[ɰźòæLoɯ®¾ÃÁmĐåhŪ~aȄƣÃ¾ôhĜ
TěViOhPv[ɰabYɯ'%// ƎmšƌlnŉƌÈLaȤǷŠƘJgz}JɯiȻ
svYaOɯźòƂŉ[šƌnąhɯŭ\ĽƌNɍălYkTokv] ɰǑǖƯǸhȬƓYv[ɰ	 	  DH6G|!(7H5"Vl|d+9E3	
 ¾ÃÁɕmekOzKŒYȩYRȎLgwvY|KɰĢ¾ÃÁnĸƞǝl¯À¼¶ɦķi¢ÃɦķN~ƩŹXgJv[ɰ¯À¼¶ɦķinƎŅɀ¯À¼¶ĪÚOȥɐX
gJɦķmVihIɯ¢ÃɦķinĽƌ{ɍămaylǔųXa·¸½ɦķmVih[ɰ¯À¼¶ǝlnɯĽƌ{ɍămŌȣƎO¢ÃɦķmƂŉųĨYgJv[ɰ	 Ľƌ{ɍăOĢ¾ÃÁWilŌȣXkTok~kJmnɯ¢ÃɦķOĢ¾ÃÁ_`lØŔYgJN~h[ɰVmayɯıɲm}Klǚk¾ÃÁhĤZĥĉmĽƌŌȣYgzɯ_~nąm¢ÃɦķlŻŔYgJv[ɰVOÀÃ¾Ľƌh[ɰÀÃ¾Ľƌnɯ_m¾ÃÁýɋN~YNĘǈ[ViOhPv] ɰ	 メインプログラム

サブルーチンプログラム領域参照program stest1
implicit none
real x,yx = 5.0
y = 100.0
call subr
print *,x,y
end program stest1
データ領域
x

5.0

y

100.0

参
照
で
き
な
い

プログラム領域
subroutine subr
implicit none
real x,yx = 10.0
y = 25.0
end subroutine subr
参
照

データ領域
x

10.0

y

25.0

	
 
ıɲɰ¯À¼¶ɦķi¢Ãɦķ	 VmayɯI¾ÃÁhȤǷYaƌòąm¾ÃÁhæKlnǌąkżȇPOŭȞlkv[ɰVOšƌh[ɰšƌæLoɯÃ¾ôm¾ÃÁi®¾ÃÁmɕh¢Ã{i[ViOhPv[ɰhnɯüâǝljK{dg¢ÃmĜTǂYYgJmhY|Kɰ	 ¢Ã®¾ÃÁlǂ[żƳiYgɯzdizĕǽlȎL~mnɯšƌmƌòǠƆ®¾ÃÁmĽƌlÙø[Vih[ɰıɳȟgÆXJɰım}KlɯÃ¾ômšƌ ; i< mýōɭVmçhn  i ɮOɯ®¾ÃÁmšƌiYgŌȣXaĽƌɯ% i & lÙøXgJv[ɰVmƑŠnɯšƌmòǠƆǂYgĩpĀ[ɯiJKųĨh@'%//	
 &<	
 9%/8)AFortran スマートプログラミング —第２回

サブルーチンと入出力— 33 ——

iĩogJv[ɰ@'%//	
 &<	
 9%/8)AnɯÃ¾ôN~®¾ÃÁôrmòmšǂYleJgnĬɨIv] ɰ ȣȫnVmƑŠƅǔYgJv[ɰ	 メインプログラム

サブルーチンプログラム領域
program stest2
implicit none
real x,yx = 5.0
y = 100.0
call subr(x,y)
print *,x,y
end program stest2

数値を直接代入

データ領域
x

5.0

y

100.0

プログラム領域
subroutine subr(a,b)
implicit none
real a,b
print *,a,bb = a+25.0
end subroutine subr

送
り
返
せ
な
い

こ
ち
ら
へ
代
入

データ領域
a

5.0

b

100.0

	
 

ıɳɰ@'%//	
 &<	
 9%/8)Aæda¢ÃǂYhnɯòȽȺ]kJ	 YNYɯVmƑŠhnɯ®¾ÃÁôhåŹYa¢ÃÃ¾ôlź[VinhPv] ɰ®¾ÃÁnɯÃ¾ôN~Ƚ~gPa@òAnNmh[Oɯ_ÛÅmŲĹOkJmhɯÃ¾ômjVl¢ÃÙø[oJJNN~kJN~h[ɰıɳm}Klɯ®¾Ã
ÁËmÙøƎɯ&% ɯh®¾ÃÁmĽƌ & l iJKòÙøYgzɯ®¾ÃÁm¢Ãɦķm & lÙøXbThɯ·Á¯À¼¶m¢ÃɦķlnŦɣOIv] ɰ	 VmĬɨȢƹ[aylɯ2575%1 n@'%//	
 &<	
 9%/8)AhnkRɯ@'%//	
 &<	 5)*)5)1')AiJKƑŠƅǔYgJv[ɰ@'%//	
 &<	 5)*)5)1')AinɯĽƌmýōhnkRɯĽƌmņĳĺŻ
ɭ·¸½¤¿ɮ®¾ÃÁlßLgĩpĀ[ƑŠh[ɰ	 Á¬ºÃm·¸½lnɯ@ǙĴAiĩoɀYǙġOeJgJv[ɰ·¸½¤¿ɭI
Jnĕl¤¿ɮinVmǙĴmVihɯ¯À¼¶mŋșËlɯI·¸½m¢ÃȭwƘP[iPnɯ_m·¸½m¤¿ƂŉYgșJv[ɰçLoɯǺĕkÙøƎɯ	
 
%	
 	
 
&	
 	
 %	
 

	
 

ȎLgwvY|KɰVmȄƣɯ& m·¸½l iJKòOƘPȸvv[OɯÙøŠ &%
lMJgɯ%ɭ¤¿# $i[ɮiJKĽƌN~¢ÃědgƠg & lÙø[iJKƽnɯ	 % m¤¿Ƃŉ	  B	 	 # $ǙĴm·¸½ým¢Ãɭ
	
 
B	
 	
 & lÙø	 ɮmĩpĀY	 ikv[ɰƽılƇToıɴm}Klkv[ɰVmƑŠ@ǠƆ¤¿AiJJv[ɰ	
 
データ領域
a:103

101:
102:
103:
104:
105:
....

1500.0ıɴɰǠƆ¤¿l}·¸½Ęǈ	
 

b

	
 

— 34 —

SENAC Vol. 45, No. 4（2012.10）

VlŏYɯI¤¿ɭ%((5ɮm·¸½lødgJmOąm·¸½m¤¿ɭ%((5ɮhɯ¤¿ %((5 ƂŉYgɯ¤¿ %((5 m·¸½lødgJ¢ÃȭwƘP[ƑŠ@ɕƆ¤¿AiJJv[ɰ2575%1 hnɯ@'%//	
 &<	 5)*)5)1')Ah®¾ÃÁĩpĀ[mhɯšƌln '%// ô¾ÃÁm·¸½¤¿OødgJv[ɰVmayɯ®¾ÃÁýhmšƌmȭwƘPnɕƆ¤¿ædgșJv[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 %	
 
	
 	
 %	
 	
 
	
 
	
 	
 '%//	
 68&5%	 )1(	
 352+5%0	
 67)67	 	
 68&5287,1)	
 68&56	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 & 6	
 
	
 	
 &	
 	
 6	
 
)1(	
 68&5287,1)	
 68&5	
 iJK¯À¼¶ȎLv[ɰ®¾ÃÁ 68&5 mËmÙøƎ &6 l}dgɯĽƌ & m·¸½m
òn lkv[OɯšƌĽƌ 6 ln % mýōhI 
hnkRɯ·Á¯À¼¶
mĽƌ % m¤¿OødgJv[ɰVmayɯ	 &6 iJKÙøƎhɯĽƌ 6ɭ·¸½¤¿
# $i[ɮN~¢ÃědgPgĽƌ & lÙø[ƽnɯ	
 6 m¤¿Ƃŉ	
  B	
  # $ǙĴlI·¸½¤¿¢Ãɭ ɮmĩpĀY	
 
	
  	
  	
 	
  	
  	
  	
  	
  B	
 	
 # $ǙĴlI¢ÃɭɮmĩpĀY	 	 B	 	 & lÙø	 ikv[ɰıǦ[oıɵm}Klkv[ɰ	
 
データ領域
a:103

s:107

101:
102:
103:
104:
105:
106:
107:
108:
....

b

1500.0103	 ıɵɰɕƆ¤¿l}·¸½Ęǈ	 ɕƆ¤¿l}ȭwƘPnǠƆ¤¿}zƖɕONNv[ɰ}dgɯ&6 mÙøƎlMJgɯÙø[òíƁYgJĠȷmĽƌ 6 OɕƆ¤¿Ƃŉmĺģln·½ £OIv] ɰYNYɯÙøXŘȷmĽƌ & OɕƆ¤¿ƂŉmĺģlnɯVmÖȂwĆǔ[VihɯÃ¾ô¾ÃÁmĽƌl®¾ÃÁôm¢ÃÙø[ViOhPv[ɰ	 çLoɯıɶm}Kk¯À¼¶ȎLv[ɰ®¾ÃÁmšƌĽƌ & l % mȄƣhI
Ùø[iɯ& ln·Á¯À¼¶mĽƌ < m¤¿OødgJmhɯɕƆ¤¿Ƃŉl} < l OÙøXv[ɰ	 źòĆǔ[iPnɯŏŮ[šƌlÃ¾ôĽƌm¤¿ÈLkTokv] ɰVOĽƌvanɍăƂŉYkTok~kJǑǖh[ɰźòƂŉmšƌlŉƌ{ȤǷŠÈLiŋșƖ¼Ãlkv[ɰ	 	 ɍăŋǐ[mlzɕƆ¤¿OægJv[ɰçLoɯ% n %N~ƌLg  Ǚǟm·¸½h[ɰ}dgɯɍăm÷ɧȞǾ %m¤¿·¸½lȥɐYɯ_l ɭoɯ% m·¸½ȭwƘP[Vilkv[ɰ	 ɮĎLgɕƆ¤¿ǔJ

Fortran スマートプログラミング —第２回

サブルーチンと入出力

メインプログラム
program stest3
implicit none
real x,yx = 5.0
変数 x,y のアドレスを送る
call subr(x,y)
print *,x,y
end program stest3
データ領域
y

5.0
30.0

— 35 —

サブルーチンプログラム領域x—

参
照間接アドレスで送るプログラム領域
subroutine subr(a,b)
implicit none
real a,b
print *,a,bb = a+25.0
end subroutine subr

データ領域
a

xのアドレスbyのアドレス	 ıɶɰ2575%1 hn@'%//	
 &<	 5)*)5)1')Al}ɯ¢ÃȽȺ[ViOhP	 	  {Q)ae!(\W	 ɍă '%// Ǝmšƌl[iPnɯɍăĥšƌl[VizɯɍăȞǾšƌl[VizğȐh[ɰɍăĥnɍăm÷ɧȞǾ¤¿Ǧ[mhɯɍăĥšƌl[Viiɯ_mɍă
mǳ  ȞǾšƌl[VinĤZųĨlkv[ɰçLoɯ5)%/	
 % iŌȣYaɱƯöɍălŏYgɯ	 	
  '%//	
 68&%	  i	
  '%//	
 68&%	 nĤZĐåYv[ɰ	 	 VĜT®¾ÃÁhmŌȣnɯ®¾ÃÁýɋh_m¢ÃjKæKNhƹyv
[ɰÄçǦYv[ɰ	 68&5287,1)	
 68&;	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ;	
 
	
 	
 ;	
 	
  	
 
)1(	
 68&5287,1)	
 68&	
 Vmçhnšƌ ; OĕÄĽƌiYgžgJv[ɰVmayɯ'%// ƎhƂŉYa %bTO
®¾ÃÁýɋhĆǔhPɯ×mȞǾnæLv] ɰVnɯ'%//	
 68&%m}KlɯɍăĥÈLaĺģhzĤZh[ɰ	 VlŏYɯ	 68&5287,1)	
 68&;	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 ; 	 	 	 ,17)+)5	
 ,	
 
	
 	
 (2	
 ,	
 	
  	
  	
 
	
  	
 	
 	
 	
 ;,	
 	
 ,	
 
	
 	
 )1((2	
 )1(	
 68&5287,1)	
 68&	
 m}Klšƌ ; ɍăŌȣ[oɯIaNzÃ¾ô¾ÃÁm % iJKɍăO®¾ÃÁýɋmɍă ; lkdaNm}KlěžKViOhPv[ɰVVh@IaNzAiJKȣȗædamnɯ®¾ÃÁhmŌȣƎmƘPƑl}dgn_Kk~kJViOIN~h[ɰçLoɯ®¾ÃÁhmɍăŌȣ ; mȞǾƌ  nÃ¾ôiĤZƌl[ŭȞnIv] ɰm}KlŀPRgzɯ m}KlőXRgzNvkJmh[ɰVnɯšƌ ; Oɍăm÷ɧȞ

— 36 —

SENAC Vol. 45, No. 4（2012.10）Ǿ¤¿íƁYgJɱðmĽƌl[QkJN~h[ɰ®¾ÃÁhmšƌɍămŌȣnɯɍămťǍɭƯö{ÆəòɮȚǦ[aymµÃl[Qv] ɰ	 VmayɯÃ¾ô¾ÃÁhŌȣYaȞǾƌi®¾ÃÁhŌȣYaȞǾƌÄȒX]
ŭȞnIv] ɰÈL~aɍăjKŌȣ[Nnɯ®¾ÃÁýɋmȤǷmɌģlģ]gɯ®¾ÃÁôhƹyViOhPv[ɰ}dgɯƸǔŰmI®¾ÃÁl[lnɯɍăm¤¿ÛľlɯɍămȞǾƌzšƌlYg®¾ÃÁlßLŭȞOIv[ɰ	 ɍămťǍXLāNoJJmh[N~ɯ®¾ÃÁhšƌɍăŌȣ[iPnɯƌŅmÙl@AƘRViOhPv[ɰçiYgɯȞǾƌ 1 m  Ưöɍă % m¢ÃɯĤZɑXm  Ưöɍă & l¬Ã[¯À¼¶ȎLgwvY|KɰƚzĕǽkǶLnɯÛÆm}Kk
zmh[ɰ	
 68&5287,1)	
 '23<% & 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	 % &	 	 	 ,17)+)5	
 1 ,	
 
	
 	
 (2	
 ,	
 	
  	
 1	
 
	
 	
 	
 	
 &,	 	
 %,	 	 	 )1((2	
 )1(	
 68&5287,1)	
 '23<	
 Vm}Klɯ®¾ÃÁmšƌɍă % { & mŌȣ@Al[VihɯȞǾƌOÇŉmɱƯöɍăhIViƓǦYgJv[ɰ	 	 @Al}ŌȣnɲƯöÛÅmɍăhzæKViOhPv[OɯćəOIv[ɰçLoɯ% iJKťmŌȣnhPv] ɰk^k~ɯɲǙǟmȞǾɃymnɱǙǟmȞǾOƚŀòɯ[kcŌȣYaÅəƌlɆYaiPkmhɯɱǙǟmȞǾOÇŉhnŲĹÇȳhɃy~kJN~h[ɰVmayɯ@AOæLmnɯÄǙĠômȞǾƌmwh[ɰçLoɯ5)%/	
 % 
iŌȣ[iɯǳɱȞǾƌO  mɲƯöɍăiYgȤǷXv[ɰ	 YNYɯVhnj kɲƯöɍăhzæL®¾ÃÁåVinhPv] ɰ_Vhɯ@ƍģɍăAiĩoƮȐOǔųXgJv[ɰƍģɍăin 68&5287,1) ƎmšƌmËlIƍƌĵĽƌĆǔYgŌȣYaťmšƌɍămVih[ɰçLoɯÛÆm}KlŌȣ[ViO
hPv[ɰ	
 68&5287,1)	
 '23<(% & 0 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 %0 1 &0 1	 	 	 ,17)+)5	
 0 1 , -	
 
	
 	
 (2	
 -	
 	
  	
 1	
 
	
 	
 	
 	
 (2	
 ,	
 	
  	
 0	
 
	
 	
 	
 	
 	
 	
 &, -	 	
 %, -	
 
	
 	
 	
 	
 )1((2	 	 	 )1((2	
 )1(	
 68&5287,1)	
 '23<(	 Vmçhnɯ0 i 1 OšƌmËlImhɯV~ædgšƌmɍă % i & Ōȣ[ViOhPmh[ɰ%0 1m}KkĕǽkŌȣbThnkRɯ%01 1 m}KlɯȤǷŠædgŌȣ[VizğȐh[ɰ	 Vm®¾ÃÁmæǔçƯlǦYv[ɰ®¾ÃÁmšƌ %ɯ& lj kȞǾƌmɲƯöɍăÈLgzɯÃ¾ô¾ÃÁlMTɍăŌȣiĤZȞǾƌ 0ɯ1 lÈLoɯƱYRĐ	 ȞǾƌbThnkRɯƯöXLÄȒX]ŭȞnIv] ɰÃ¾ôOɲƯöɍăhɯ®¾ÃÁhmŌȣOɱƯöɍăhzĐånğȐh[ɰçLoɯÅȥm®¾ÃÁ '23< nɯɲƯöɍăhzæǔhPv[ɰVnɯɲƯöɍăz·¸½ÅhnɱƯöǝlÊ hJN~h[ɰabYɯȞǾƌÈLšƌ 1 lnùȞǾ
ƌƂŉ[ŭȞOIv[ɰçLoɯ%  iŌȣXaɍăk~oɯ1 ɭ > ɮÈLv[ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 37 —

åYv[ɰ	
 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	 %   &
	
 	
 	
 	
 
	
 
	
 	
 '%//	
 '23<(% & 	 	 '%//	
 '23<(' ( )1(	 352+5%0	
 67)67	   '



 (



	
 

 	
 
 	
 

kMɯɍăŌȣmɝlnɯÀÁØĎYgÆəƂŉ[ViOhPv[OɯV®¾
ÃÁlšPȆSln®¾ÃÁôhzĤZÆəƂŉ[ŭȞOIv[ɰçLoɯ	 352+5%0	
 67)67	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 %  	 	 	 '%//	
 68&% %  	 )1(	 352+5%0	
 67)67	 	
 68&5287,1)	
 68&; < 1	 	 	 ,03/,',7	 121)	 	 	 5)%/	 ; 1 <	 	 	 ,17)+)5	
 1	
 
	
 	
 ; 	
 	
  	
 
	
 	
 < 	
 	
  	
 
)1(	
 68&5287,1)	
 68&	
 iƘJaĺģɯ·Á¯À¼¶iĤZÆəƂŉYaɍă ; hn ; O·Á¯À¼¶m% lŏŮ[mhɯ% l OÙøXv[ɰYNYɯÆəƂŉYgJkJɍă < hnÆəO  h[N~ɯ% N~ƌLg  Ǚǟm %l OÙøXv[ɰÞųmÆəƁeɍălŏYgĐå[¯À¼¶l[lnɯÆəmƌòšƌlYgƍģɍăæJv[ɰ	 	  }eS=F0C@v s%y%}e	 6,1;m}KlɯšƌædgýɋhȤǷYaȄƣȤǷŠËhæKViOhP@ɖƌAȑå[VizhPv[ɰVɖƌĊ¯À¼¶iJJv[ɰɖƌĊ¯À¼¶nɯ®¾Ã
Áiti jĤZƩɁYgJv[OɯÛÆm}KkɇJOIv[ɰ	 	  	
 68&5287,1) mÙl *81'7,21 ƘR	
 
	
 	
 	
 ɖƌĥĽƌiYgŌȣYɯ_lȤǷȄƣɭɖƌòɮÙøYkTok~kJ	 VÛľnɯšƌI®¾ÃÁiĤZh[ɰšƌlɖ[Ƽųz®¾ÃÁiĤZhɯźòÈLšƌħyVizhPv[ɰɖƌĊ¯À¼¶inɯšƌÛľlźòɱðƁe®¾ÃÁmĽǫbiJLv[ɰVmźòOɖƌòlkv[ɰ	 ɖƌĊ¯À¼¶mÄçǦYv[ɰ	 *81'7,21	
 648%5);	 	 	 ,03/,',7	 121)	 	 	 5)%/	
 648%5) ;	
 	 	 648%5)	
 	
 ;;	
 
)1(	
 *81'7,21	
 648%5)	
 Vm}Klɯ*81'7,21 ƎhɔŃYɯ)1(	 *81'7,21 ƎhȁÎYv[ɰvaɯɖƌĥ 648%5) ŋƌĵŌȣYɯšƌ ; mÑÍÙøYgȁÎYgJv[ɰ[kcɯVmçnɯšƌ ; lŋƌĵm
ƌòÈLiɯ; ɖƌòiYgÈLɖƌlkv[ɰ	 	 ɖƌĊ¯À¼¶æKVinɯ@ɖƌĥAiJKĽƌæKVihIiȎLv[ɰVmayɯåŹYaɖƌæǔ[¾ÃÁhzɖƌĥĵŌȣ[ŭȞOIv[ɰçLoɯÅçm
648%5) æKlnɯ	 — 38 —

SENAC Vol. 45, No. 4（2012.10）

352+5%0	
 *7)67	 	 	 	 ,03/,',7	 121)	 	 	 	 5)%/	
 ; < 648%5)	
 
	
 	
 	
 ;	
 	
  	
 
	
 	
 	
 <	
 	
  648%5);
	 	 	
 35,17	  ; <	 )1(	 352+5%0	
 *7)67	
 

	
 	
 

	
 

m}Klɯ648%5) iJKɖƌĥɖƌĊ¯À¼¶hmŌȣiĤZĵhŌȣYgMNkTok
v] ɰɖƌĊ¯À¼¶ËhŌȣYaɖƌĥmĵiɯ_mɖƌæǔ[¾ÃÁhŌȣY
aɖƌĥmĵOǚkĺģlnŋșƖ¼Ãlkv[ɰ	 XgɯĉĮȀÕYa}Klɯ6,1 { 6457 m}KkƌòȤǷh}RæKɖƌnI~NZyǔųX
gJv[ɰV~@ȂwȸwɖƌAiJJv[ɰȂwȸwɖƌnɯÁª¼OĵȪȮYgJmhɯæǔlɝYgmĵŌȣnÇȞh[ɰȚɲlɯĉĮǦYaɖƌÛľhɯ}RæKiů
ȂwȸwɖƌJReNǦYv[ɰ	 Ȃwȸwɖƌ	 ȚɲɰĵĽƉɖƌkjmȂwȸwɖƌ	
 
ĥ	
  Ǩ	
 
šƌmƌòĵ	  ɖƌòmƌòĵ	 ɖƌmųĨ	 5)%/1	
 

ŋƌĒ	
 

ƍƌ	
 

ŋƌ	
 

ŋƌĵrĽƉ[	 ,17;	
 

ƍƌĒ	
 

ŋƌ	
 

ƍƌ	
 

ƍƌĵlĽƉ[	 5)%/=	 ȝǾƌmŋɋ	
 

ȝǾƌ

ŋƌ	
 

= mŋɋ	
 ,0%+=	 ȝǾƌmȘɋ	
 

ȝǾƌ	
 

ŋƌ	
 

= mȘɋ	
 '03/;; <	
 

ȝǾƌĒ	
 

ɲðmŋƌ	
 

ȝǾƌ	
 

;,<	
 

'21-+=	 ûŧȝǾƌ	
 

ȝǾƌ	
 

ȝǾƌ	
 

= mûŧȝǾƌ	 %&6=	
 

ȅŏò	
 

ȝǾƌ	
 

ŋƌ	
 

= mȅŏò	 02(0 1	 ċä	 ɲðmƍƌ	 ƍƌ	
 0  1 hČdaä	 	 ĵĽƉɖƌnɯ®¾ÃÁmšƌlɯƌòĵmǚkĽƌÈLiPlæJv[ɰvaɯƍƌĒnĂƄgǅǷħ hJmhɯ_ǭƧǝlĆǔ[iPlzæJv[ɰçLoɯƱmŋƌ ; mőƌǆÛÆĭƄÒøYaƍƌnɯ,17; hȤǷ[ViOhPv[ɰ	 ƚũmċäȤǷ[ɖƌ 02( nųľl}RæJv[ɰ(2 ƎhȊȺYȤǷ[ĺģɯ	
  	
  	
 
@1 ĮƴlĀč[AiJK}KlɯÄŉɕɜhĐåĽLaJViO}RIv[OɯVVh
02( OæLv[ɰçLoɯȊȺYȤǷmËh  Įl  ĮĀč[k~ɯ	
 
(2	
 0	
 	
  	
 
	
 
	
 	
 
	
 
	
 	
 ,*	
 02(0  	
 	
  	
 35,17	  0 ; <	
 
	
 	
 
	
 
)1((2	 m}KlƘPv[ɰ¯À¼¶iJKmnɯĸƞǝlùgȤǷhIɯƽmÁ£ÀÃ¾zȤǷȄƣædgșkTokv] ɰVm}KkÃh 02( æKmnɯªÃÁmÄe
iYgȡLgMRiȓJhY|Kɰ	 	  A2BHD)K0FH:D]e"Ro	 ÀÃ¾ĽƌmMNUhɯĢ¾ÃÁmǎǰŰníav[OɯšƌhYN¾ÃÁɕm¢ÃĜTǂYOhPkJmnÇêh[ɰšƌnɯNdVædaÊphƂŉ[mhɯĜTǂ[ĽƌOĿJiƘRmOŀĽh[ɰYNzÊpOɎȞkmhɯÄŻɥǙɕɇLabThz¼ÃOǛǓYv[ɰ_z_zšƌl}ĜTǂYn¤¿ŲĹȃǖYazmkmhɯÃ¾ôi
®¾ÃÁôhňùlĤZĽƌhIiJKíȧnIv] ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 39 —

ȤǷƮµº¿Ã»ÁhnɯýōlŮZg®¾ÃÁåŹ[iȻsvYaOɯVmǔȿlMJgnɯ¾ÃÁɕhûǔ[ĽƌOĿƌŭȞh[ɰYNYɯûǔĽƌùgšƌl[mnďǏOűRɯ¼ÃzǛǓY{[Rkv[ɰ	 _Vhɯ¾ÃÁýɋhmwųĨƁe@ÀÃ¾ĽƌAlŏYgɯ@ÀÃ©¾ĽƌAOǔų
XgJv[ɰÀÃ©¾Ľƌinɯjm¾ÃÁN~ĘǈYgzûɀYaòíƁYgJĽƌmVihɯ2575%1 hnɯ¸ºÃ¾i 86) ƎmȂwģ]hĆǔğȐh[ɰ	 ¸ºÃ¾inɯĽƌ{®¾ÃÁkjɞygÄemª ÃlYazmhɯ02(8/) ƎhɔŃYg )1(	 02(8/)ƎhȁÎYv[ɰ®¾ÃÁiĤZƩɁYgJViN~N}Klɯ¸ºÃ¾mȥȻnɯ·Á¯À¼¶{®¾ÃÁiĤ¿°¾h[ɰçLoɯ	 	
 02(8/)	
 (%7%	 	 	 	 ,17)+)5	
 10,1 10%;	
 
	
 	
 	
 5)%/	
 7,1,7,%/ %0%75,;
)1(	 02(8/)	
 (%7%	  	 m}KlƘPv[ɰ÷ɧm 02(8/) Ǝhɯ02(8/) mũlƂŉYaƎŅăɭVmçhn (%7%ɮ@¸ºÃ¾ĥAiJJv[ɰƚũm )1(	 02(8/)Ǝlz¸ºÃ¾ĥƂŉYv[ɰ®¾ÃÁ{ɖƌĊ¯À¼¶iǚkɯ¸ºÃ¾n¯À¼¶lȥȻYabThnĆǔ[ViOhPv] ɰĆǔ[¾ÃÁm÷ɧlɯ86) Ǝædg¸ºÃ¾ĥƂŉYɯ_mĆǔŌȣ[ŭȞOIv[ɰ86) ƎnÛÆm}KkťŠh[ɰ	 86)	
 ¸ºÃ¾ĥ	 86) Ǝn ,03/,',7 Ǝ}zĉlƘNkTokv]ɰ¸ºÃ¾mæǔçÛÆlǦYv[ɰ	 	
 02(8/)	
 +/2&%/	
 	 	 	 5)%/	
 ;%;,6 <%;,6	
 )1(	 02(8/)	
 +/2&%/	 	
 352+5%0	
 67)67	
 
	
 	
 	
 86)	
 +/2&%/	 	 	 	 ,03/,',7	 121)	 	 	 	 ;%;,6	
 	
  	
 
	
 	
 	
 <%;,6	
 	
 
	
 
	
 	
 	
 '%//	
 68&5	 	 	 	
 35,17	  ;%;,6 <%;,6	
 )1(	
 352+5%0	
 67)67	 	
 68&5287,1)	
 68&5	
 
	
 	
 	
 86)	
 +/2&%/	 	 	 	 ,03/,',7	 121)	 	 	 	
 35,17	  	 ;%;,6 <%;,6	
 
	
 	
 	
 <%;,6	
 	
  	
 
)1(	
 68&5287,1)	
 68&5	 ¸ºÃ¾mËhŌȣXaĽƌ{ɍănɯ·Á¯À¼¶{®¾ÃÁinǎǰYgņĳ
Ya¢ÃɦķlIɯ86) ƎhĆǔŌȣ[oɯjm¾ÃÁN~hzĘǈ[ViOhPv[ɰVm¯À¼¶m·¸½·ÃıǦ[oɯıɷm}Klkv[ɰ	 ¸ºÃ¾nɯĥĉOǚkoɯÄem¯À¼¶lȝƌåŹ[VizğȐhIɯÄem¾ÃÁOȝƌm¸ºÃ¾Ćǔ[VizğȐh[ɰabYɯ¸ºÃ¾n 86) ƎhĆǔ
Ōȣ[}ĉhɭ¯À¼¶mÅƑhɮŉȌXgJŭȞOIv[ɰVmayɯɀŚnVmçm}Klùgm¾ÃÁ}ĉlȥȻYgMPv[ɰ	 	 ¸ºÃ¾{ 86) Ǝn 2575%1 N~ƅǔXaƵȶǝƐYJÖƪh[ɰ2575%1 Ûĉhn '20021 ƎhÀ
Ã©¾ĽƌŋǐYgJvYaɰYNYɯ'20021 ƎlnÇêkǆOĿJmhƞǬhnǢǘYv[ɰ	 — 40 —

SENAC Vol. 45, No. 4（2012.10）

module global
データ領域
xaxis

5.0

yaxis

25.0

メインプログラムプログラム領域参照参
照program stest5
use global
implicit none
xaxis = 5.0
yaxis = 100.0
call subr
print *,xaxis,yaxis
end program stest5

サブルーチンプログラム領域
subroutine subruse global
implicit none
print *,xaxis,yaxis
yaxis = 25.0
end subroutine subr	 ıɷɰ¸ºÃ¾hŌȣXgJÀÃ©¾ĽƌmĘǈ	 ¸ºÃ¾hŌȣXgJĽƌnɯ86) ƎƘRbThĆǔhPiJKĆêŰOIv[
Oɯ¾ÃÁýhƓǦǝlŌȣXgJkJmhɯÇǔųlædgYvKğȐŰOIv[ɰ_VhɯƯm}Kk 21/< Ğædgɯ¾ÃÁýhŭȞkĽƌbTƓǦ[ViOhPv[ɰ	
 	
 
86)	
 ¸ºÃ¾ĥ 	
 21/<	 	 ĽƌɱɯĽƌɲɯ	 çLoɯĉmçhɯ	 86)	
 +/2&%/ 	 21/<	 	
 <%;6,6	
 m}KlƘRiɯ<%;6,6 ÛľmĽƌɭ;%;6,6ɮnɯVm¾ÃÁhnŌȣXgJkJmiĤǵh[ɰŌȣXgJkJĽƌnɯÀÃ¾ĽƌiYgąȿŌȣ[VizğȐh[ɰ	 ÀÃ©¾ĽƌnɯĿǔ[i¾ÃÁmǎǰŰOŁgYvJv[ɰĸƞǝlnÀÃ¾
Ľƌh¯À¼¶åɯ¾ÃÁɕhûǔ[ŭȞOIĽƌmwɯÀÃ©¾lYgRbX
JɰvaɯÀÃ©¾ĽƌnŞJǹİhņĳ[ğȐŰOImhɯhPbTųĨmIɑymĥĉØTv[ɰVnɯĉĮĀgPa@ŀķǝlƛďkĽƌĥmØTƑAh[ɰ	 	  7H5PT"xr7H5MT	 	
  7H5PTL"c^	
 VvhzapapǜĺYvYaOɯzdizĕǽkĀčĪÚnɯ35,17 Ǝh[ɰ	 35,17	 ɯ¢Ãɱɯ¢Ãɲ	 	
 35,17 ƎhĀč[iɯǗɢɭƱǥlnƫǄĀčɮl¢ÃOȚǦXv[ɰ nĀčťŠƂŉ[aymzmh[OɯiIL\@AƘJgMToɯ¢ÃmƌòĵlŮZaƫǄťŠ
hĀčYv[ɰçLoɯ	 35,17	 ɯ; 	 <, 	 ; 	 %&'	
 	
  	
  	
 
m}Klɯ¢ÃmáȋlnɯĽƌ{ɍăÈLgzȓJYɯȤǷŠ{ŉƌÈLVizğȐ
h[ɰvaɯƎŅăɈŤløgɯ¢ÃmųĨȚǦ[VizhPv[ɰ	 ǗɢhnkRɯ­¾lĀč[iPn :5,7) ƎǔJv[ɰ35,17 ƎimɇJnɯĀč÷Ƃŉ[ƍƌò  iĀčťŠƂŉm  NdVhȥȻ[Vih[ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力:5,7) 	 ¢Ãɱɯ¢Ãɲ	 — 41 ——	  țȋǙġiJJv[ɰțȋǙġnɯĀč­¾Ȯą[ƌŅhɯÞųlɉqViOhPv[ɰabYɯĖĈiYg  D lYgÆXJɰVnɯ2575%1 Áª¼mÖƪl}dgɯÄƤmƌònÏǼXgJğȐŰOIN~h[ɰçLoɯ  l[o 35,17 ƎiĤZųĨ
lkdgɯǗɢlȚǦXv[ɰ lnɯĽƌ{ɯƍƌòlkȤǷŠÈLVizhPmhɯƟÝlŮZgĀč÷ĽƗ[VizğȐh[ɰ	  lɈŤkƍƌÈLg :5,7) Ǝŋș[iɯ@*257  AiJKĥm­¾lĀčXv[ɰçLoɯ	 :5,7)

	 ; < =	 iƘToɯ; < = mòO@*257  AiJKĥĉm­¾lĀčXv[ɰ35,17 ƎiĤZRɯ l@AÈLoɯƫǄťŠhĀčYv[ɰ	 	  {Q"PT~  [PT	 ĀčƎlMJgɯ¢ÃmáȋlɍăĥƘToɯùȞǾOÊ hĀčXv[ɰçLoɯ	 5)%/	
 %	
 
(2	
 ,	
 	
  	
 	
 
	
 	
 	
 %,	 	 ,	 )1((2	
 35,17	
  %	
 iJK¯À¼¶ŋș[iɯ	
 
	
 	
 	
 	
 	
 

	
 	
 

	
 	
 

	
 	
 

	
 

m}KlɯɍăȞǾO÷ɧN~ɥlÊ hĀčXv[ɰVmiPɯɍăȞǾOĿJiɈŤlƋșøgĀčXv[ɰ}dgɯVmƑƻnɍăȞǾOŒkJiPÛľnIvMđyhPv] ɰçLoɯɲƯöɍăɯ	 5)%/	
 % 	
 
(2	
 -	
 	
  	
 	
 
	
 	
 	
 (2	
 ,	
 	
  	
 	
 
	
 	
 	
 	
 	
 	
 %, -	
 	
 ,-	
 
	
 	
 	
 )1((2	 )1((2	
 35,17	  %	 m}KlĀč[iɯ%  %  %  % % 	 iJKÊph  ðmȞǾOĀč
Xv[ɰ_VhɯƯm}Kl (2 ƎhĀč[ƑOJJhY|Kɰ	
 
(2	
 -	
 	
  	
 	
 
	
 	
 	
 (2	
 ,	
 	
  	
 	
 
	
 	
 	
 	
 	
 	
 35,17	  %, -	
 
	
 	
 	
 )1((2	 )1((2	
 YNYɯ35,17 Ǝ{ :5,7) ƎnɯɱƎWilƋș[mhɯȝƌm 35,17 ƎædgɯƬlȇTgƘRVinhPv] ɰ}dgɯVmçmĀčhnùɋh  șŭȞh[ɰșƌǁ~[aylɯ șlșăm  șĀč[lnɯƯm}KlƘNkTokv] ɰ	
 
(2	
 ,	
 	
  	
 	
 
	
 	
 	
 35,17	  %,  %,  %, 	
 )1((2	 	
 @*257AmɋānÁª¼léņYv[OɯĿRn *257 m}Kh[ɰvaɯÁª¼l}dgnǒĻĽƌ
hƂǦ[Vil}ɯŭȞkțȋǙġlÞųmĥĉm­¾ČŤgVizğȐh[ɰ	 — 42 —

SENAC Vol. 45, No. 4（2012.10）

YNYɯVmçm}KlămƌONdgJiPnȓJmh[OɯăƌOĿJiP{ĽƌhƂŉYaJiPlnÇêh[ɰ_Vh (2 ĵĀčOǔųXgJv[ɰ(2 ĵĀčinɯ	
 
	
 	
 	
 	
 	
 ¢Ãɱ ¢ÃɲƍƌĵĽƌĄƜò ȁÎò	 m}KkɯNdVhİ bťŠh[ɰV¢ÃmáȋlȥȻ[oɯ(2 Ǝm}KlɯƍƌĵĽƌOĄƜòN~ȁÎòvhɱfeļLgJPɯ_mĽƌhƂŉX¢ÃOɥlĀčXv[ɰ(2 ĵĀčȝƌÊsaɯɀŚm¢ÃiÊsgƘRVizhPv[ɰçLoɯ	 35,17	
  %, - - 	 nɯXPtjm@35,17	
  %,  %,  %, AiƘRViiĤǵh[ɰvaɯ	
 35,17	  ; %, &, , 	
 nɯ@35,17	
  ; % & % & % &AiƘRViiĤǵh[ɰ	 (2 ĵĀčnĿɎl[VizhPv[ɰçLoɯ	 35,17	  %, - -  , 	 nɯ
@35,17	  %  %  %  %  %  %  %  %  % AiƘRVi
iĤǵh[ɰVmçm}KlɯĿɎmiPlnýômȊȺYĽƌO÷lɃwv[ɰ	 kMɯ(2 ĵĀčmƍƌĵĽƌnɯ(2 ƎmÁĽƌlǡŤYv[ɰVmayɯ(2 ĵĀčmødgJĀčƎ (2 ®À mËløiPlnɯÁĽƌOɎȝYkJ}KlYkT
okv] ɰ	 	    !'(PTb`"c^	 ƫǄĀčťŠɭ@AƂŉɮhŋƌǗɢlĀč[iɯƛďƌŅ  ƤmƌŅædgȚǦXv[ɰVmayɯIvĿRm¢ÃƬlÊsViOhPkJYɯȄƣȟbTk~ɯ_tjmƛďƌŅnŭȞIv] ɰvaɯƫǄťŠmĀčln  șmĀčƎŅƌlćəOI
ayɯĀčƌOćəȱLiȑĐǝlƋșXgYvJv[ɰVmayɯĤZĀčȊȺ[iɯșWilőƌǆmáȋOɇKVizIɯŀɏlĀč[mlnĦPv] ɰ	
 V~mĬɨnɯĀčťŠɭ*250%7ɮƂŉ[VihȢƹhPv[ɰVvh@AƘJg
Ja  máȋl *250%7 Ƃŉ[oɯőƌǆÛÆmƤƌőXRYaɯŭȞlŮZgƌŅ
iƌŅmɕl±ÃǮTaɯƋșøa[ViOhPv[ɰvaɯȑĐƋșX
ViOkJmhɯśŞRĀč[VizğȐh[ɰ	 *250%7 mƂŉƑƻnɲɀIv[ɰv\ɯ*250%7 Ǝl}Ƃŉh[ɰÄçǦYv[ɰ	
 

	
 	
 

5)%/	
 ; <	
 
,17)+)5	
 1	
 
;	
 	
  	
 
<	
 	
 
	
 
1	
 	
  	
 
35,17	 
; < 1	 	
 *250%7	
 	
 ;	
 	
  *

 	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  , 	 ƚũmƎO *250%7 Ǝh[ɰ*250%7 Ǝnɯ®¾ÃÁmšƌm}KlɯĀčťŠmƂŉ½
£lYgNdVhİwɯ÷ɧlƎǙġØTv[ɰVmƎǙġ 35,17 Ǝ{ :5,7) Ǝm lƂŉ[oɯ_m *250%7 lYaOdgĀč¢ÃOƍťXv[ɰVmçhnɯ O Ƃŉh[ɰƎǙġnɎȝhPkJmhɯ¾ÃÁýhn *250%7 WilǚkƌŅeTkTokv] ɰ	 ȝƌm 35,17 Ǝ{ :5,7) ƎOĤZ *250%7 ƎƂŉ[mnğȐh[ɰçLoɯƯm}Klûǔ
[ViOhPv[ɰ	 	 ƎǙġmØTƑlƹvda¾Ã¾nIv] Oɯ
@*250%7 ǔhIAiJKųĨjVNløgMJaƑO
ȓJhY|KɰVmçh  ædgJmnɯ@AOƕmĀčțȋǙġbdaVmȍŶh[ɰ	 	 Fortran スマートプログラミング —

	
 	
 

第２回

サブルーチンと入出力—— 43 —5)%/	
 ; < 8 9	 ,17)+)5	
 1 .	
 
	
 
	
 
35,17	 
; < 1	 :5,7)  	 8 9 .	
 	
 *250%7	
 	
 ;	
 	
  *  	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  , 	 *250%7 Ƃŉ[zKÄemƑƻnɯƎŅăædg  máȋlǠƆ *250%7 mýōȥȻ[Vih[ɰçLoɯÅȥm *250%7  35,17 Ǝ{ :5,7) ƎlĶyȸ hɯ	 	
 35,17	
 	
 ;	
 	
  *  	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  ,  ; < 1	 :5,<) 	 ;	 	  *  	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  , 	 8 9 .	
 m}KlƘRViOhPv[ɰVmiPɯ
@*250%7AmƎŅnÇȞh[OɯÉǲmNdVnŭȞh
[ɰkMɯ2575%1 hmƎŅănGHhİxmOĸƞh[OɯGHzæLmhɯ*250%7 ýɋlGHOødgJiPlnGHhİwv[ɰ	
 *250%7 ĀčƎËlƘPȸxƑƻnɯƎǙġŭȞiYkJǆnȓJmh[OɯĀčƎOɑRkYɯĤZ *250%7 ãşzæKiPlnÇêh[ɰ_VhɯƎŅăĽƌĆǔYgƘRƑƻO
Iv[ɰƎŅăĽƌmĆǔleJgnƯĮȬƓYv[ɰ	 ĀčťŠmƂŉƑƻÅȥm *250%7 çlYgȬƓYvY|Kɰv\ɯ*250%7 ËmƎŅăn
_mvvĀčXmhɯŭȞlŮZgɈŊƃøYv[ɰVmçhnɯ	
 	
 ;	
 	
 { 	
 	
 	
 <	
 	
 nɯ
±Ãzħyg_mvvĀčXv[ɰ	 ƯlɯĀčƎËm¢ÃòmÊplŏYɯ_`mĀčťŠƂŉ[@ȈɞȥȻńAɉhɯĉN~ɥlȥȻYv[ɰVmçhnɯ* ɯ)6 ɯ, ɯOȈɞȥȻńhɯ35,17 ƎmÊplŏYɯ	 	 	 35,17	
  	
 	
 	
 	
 	
 	
 	
 ;	
 	
 	
 	
 	
 	
 	
 	
  	
 	
 	
 	
 	
 	
 	
 <	
 	
 	
 	
 	
 	
 	
  	
 	
 	
 	
 	
 	
 	
 1	
 
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 C	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 C	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 C	
 
	
 *250%7	
 	
 ;	
 	
  *  	
 	
 	
 <	
 	
  )6  	
 	
 	
 1	
 	
  , 	 iJKŏŮhĀčťŠƂŉYgJv[ɰƎŅăiɯȈɞȥȻńhƂŉYa¢Ãònɯ_mÊpɥlĀčXv[ɰ}dgɯVm 35,17 ƎŋșYaiPmĀčnÛÆm}Klkv[ɰ	
 
;	
 	
 	
 	
 	
  

	
 	
 	
 <	
 	
 	
 

)

	
 	
 	
 1	
 	
 	
 	
 	
 	
 	
 	
 	
 

	
 

ĀčťŠƂŉ[ȈɞȥȻńmÌȞkzmȚɳlǦYv[ɰ¢ÃmƌòĵlŮZaȈɞȥȻńæǔYkJiƱYJòOĀčXkJmhƼųYgÆXJɰkMɯVmȚhƏâƎŅ
ɭw m d rɮnƍŉƌhƂŉYv[ɰ	 ȚɳɰÌȞkȈɞȥȻń	 ȈɞȥȻń	
 

ƌòĵ	
  	
  	
  ȈɞmųĨ	
 

w	
 

ƍƌ	
 

w m	
 

ƍƌ	
 

w d	
 

ŋƌ	
 

w d	
 

ŋƌ	
 

w d	
 

ŋƌ	
 

ś w hƍƌĀč[	 ś w hƍƌĀč[	 ĀčƍƌmƤO m }őXJiPlnɯ÷ɧl ȜKwDm	 ś w hŋƌĲŉőƌǆťŠhĀč[	 d nőƌǆÛÆmƤƌwDd	 ś w hŋƌƾĐőƌǆťŠhĀč[	 d nőƌǆÛÆmƤƌwDd	 ÜƌɋmɱƤǟn lk	 
ś w hŋƌĀč[	 ƂƌɋmŀPXlŮZg  Ȉɞi  ȈɞĂƙL	 	 — 44 —

SENAC Vol. 45, No. 4（2012.10）

ȚɳɭȇPɮɰÌȞkȈɞȥȻń	 ȈɞȥȻń	
 

ƌòĵ	
  	
  	
  ȈɞmųĨ	 !w d	 ŋƌ	 

 w d	 ŋƌ	 

ś w hŋƌƾĐőƌǆťŠhĀč[	 ÛľmƌòĀč[iɯÜƌɋmɱƤǟn  N~  lk	 
ś w hŋƌƾĐőƌǆťŠhĀč[	 ÛľmƌòĀč[iɯÜƌɋmȅŏòn  ÛÅ Ɲǃlkɯ
Ƃƌɋn  hČĂƌlk	
 

	
 

ƎŅă	
  ƎŅă_ȑȵmɑXmśhĀč[	
 

w	
 

ƎŅă	
  ś w hƎŅăĀč[	
 

	
 

kY	
 

Ƌș[	
 

r"	
 
kY	
  r ð±Ãƃø[	 	 ƚũmÑeɭƋși±ÃmƃøɮnɯĀčĐåȥȻ[zmkmhɯƎŅăiĤƪlɯĀčƎËm¢ÃimŏŮnIv] ɰvaɯVVhnȈɞƂŉmƎŅɭ { ! kjɮƂŉƌ
ɭw kjɮiēą[aylŀƎŅhƘPvYaOɯőƎŅhzĤZųĨh[ɰçLoɯ, nƍƌĵòś  ƎŅhĀč[ViųĨYɯ*  nŋƌĵòś  ƎŅɯőƌǆÛÆ  ƤhĀč[ViųĨYgJv[ɰVmayɯ	
 
5)%/	
 ; <	
 
,17)+)5	
 0 1	
 
;	
 	
  	
 
<	
 	
 
	
 
0	
 	
  	
 
1	
 	
  	
 
35,17	
 *  *

 , ,

 ; < 0 1	
 iJK¯À¼¶mĀčnɯ	
 
	
 	
 	
 	
  



	
 	
 	
 





	
 	
 	
 	
 	
 	
 	
  	
 	
 	
 	
 	
 






 	
 
	
 

ikv[ɰɲșǟmǟǞnáȋǥȪ[aylƘJazmh[Oɯ ƎŅmËlɯĠŎhĀčXgJmONv[ɰkMɯĀčƎŅƌOƂŉmś w ȲLiɯ
GHm}KlGHO w ðĀčXv[ɰ	 	  ȈɞædgŋƌƾĐőƌǆťŠhĀč[iɯőƌǆmĉO lkv[ɰçLoɯ	
 
5)%/	
 ; <	
 
;	
 	
  	
 
<	
 	
  ) 	 35,17	 )  )  ; <	 mĀčȄƣnɯ	
 
	
 	
 	
 



) 	
 	
 	
 	
 



)	
 

ikv[ɰVhnŴȡǝlNlRJYɯȚǦŅƌO  ðǇɪlkmhɯ! Ȉɞ{ ȈɞæKƑOȓJhY|KɰçLoɯ	
 
5)%/	
 ;	
 
;	
 	
  ) 	 35,17	 )6  )1  ; ;	 mĀčȄƣnɯ	
 
	
 	
 	
  
ikv[ɰ	
 

) 	
 	
 	
  

) 	
 

Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 45 —

ĢȈɞȥȻńiĀčmƌònɱŏɱŏŮlYkTok~kJmhɯɍăĀč[iPlnĀčȞǾƌbTȈɞȥȻńƘNkTokv] ɰVmiPɯĤZȈɞȥȻńȊȺ[k~oɯȈɞȥȻńmĉlƍƌ r ØĎYgɯr ĮĚŬ[iJKƂŉOhPv[ɰçLoɯ@* An@*  *  * AiƘRViiĤǵh[ɰ	 X~lɯŋƌɯƍƌɯŋƌɯƍƌm}KkȊȺYmiPlnɯNdVhRRdgĚŬƂŉ[ViOhPv[ɰçLoɯƯm}KlƘRViOhPv[ɰ	
 
5)%/	
 ; <	
 
,17)+)5	
 0 1	
 
;	
 	
  	
 
<	
 	
 
	
 
0	
 	
 	
 
1	
 	
  	
 
35,17	 * ; ,  ; 0 < 1	
 Vm 35,17 Ǝm *250%7 nɯ@*  ; , *  ; , AiƘRViiĤǵh[ɰ	 kMɯ*250%7 ËmȈɞȥȻńmƌ}zĀčƎm¢ÃòmƑOĿJĺģlnɯȈɞȥȻńmƌbTĀčYaũhƋșYɯĤZ *250%7 þşædgƲm¢ÃòĀčYv[ɰƎŅăOø
dgJoɯƎŅăzþşĀčXv[ɰ	 Ⱦlɯ*250%7 ËmȈɞȥȻńmƌ}zĀčƎm¢ÃòmƑOŒkJĺģlnɯƂŉYa¢ÃòĀčYaƳɛhȁÎYɯIvdaȈɞȥȻńnǇȠXv[ɰǇȠXaȥȻńÛɘnƎŅăǵOødgJgzùgǇȠXv[ɰɍăĀč[iPkjnɯĚŬƂŉlŀPymƌòÈLgMRViOhPv[ɰ	 	  i`   f	
 :5,7) ƎnɯƯm}Kl  ǢǘYgɯțȋǙġmwmƂŉhĀč[ViOhPv[ɰV@ƘŠkY :5,7) ƎAiJJv[ɰ	 :5,7) 	 ¢Ãɱɯ¢Ãɲ	 	 ƘŠkY :5,7) ƎhĀč[iɯ¢ÃťŠO@©¥½ťŠAlkv[ɰVlŏYɯV
vhȬƓYa  mIĀčƎhĀčYaiPm¢ÃťŠn@¡£ťŠAh[ɰöƠɯȤǷƮýɋmƌòn  Ƀƌ¢ÃhIɯ@ AiNɯ@) AiNmƎŅhnIv] ɰVmayɯǗɢlȚǦ[iPln@ ɃƌB ɃƌƎŅȚǐAiJK¢ÃĽƉșdgȚǦ
YgJv[ɰVmȚǦťŠO¡£ťŠh[ɰ	 YNYɯ ɃB ɃĽƉlnƖɕONNÅlɯƎŅlĽƉ[Vih¢ÃɏOļLv[ɰVnɯƎŅ¢ÃO  ƎŅIa &<7) ŭȞbN~h[ɰçLoɯŋƌƛďƌŅ  ƤhƎŅȚǦ[ln &<7) ÛÅŭȞh[ɰYNYɯñǻşŋƌm  ɃƌȚǐn &<7) h[N~ɯ_mv
vhíņ[o  ƎŅāhǀwv[ɰVmýɋm  Ƀƌ¢ÃO©¥½ťŠh[ɰŀɏm¢Ã¢líņ[iPlnɯ©¥½ťŠl}íņOƛďh[ɰ	 abYɯ2575%1 mƘŠkY :5,7) ƎædgĀčYa©¥½ťŠ­¾nɯ   ǸhȬƓ[ƘŠkY 5)%( ƎhȭvkTok~kJmhɯIRvhz 2575%1 ¯À¼¶N~øčYgĆǔ[mOĸƞh[ɰ×mȣȫhåŹYa¯À¼¶hæKĺģ{ɯ¢ÃȢƢ­£ædgȢƢ[aym­¾åŹ[iPnɯ¡£ťŠhĀčYaƑOȓJiůJv[ɰ	 	  7H5"MTgk	 ¯À¼¶OŋșYgJiPɯ_m¯À¼¶ËmƂŉYaĽƌlľɋN~¢ÃÙø[Vi@øč[AiJJv[ɰȤǷƟÝȦŉ[aymĽƌl¢ÃøčhP}Kl
YgMToɯ¯À¼¶mŋșɔŃYgN~ƟÝȦŉYgɯ_lŮZaȤǷX]Vi
OhPv[ɰVl}ɯ¯À¼¶n_mĐåbTĆǔ[@®¼ ² AlkɯÁª¾Ya¯À¼¶@¯½Ã»ÁAiYg×mÓlƈè[VizğȐh[ɰ	 	 — 46 —

SENAC Vol. 45, No. 4（2012.10）

	
  MTf"Iu[	 ¢Ãøčln 5)%( ƎǔJv[ɰ	 5)%( 	 ĽƌɱɯĽƌɲ	 	  nțȋǙġhɯ lɈŤkƍƌÈLi@*257  AiJKĥm­¾N~øčYv[ɰțȋǙġlɖ[ƟÝ{ƼųÐɤnĀčmĺģiĤZhɯĖĈiYg  D lYgÆXJɰĀč­¾iɇKmn *257  iJKĥm­¾OņĳYgJkTo¼ÃlkmhɯI~NZyǔųYgMNkTok~kJVih[ɰkMɯ@Amáȋlnɯ:5,7) Ǝm}Kl *250%7l}ƘŠƂŉOhPv[OɯIvæKViOkJmhȬƓnǢǘYv[ɰ	 çLoɯ*257  iJKĥĉm­¾lɯ	
 
 	
 	
 	
 	
  	
 	
 	
 	
 	
 
iƘJgíņYgMPɯ¯À¼¶Ëlɯ	 5)%(

	 ; < =	 iƘToɯVm 5)%( Ǝŋșũɯ; ɯ< ɯ= ikdgŋșOȆȇYv[ɰøč­¾
lƋșOødgJgzɯ5)%( ƎmĽƌøčOňÎ[vhȭwȸwȇTmhɯ*257  møčƌònƯm}KlɳșlāTgƘRVizhPv[ɰ	
 
 	
 
 	
 
	
 
5)%( ƎŋșƖlɯ­¾OņĳYkNdaɯ¢ÃOȳ~kJĺģlnɯ¼Ãlkdg¯À¼¶OţćȁÎYv[ɰȾlɯ­¾ËmƌòOĿJĺģlnɯIvdaƌònǇȠX
v[ɰ	 5)%( ƎmĽƌmáȋlnɯɍăĥ{ɯ(2 ĵĀčiĤĵm (2 ĵøčƘRVizhPv[ɰV~nɯĀčiøčiJKƑĦOǚkv[OɯøčȞǾƌ{ȊȺYmųĨnĤZh[ɰ	 ­¾hnkRɯÃ²Ã¤ɭƱǥlnƫǄøčɮædgøčYaJiPlnɯÛÆm}KlƘPv[ɰ	 5)%(	 ɯĽƌɱɯĽƌɲ	 	 VmƎŋș[iɯ¯À¼¶mŋșOÄƖóưYɯÃ²Ã¤N~mƌòøčŨeǍŵlkv[ɰ_VhɯɈĂkƌòÃ²Ã¤N~øč[iɯ_mƌòŻŉmĽƌlÙøY
aũɯŋșOþɔYv[ɰVmayɯ5)%( ƎmµÁȎŷYgƌòøčYkToɯJevhadgzóưYavvh[ɰ	 5)%( ƎhzțȋǙġmwƂŉ[ViOhPv[ɰV@ƘŠkY 5)%( ƎAiJJv[ɰ	 5)%( 	 ĽƌɱɯĽƌɲ	 	 ƘŠkY 5)%( Ǝhøč[ĺģnɯøč¢ÃO@©¥½ťŠAbiÜŉXmhɯƘŠ
kY :5,7) Ǝhåda­¾æKŭȞOIv[ɰvaɯĀčYaiPmƌòiĤZƌòĵ
mĽƌĤZɥǙhÊsŭȞOIv[ɰçLoɯ	
 
5)%/	
 ; <	
 
,17)+)5	
 1	
 
;	
 	
  	
 
<	
 	
 
	
 
1	
 	
  	
 
:5,7) 	
 ; 1 <	 	 Āč­¾iĤƪɯ*257 mɋānÁª¼léņYv[ɰǒĻĽƌh­¾ĥOĽƗhPÁª¼
zIv[ɰckwlɯƫǄĀčmțȋǙġn  hYaOɯƫǄøčmțȋǙġn  h[ɰ	 Fortran スマートプログラミング —第２回

サブルーチンと入出力—— 47 —iJK¯À¼¶håŹXa *257  iJK­¾N~øč[lnɯ	
 
5)%/	
 ; <	
 
,17)+)5	
 1	
 5)%( 	
 ; 1 <	 m}KlƘNkTokv]

ɰVmĺģɯ; z 1 zĤZ  bN~iůdgɯ	 5)%( 	
 1 ; <	 iøč[iɯ1 i ; lnɯƱYJòOÙøXv] ɰ	 ƘŠkY :5,7) ƎɱșhƘPȸva¢Ãƌ}zøč¢ÃOŒkJmnĬɨIv] ɰ
VmiPøčYkNda¢ÃnȭwɩoYaVilǡŤYv[ɰȾlȣLoɯɲĮm 5)%( ƎædgāTgøč[VinhPv] ɰçLoɯÅȥm¢Ãɯ	 5)%( 	 ; 1	
 5)%( 	 <	 m}Klɲșm 5)%( ƎlāTgøčY}KiYaĺģɯ; i 1 lnƱŚkòOÙøXv[Oɯɲșǟm 5)%( ƎŋșƖlɯøč¢ÃOkJiJK¼ÃhţćȁÎYv[ɰ	 	
  MTh"-CHOn	 ­¾N~¢Ãøč[iPɯȞƷYa­¾OņĳYkNdaɯƘPȸva¢Ãƌ}ĿRm¢ÃøčY}Ki[oɯŋșƖ¼Ãlkdgɯ¯À¼¶nţćȁÎ
Yv[ɰVɗSayɯ5)%( ƎËl¼ÃÿǑƂŉøViOhPv[ɰ	 5)%(  )55 	 ĽƌɱɯĽƌɲ	
 

	
 	
 	
 	
 ¡£ťŠøč	 5)%( )55 	 ĽƌɱɯĽƌɲ	
 

	
 	
 	
 	
 	
 	
 ©¥½ťŠøč	 VVhɯ  lnƎǙġÈLv[ɰVm 5)%( ƎŋșYaiPɯøč¼ÃOȰVi  hƂŉYaƎǙġmșr¹Á¯Yv[ɰçLoɯ	
 
(2	
 .	
 	
  	
  	
 
	
 	
 5)%(  )55	
 ; < =	
 
	
 	
 
	
 
)1((2	
 
	
 	
 	
 	
 	
 ;	
 	
  	
 
iƘToɯ¼ÃOȰViƎǙġ  mșl¹Á¯Ygɯ_mșN~ÿǑȆȇYv[ɰ	 zY@­¾mȁÎAɯ[kcɯ¢Ãøč[iPlɯ_ÛÅødgJkNdaɯiJKĺģƥǣ[bTk~ɯ)55  mÙl )1(  iƘRVizhPv[ɰ¢ÃmĀčĮƌOÇƓmiPlnɯ)55 N )1( ƂŉøgMPɯ¢ÃȁÎƖǆhƯmÿǑlɃx}Kk¯À¼¶lYgMRiȓJhY|Kɰ	 	  	    )oMT	 êĆk¡£ťŠøčiYgɯ1%0)/,67 ǔJƑƻOIv[ɰçLoɯ	 5)%(

	 ; < 1	 iJKøčƎhnɯøč­¾ *257  ɯ	
 


	
 	
 	
  ) 	
 	
 	
  	
 

m}KlåŹYv[OɯåŹ[aylnøčĽƌmŏŮŚlŸLgMNkTokv] ɰŭȞk¢ÃùɋƘPȸvkTok~kJYɯɥǙɕɇLVizhPv] ɰ	 VlŏYɯ1%0)/,67 øčƎhnɯøč¢Ã@Ľƌɺ¢ÃAiJKÙøťhȥȻ[mhɯjmĽƌlÙø[Nøč­¾mËhƓǦ[ViOhPv[ɰ	 1%0)/,67 øčƎæKiPnɯv\øč[ğȐŰmIĽƌ{ɍăĥ 1%0)/,67 ƎhǜɐYv[ɰ1%0)/,67 ƎnƯm}KkťŠh[ɰ	 — 48 —

SENAC Vol. 45, No. 4（2012.10）1%0)/,67	  §Ã¶½£ĥ 	 ĽƌɱɯĽƌɲ	 	 1%0)/,67 ƎnɡŋșƎkmhɯùgmŋșƎ}ĉlƘNkTokv]
ɍăĥmǜɐbTkmhɯĵŌȣnąȿŭȞh[ɰçLoɯ	 ɰvaɯĽƌ{5)%/	
 ; < % 	 ,17)+)5	 1	
 1%0)/,67	
  237,21 	
 ; < 1 %	
 iƘPv[ɰÀÃ¾ĽƌbThnkRɯ86) ƎhƂŉXaÀÃ©¾ĽƌzǜɐğȐh[ɰ	 Vm 1%0)/,67 lǜɐXaĽƌlŏYɯøčƎnɯ	 5)%( §Ã¶½£ĥ	 bTh[ɰĽƌmƂŉnŭȞIv]

ɰŭȞk~oɯƎǙġ   ædgɯ	 5)%( §Ã¶½£ĥ )55 	 m}Klɯ)55  { )1(  ȼĎ[Vihɯ¼ÃǛǓ{ȁÎƖmÿǑ[VizğȐh[ɰ	 1%0)/,67 øčlŏ[øč­¾nƯmťŠhǔųYv[ɰĽƌmɥǙnÞųh[ɰ	 §Ã¶½£ĥ	 	 	 Ľƌɱɺ¢Ãɱ 	 Ľƌɲɺ¢Ãɲ 	
 
	
 

	
 

@§Ã¶½£ĥAN~@ AvhO 1%0)/,67 øčƎɱĮhøčX¢Ãh[ɰçLoÅç
m}Kl§Ã¶½£ĥO 237,21 miPlnɯ	 237,21	
 
	
 	
 ;
	
 < )
	 	
 1 	
 m}Kl­¾lƘJgMPv[ɰƯm}KlɱșfeƘRVizhPv[ɰ	 237,21	 	 	 ; 	 	 	
 < ) 	 	 	 1 	 	
 1%0)/,67 øčlnzKÄeĆǆOIv[ɰ_nɯŭ\YzǜɐXaĽƌùɋøč­
¾lȥȻ[ŭȞOkJVih[ɰȥȻYkNdaĽƌlnɯ1%0)/,67 øčƎmŋșĉvhl
ÙøXgJaòO_mvvƲv[ɰVmayɯI~NZyùgmǜɐĽƌl¢­¾£òÙøYgMToɯĽƗYaJĽƌbTøč­¾lȥȻ[ViOhPv[ɰçLoɯ	 5)%/	
 ; < % 	 ,17)+)5	
 1 ,	
 1%0)/,67	
  237,21 	
 ; < 1 %	
 
;	
 	
 
	
 
<	
 	
 
) 	
 
1	
 	
  	
 
(2	
 ,	
 	
  	
  	
 
	
 	
 	
 %,	 	 ,	 )1((2	 5)%( 237,21	 m}Kl¯À¼¶ƘJaiYv[ɰøč­¾iYg *257  iJKĥm­¾lɯ	 237,21	
 	
 ;
iƘPȸ

	
 %

	  	 hMToɯ5)%( Ǝŋșũɯ; nĽƗXv[Oɯ< { 1 n_mvvh[ɰɍă % mĺFortran スマートプログラミング —第２回

サブルーチンと入出力—— 49 —

ģlnɯÙøXaȞǾ %mwOĽƗXv[ɰ	 kMɯ1%0)/,67 lǜɐXaĽƌmýōnɯƯm 1%0)/,67 ĀčƎhĀč[VizhPv[ɰ	 :5,7) §Ã¶½£ĥ	 VmĺģɯùǜɐĽƌO@Ľƌɺ¢ÃòAiJKťhĀčXv[ɰzdizɯ1%0)/,67 ĀčƎŋș[iɯǜɐXaùĽƌm¢ÃOƫǄťŠhĀčXmhɯĽƌOĿJiǉɟh[ɰěIL\òǥȪYaJiPÛľnɯIvækJƑOȓJiůJv[ɰ	 	  ;*,D".H=G/FH4	 :5,7) Ǝ{ 5)%( Ǝædg­¾N~øĀč[ĺģɯãzƂŉOkToɯțȋǙġ  	 ØĎYa@*257  AiJKĥm­¾æǔYv[ɰVlŏYɯÞųm­¾æJ
aJiPlnɯ23)1 ƎædgøĀčƎmŋșĉl­¾ĥƂŉYgMPv[ɰV@­
¾Ã¯Á[AiJJv[ɰ23)1 ƎnÛÆmťŠh[ɰ	 23)1 *,/)	 # *250 $# 67%786

 $# )55 $	 #	
 $mɋānǢǘğȐh[ɰ_`mȥȻɭćūƂŉńɮmųĨȚɴlǦYv[ɰ	 Țɴɰ23)1 ƎmćūƂŉńmųĨ	
 
Ƃŉń	
 

ƂŉŲĹ	
 

ƂŉńmųĨiƼų	 ƍƌÈLɭƍƌĽƌ{ƍƌŠÈLVizğȐɮ	 Ã¯ÁYaũɯ5)%( Ǝ{ :5,7) ƎmțȋǙġiYgæK	 ƎŅăhƂŉ[ɭƎŅĽƌzğȐɮ	 	  ­¾ĥ	 ­¾ĥnŀƎŅÂőƎŅƱYRƂŉ[ŭȞOI	 ƎŅăhƂŉ[	  	  ­¾ťŠ	  Ǣǘ[i¡£ťŠmøĀčOÜŉX	 ©¥½ťŠmøĀčæKiPnG81*250%77)(HƂŉ[	 ƎŅăhƂŉ[	 ƒņm­¾æKiPnG2/(HɯņĳYkJ­¾ 	  ­¾ŲĹ	 æKiPnG1):HƂŉ[	 ƟÝlģkJi¼ÃOǛǓ[	 ¼ÃmiPl¹Á¯[șmƎǙġƂŉ[	
 
 	
 
ƎǙġ	
 
Ǣǘ[iɯ¼ÃOȰPaiPln¯À¼¶OţćȁÎ[	 	 çLoɯțȋǙġ  m¡£ťŠ­¾@7)67 287AiJKĥl[iPnɯ	
 

	
 

țȋǙġ	
 

23)1

*,/)7)67 287	 iƘPv[ɰvaɯțȋǙġ  m©¥½ťŠ­¾@7)67 (%7AiJKĥl[iPnɯ	 23)1

*,/)7)67 (%7 *25081*250%77)(	 iƘPv[ɰkMɯņĳ[­¾ƂŉYg :5,7) ƎhƘPȸxiɯ_vhƘPȸvg
Ja¢ÃOÅƘPXgƿLmhƼųOŭȞh[ɰVĮɊYaJiPlnɯ67%7861):
i )55  ƂŉYgɯ­¾Oņĳ[ĺģmÿǑǔųYgMRŭȞOIv[ɰ	
 67%786  ǢǘYg 23)1 Ǝŋș[iɯƂŉYa­¾OņĳYkToɯ_mĥĉm­¾OƐalåŹXv[ɰVmayɯ5)%( Ǝhøč[aym­¾Ã¯Á[ɝl­¾OņĳYkJiɯÇŭȞkǮm­¾OåŹXgYvJv[ɰVɗSaylɯ­¾OøčǔmiPnɯ67%7862/(ƂŉYgɯ_mņĳ YaƑOȓJh
Y|Kɰ	
 çLoɯ©¥½ťŠ­¾@7)67 ,13Aøč­¾iYgțȋǙġ  lƂŉ[lnɯ	 23)1

*,/)7)67 ,13 *25081*250%77)( 67%7862/( )55	 — 50 —

SENAC Vol. 45, No. 4（2012.10）m}KlƘPv[ɰVm 23)1 Ǝlnɯ)55 iJK¼ÃÿǑOƘNgJmhɯÃ¯ÁYaƖǆh­¾OņĳYkToɯƎǙġ  mșr¹Á¯Yv[ɰ	 ­¾rĀč[ĺģɯŋș¯À¼¶hmĀčĪÚmµÁiŋɝl¢lƘPȸvµÁnŭ\YzÄȒYgJv] ɰVnøĀč¨Ã¤ďǏ}RɄǔ[aylɯÄƖȥŸɦķrmȭwƘPOÕĳ[ayh[ɰVmayɯǥŋlƘPȸwňÎX]aJiPln­¾ÀÃYv[ɰÀÃnɯƯm '/26) ƎhșJv[ɰ	 '/26) 	  nÀÃ[­¾mțȋǙġh[ɰ'/26) Ǝŋș[iɯ_mƖǆvhlțȋǙġ lĀčYaùgm¢ÃO¢lƘPȸvv[ɰzdizɯ¯À¼¶OƱŚlȁÎ[oɯùgm­¾OȑĐǝlÀÃXmhɯɀŚn '/26) ƎƘNkRgzĬɨIv] ɰ	 ­¾ÀÃ[iɯțȋǙġ  i 23)1 ƎhƂŉYa­¾ĥmɖënȿĂv[ɰVmayɯĤZțȋǙġlɯąm­¾ƐalƂŉYgÃ¯Á[VizğȐh[ɰvaɯĤZĥĉm­¾þşÃ¯Á[VizhPv[ɰabYɯþÃ¯ÁYgz_ÛĉmȭwƘPmȆȇlnk~\ɯ­¾m÷ɧlźdgȭwƘPYv[ɰ[kcɯ@řPźYA
[Vilkv[ɰ­¾řPź[iɯ5)%( Ǝl}øčnÄN~{Ǡ[Vilkɯ
:5,7) Ǝl}Āčn­¾m÷ɧN~ƘPǠYv[ɰVmayɯřPźYgN~ :5,7) ƎhĀč[iɯ_ÛĉlƘPȸ b¢ÃnƿėXv[ɰ	 kMɯřPź[mOǟǝhIoɯ5):,1( ƎæKVihɯÀÃ]\iz­¾řP
ź[ViOhPv[ɰ5):,1( ƎinɯƯm}KkƎh[ɰ	 	 5):,1( 	  nþşƚĄN~ȭwƘP[­¾mțȋǙġh[ɰřPźYĆǔ[oɯv\ :5,7)
Ǝædg­¾l¢ÃĀčYgMPɯƯl_řPźYgɯ5)%( Ǝædg_m¢ÃøčYgæKVizğȐh[ɰ	 $&jZ"JX	 ÔĮnɯ¯À¼¶mſŀlàdgŭȞik®¾ÃÁmæJƑiøĀčmȩǿleJg
MȨYYvYaɰƌòȤǷ{ȤǷƮµº¿Ã»ÁlŭȞk 2575%1 mĸƞǝƎƻmȬƓnɯVhtuňÎh[ɰVvhȬƓYaƎƻædgɯj j ¯À¼¶ƘJgÆXJɰaRX ƘJgȃɫǭyoɯjKJKżɥhȤǷƮĐåX]oďǏOÅONONdgR
mhɯX~l´Ã£k¯À¼¶OƘT}Klkv[ɰ	 XgɯVVvhm¯À¼µÁhnƌòðąlȤǷ[mOĸƞhYaɰɍănȝƌm¢ÃÄƀYgěžKViOhPv[Oɯ_ædgȤǷ[iPnɯIRvhzȞǾWi
mȤǷȊȺ[ťhȥȻYvYaɰVlŏYɯƚȹm 2575%1 lnɯƌòmɞģÄem¢ÃĵiYgi~Lɯ_mɞģɕmǅǷȥȻ[VihɯȝɟkÿǑÁ¯¾lȚǐ[ÖȂwOŐøXgJv[ɰ_mÄenɯ@ƎŅăAh[ɰƎŅmɞģ@ƎŅăAiJK¢ÃĵhěžJɯƎŅăekJbɯƵȶYa[iJKǅǷOhPv[ɰzKÄen@ɍăȤǷAh[ɰŋƌ{ƍƌmɍăÄem¢ÃiYgěžJɯ(2 ƎƘNkRgzɯɍăɕmǅǷȥȻhPv[ɰ	 ƚȁĮhIƯĮnɯƎŅă{ɍăiJdaɞģ¢Ãĵi_mǅǷleJgȬƓYv[ɰvaɯƵȶǝƐYJƎƻmËN~ɯǴȏOædgêĆbiůzmJReNȀÕYɯ_~ĆǔYg¯À¼¶m·Á¡¥Áƨl[¡¦ ȬƓYaJiůJv[ɰ	
 

Utfm
#$	
 øɒ 2575%1 ŋȴ¯À¼µÁɯơǕŝƭÂŕƞȕÓÂǊƺęîɯ­£©Áɯ Ŝ