• 検索結果がありません。

       田  中  武  美*

N/A
N/A
Protected

Academic year: 2021

シェア "       田  中  武  美*"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

小型機によるFORTRANソースプログラムの   エラーチェック

      吉  田     将*

       高  木     誠**

       田  中  武  美*

         長  野  宏  宣***

        Error Check Program,for FORTRAN Source Program with Sm巳11 Scale Computer

      1

Sho Yoshida;Makoto Takaki, Takemi Tanaka and Hironobll Nagano

1. まえがき       限を加えている。

 電子計算機の利用件数は,年々増加している

      2. 使用機器 が,本学の計算センターに設置されている電子計

算機が小型であるため,長時間の計算を要する場   本体:OKITAC−5090C

合や,・大容量の記憶装置が必要な場合は,外部の       コァ4000語(1語50ビット)

大型計算機センターを利用しなければならない。    ラインプリンター:1台 このような場合,つまらないエラーのために,実   紙テープ読取装置:1台 際の計算がされないままプログラムが返ってくる

のは無駄である。現状では,ターンアラウンドタ   3・基本方針

イムが一週間以上にもなることがあり,その間研    チェックプログラム全般にわたって,次のよう 究が中断されることもしばしばある。       な約束をしておく。

 また,本学では,ほとんどALGOLIPを使用   OKITAC−5090Cは紙テープ入力であるから,

するので,FORTRANを使う機会が少なく,プ  ソースプログラムは,コーディングシートに書か ログラムのエラーが多いと思われる。そこで,九 れたそのままの形でテープにパンチする。また,

州大学に大型計算機センターが設置されたのを機   行の後にできたスペースは不要だから,ステート 会に,本学のOKITAC−5090Cを使って, FOR  メントの終りに,エンドマークを付け(C/Lの TRANソ_スプログラムのエラーチェックプログ   コードを使用する)その後にすぐ次の行を続けて

ラムを作ることにした。すでに幾つかの大学で同  パンチする。

じ目的のプログラムが作られているので,それら   プログラムは,できるだけサブルーチンの形で を参考にした。文法は,九州大学に置かれている  作成し,同じ形の処理が重複するのを避けると共 FACOM230−60のFORTRANを基とした。な  に,一部分のプログラムができれば・全体力Sでき お,記憶容量や処理の簡易化のために,多少の制   ていなくても,その部分のチェックが可能なよう

 *電子工学教室

**株式会社島津製作所

***目本電信電話公社通信研究所

(2)

に鑑量および処醐の点から,、パスの方 START

法によるチェックを行なう。すなわち,ソースプ ログラムが全部読み込まれた時点で,チェックは 終了する。

 処理は1プログラム単位ごとに行ない,実際の チェックは1ステートメント単位で行なう。他の 部分で必要となる情報は,表やカウンターを作っ て保存しておき,不要になれば消去する。

 各行には先頭から順に追い番を付けて印刷し,

エラーが見いだされれば,その時点で同じ行の後 にエラーメッセージを印刷してその文のチェッを 終了し,次の文の処理に移る。チェックプログラ ムのできていないステートメントは,その行の後 に UNCHECKED の文字を印刷して次の文の

処理に移る。

4 チェックプログラム  4・1 全体の流れ

 プログラム単位のチェックを行なう全体の流れ を図1に示す。

 まず先頭の6文字を読み込み,第1桁目が C ,   * , ¥ であれば,それぞれ注釈行,デバ

ッグ行,JOB制御だから,読み込み,印刷し処      図1 全体の寵れ回 理する。そうでなければ,1行全部を読み込み,

印刷する。

      4・2 表  次に,FORMAT文以外の文は文中の空白に意

味を持たないので,空白を詰めて格納する。同時   ソースプログラムを処理するために必要な情報 に,後で代入文を分離するための情報として,   は・各種の表やカウンタに保存しておかなければ

(…) の外側にある. ・一 と・, との数をカウ  ならないが・このプログラムでは・以下のような ンターに貯える。最後に, ( と ) との数の_  表を用意する。各表の構造は図2に示す。

致をチェックする。FORMAT文はそのままの形   a キ・一ワード表

で格納する。      各ステートメントの先頭の6文字と,そのステ  空白詰めの後,END行かどうかを調べ, EN  一トメントのチェックルーチンの先頭番地とを格

D行であれば,終処理を行なってプログラム単位  納してあり,文の識別に利用する。

のチェックを終わる。

 END行でなければ,次の行の先頭の6文字を    b 名 前 表

読み込み,継続行以外の文の種類を識別し,チェ   1語に,ソースプログラム中で出現したすべて ックして次の文の処理に移る。      の名前を書込む。対応する情報部1語には,その  継続行の場合は,読込ルーチンに戻り,前記の  型(整数,実数,倍精度実数,複素数,倍精度複 処理をくり返す。      素数,論理),種類(変数,配列,文関数),

START

6字盲売込   ・ 駕 A

寧 c,)κ,¥

NO 舗込

@ルーチン

読込 @ルーチン

臼  刷 仲  刷

処  i理 空白詰

@ルー手ン

END行 6写1疏込 @ NO

苔処理

@∫し一チン

c,*,¥

@ NO 拒ア行

@ NO

STOP

1

識別 求[チン

識別 @几芦手ン

今エック

チェ・ソク

求[チン

求[チン A

(3)

COMMON, EXTERNAL, FUNCTION, SUBRO   O〜139番地はOKITAC−5090Cに固有のもの UTINE,値が入っているか,使用されたか,配  である。

列の次元数,DO文の制御変数とDO nestの深さ,  この中の,120〜139番地は,印刷時のFORMAT COMMON, FUNCTION, SUBROUTINEの並び  記憶部で,読み込んだ1行分のステートメントは や引数の情報を記入している番地,を記入する。  そのまま印刷するから,ここに直接格納して印刷       する。

 C 文番号表

定義文および指定文の文鶴追い獄の種ト:㌶難…膿竺驚て㌫二

類,等を書込む。指定文番号は,対応する定義文

      番地と,関連のあるカウンターの番地が準備され 翻があれば・チェックした後消去する・践文 ている.したがって,このプ。グラムでは,繊 番号は,指定されれば,サインビットを1にして

おく・     行訟鑑㌶さ芸クプ。グラムC命令

 d 組込関数および基本外部関数表    ・ 群を入れる。OKITAC−5095Cは,1語2命令で  これらは,それ自身の型,引数の型によって,  あるから,命令は,約5400ステップまで可能であ 一群にまとめて名前を格納しておき,その番地に  る。

よってそれぞれの型を判断する。      2900〜2999番地に,キーワード表を格納しておr       く。

   キー「ワード 表(2誌)       3000〜3599番地は名前表とする。使用できる変

時地 キーワード    糎の名前は約3°°である・

       3600〜3799番地は文番号表とする。定義文番号 W+50番沌  処理ル・一手ン先頭番地     は若い番地から・指定文番号は古い番地からそれ       ぞれ格納していく。

   名前表(2培)

       印刷領城

       刊q W+300暑地      %20

       バΨファ領斑工(空白鵠前〜

       13        制衙襲散指示後級指示        胸ファ領域皿(蛍計き後)

       EXτERNAし事…示      

の  1旦±

文番号表u誌)       鹸群   1

  5追り番 種類    丈番ミ1      .        .      2亀鴨        こヨ む

定載噛麟齢つoぽの深心     

キーワー

ロ    _洲

       さ  

組▲〜S関4k スL基本タト書?関数表(1言智)      名前表工 (づ島前)       .

      32r『,

       ヨヨ       コ

[亙玉==:=コ   名前喪・(撫)   :

      弱rr;

       3600

       文番号1良

      37q角   回2 各種表の構造         38°° 組込蘭敬展基本外音ト簡敬表

      38『¶

       3900

       作敦番地

4・3 記憶装置の割付      3『q『

記憶装置内における各表の位置を図3に示す。      図3 記憶装買?割付1

(4)

 3800〜3899番地には,組込関数および基本外部   4・5 各文のチェック

関数表として,それぞれの名前を格納しておく。   識別が済んだら各文のチェックに移るが,キー  3900〜3999番地は作業番地で,COMMONの並  ワ_ドの長いステ_トメントは,まず5字目以下 びやFUNCTION・SUBROUTINEの仮引数の情  のっづりを調べ,その文であることを確認してお 報を格納する。      いてチェックに移る。

       文が多数あるので,ここでは,型宣言文,

 4・4 文の識別

      DO文,代入文について説明する。

 文の識別を行なう部分の流れ図を図4に示す。

まず空白詰めのとき作成したカウンターを調べ   a型宣言文:type V1,V2,…,V・

て, (…) の外側に 一 があり・ ・ がなけ   チェックの流れ図を図5に示す。

れば代入文であるから・その処理に移る。この時   後の並びはすべて変数名または配列名であるか IF文も同一の情報を持つ可能性があるので(たと  ら,まず名前が文法に合っているか (先頭は英 えばIF(A・GT・B)MAX=A)・先頭3文字が  字,全体で6字以内)を調べ,名前表をサーチす

hF( であればIF文の処理に移す。       る。表に同じ名前があれば,同じ名前を2重定義  代入文でなければ・短いステートメント(DO・   したことになり,エラ_である。

IF・LCM)を分離し・その処理に移る。       次に配列かどうかを調べ,配列でなければその  いずれでもなければ・4字読み込んで・キーワ  名前,型,種類を,配列ならそれに加えて次元数

一ド表をサーチし・対応する文のみ処理に移る。  を書き込む。

ここでも概当する文がなければ・つづりの違いな   同じことをC/Lがくるまでくり返す。

どのエラーである。      配列宣言文の場合は,表に名前が登録されてい  識別から処理に移る前に・文番号の有無を調  てもかまわないので,涜れ図が少し変わる。

べ,あればその処理をしておかねばならない。

START       START

   代λ 文

1・   NO     ・ 3隊曽ξ込

1 2零翫込      、 l      lF(   N°

l  DO

l ・。 D。蜘熱  貸

∴ 3日P目魯灸込       文

…lIF( 1醐理へ藁

1,  N。

l   LCM      LCM支処董堅へ

l  N。

:ゾ4守桓読込

歳充チェック   名前型登録

キーワード表」サーチ       NO

i       C/L     ERROR    有     各文皿理へ       YεS㌦

i.   NO       「      STOP

l  ERROR      

   回4 文の蹴η鴨  一     、 図s 製宜言文

(5)

 b I)0文:DOni−m1, rn2, m3       DOの端末文が現われれば,文の種類や他のD  DO文のチェックの流れ図を図6に示す。    0文との重なりをチェックし,制御変数の不要と  最初は文番号であるから,それを調べ,定義文  なった情報(制御変数であること,DO nestの深 番号表をサーチする。あれば,構文的に端末文が   さ)を消去する。

後に来るという制限に反するので,エラーであ

       c 代入文:v=e る。無ければ指定文番号表に書き込み,DO nest

の深さも記入しておく。      まず左辺の名前を調べ・表をサーチし,論理型  次に制御変数の名前を調べ,名前表をサ_チ  であることがわかれば・論理代入文の処理へ移

し,無ければ書き込む。あれば型を確かめて他の   る。そうでなければ右辺の処理に移る。

必要な情報 (制御変数であること,DO nestの   右辺処理部では・演算数の型の組み合わせが許 深さ)を書込む。制御変数は他の場所で使われて  されているか否かをチェックする。型の組み合わ

いても良い。       せの規則を図7に示す。

 続いて, 一 の有無を調べ,miの処理をして   右辺のチェックは・コンパイラでよく用いる柵 終わる。       を設ける必要があるが・型の組合せに制限を加え       ると,前から順に処理していける。

S「rART

       漕宣教d》イ憂驚鴨位

数尊合成      1. 倍糖度梅幕敬竪(DC)

      2. 複素数型 (c)

O     ERROR       3. 伶轄度蛍敬型(D)

NO       4. 曳敬型(R ) 文番寄表サーチ       5. 整数塾(1)

有  ERR・只      き鱒数の組合せ

NO       葦2寝篭牡 文番轡蓄込

危葡チェ亨ク      汁       ; 名繭裏ワー手      奪

整敬㊥    整鞭         斜線1織、晒1》 NO

YεS      ERROR

名前奮込

       b         l Yεs         鯖皐剛釦し開杖㊥ふnカ1こ一敦       指  数

帽報害込

雑= εRR。R    底

  YES 徹L 史}理

 STOP      梧緕1●許±」れ信 》       亀        紬黒時優覧噛仕の1高u労1㌃亀致

図6 DO丈       図η 理Φ組金せ

(6)

 4 6終処理        また,できる限り詳しくチェックする予定であ  END行が現われれば,表を調べて,次のこと  ったが,種々の点で未決定の問題が多く,まだ充 をチェックする。      分とはいえない。特に,プログラム間のつなぎは  a 変数名または配列名が,左辺または右辺ま  再考の余地があると思われる。

たはそのどちらにも使われていない。

 b 定義文番号が指定されていない。         文  献

 c 指定文番号に対応する定義文番号がない。  (1}柳沢,他:FACOM222によるHARPソ_スプロ  そのあと,他のプログラム単位のチェックに必要   グラムの形式処理と簡単なエラーチェック:情報処 な情報(FUNCTION, SUBROUTINE, COMMON,   理vo18・No 5・1967

EXTERNALの名前と情報)をまとめておく。・  (2)後薦他:中型機によるFORTRAN]Vプログ  名前と文番号は確認のために,並べて最後に印   ラムのエラーチェック:情報処理vol 8・No 5,1967 刷しておく。       (3)小玉・他:NEAC−2203によるHARP5020ソー        スプログラムのエラーチェック :情報処理vo18,

       No 5, 1967

 5.むすび        (4}田中,他:HIPAC 103によるHARP 5020ソース

       プログラムのエラーチェック:情報処理vol 8, No  このチェックプログラムは現在作成中のもの   5,1967

で・1969年の末までには一応コーディングを終え  (5}安在:HARPソースプログラムの中型機によるエ て試験する予定である。ここに発表したものは,   ラ_チェックの方法:九州大学中央計数施設 今までに作成したものの一部であるが,これから   (6)富士通株式会社:FACOM 230−60 FORTRAN,

少し変更を加える場合もあり得る。       解説編1,皿

      6            (1969年11月受肘)

参照

関連したドキュメント

している。この場合,地温変動を左右する砂土の熱特

このことは,自身の「楽」が「仁」=他者への愛,あわれみの実践そのものであることからし

スマートフォンの GPS 機能を利用した。機材は Android 端末の「Sony Xperia z1f SO-02F」、座 標取得には Android アプリの「 GPS Test 」を使用した。 GPS

あらはし侍る︒まことに特もて大空をのぞむにひとしかるべけれ︒猶後の人の正しき説を侍のみ︒中野貞利翁

6 補正手法における課題  前述したように,一般的な補正手法については確立さ れており, ISO

しかし,彼らが大学において,ただ思想内容として無産者独裁を唱え

t どを示す

( 2 ) 情報交換シート,情報交換の感想の分析 今回の実験で行われた情報交換の回数は,平 均して 7 週間で 1 6 回 , 1 回 26