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

情報工学教室安部暁一    八代工専情報電子工学科森本義広

N/A
N/A
Protected

Academic year: 2021

シェア "情報工学教室安部暁一    八代工専情報電子工学科森本義広"

Copied!
14
0
0

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

全文

(1)

メモリ常駐形コンパイラーKITFORの開発

       CBEサポート・システムの開発

(昭和52年10月25日 原稿受付)

    情報処理教育センター深川幸紀

    情報工学教室安部暁一

    八代工専情報電子工学科森本義広

・情報処理教育センター積山洋子

         〃     中   山  泰  雄          〃      矢   鳴   虎   夫

    九州大学工学部電子工学科吉 田  将 ADesign and Development of the Core−Resident FORTRAN

      Compiler.

        −On the Support system for CBE−

      by Yukinori FUKAGAWA       Kyoichi ABE

      Yoshihiro MORIMOTO       Hiroko TUMIYAMA       Yasuo NAKAYAMA       Torao YANARU       Sho YOSHIDA

  Adevelopment and design of core−resident FORTRAN−compiler of the Educational Center for Information Processing of Kyushu Institute of Technology is described.

  The mark−card batch system operated under cafeteria−method, onhne system with multi−

character−displays, batch or interactive system for making picture−data for character−displays and aCAI system has been developed in the Educational Center.

  In this report, an outline of the core−resident FORTRAN−compiler for education, for higher−

language of CAI or for CBE support system.

  This compiler is operated with multi−displays for main input−output devices and is built in the Online−SyStem.

、.まえがき       年12月から勧し・現在まで良好な運繍果を得てい

      る。そしてこのオンラインシステムと連係した,CAIシ  九州工業大学情報処理教育センター(以後センターと   ステムの実用化開発,教務情報システム・図書館情報シ 呼ぶ)では,集団情報処理教育のための,マーク・カー   ステムの試験研究開発等の会話形処理システム,すなわ

ド・バッチシステムがカフェテリア方式で昭和50年2   ちセンターの第2期計画を現在推進している。

月から稼動し,さらに集団プログラミング教育をより充     センターの目標は第2期計画の成果を結合した第3 実させるためにキャラクター・ディスプレイ装置が複数   期計画,すなわちCBE(Computer Based Education)シ 台導入され,これを用いたオンラインシステムが昭和50   ステムを作成することにある。

(2)

 本報告は,教育用ならびにCBEシステム作成の一環      ._

      _      3.KITFORコンハイフーの構成概要 として開発されたメモリ常駐形フォートフン・コンパィ

ラーKITFOR(Kyushu Institute of Technology Fortran)    KITFORコンパイラーは,15台のディスプレイ端末を の概要に関するものである。       サポートするオンライン・システムに組み込まれた,単

2・KITmRコンパイラーとセンター・システムの関;禦㌶:説叉::グラム℃この同じ端

  係

       KITFORの構成は

 KITFORコンパイラーは,センターの情報処理教育シ    (1)1/O制御部(Input Output Controller)

ステムを構成するサブシステムとして,既に稼動中のオ    (2)字句解析部(Lexcal Analyzer)

ンライン・システムに組みこまれ,既存システムが使用    (3)構文解析部(Syntax Analyzer)

しているファイルを共用しながら動作する。主要1/0装    (4)解釈実行部(lnterpreter)

置としてオンライン・システムに組み込まれている複数     (5)エラー処理部(Error Handler)

台のディスプレイ端末を用い,KITFOR自体でフォー   からなるコンパイラーインタープリターである。

トラン入門者教育用のサブシステムを構成する。画面    図一2に概略構成を図一3にデータの流れと制御の流れ データ作成システムがサポートする画面データフデイル   を示す。

とオンライン・システムがサポートする学生用プログラ    3.1.mTFOR

ム・ファイルは本コンパイラーにとって必須のものであ    KITFOR I/0制御部は,オンライン・システムから る。画面データファイルには文法エラー情報,終了条件   {$$KITFOR コマンドの入力によって起動され,

情報やKITFORの動作用画面がセットされている。     フォートランソースプログラムの投入,ソースプログラ  本コンパイラーは,又,後述するようにCAIシステム   ムの表示・訂正・追加,プログラムファイルへの再登録 作成時に用いられ,学習者の応答入力処理と判断分岐情   KITFOR実行結果の再表示,ラインプリンタへのプログ 報を作成し,CAIシステムの柔軟で強力なインテリジェ   ラム,データと結果の出力や,データ変更後の再実行を

ンシーを容易に付加できるように計画されている。すな   行なう等のコンパイラー本体作業以外の入出力制御を行 わちCAIシステム作成用の高級言語として有効に利用   なう。

されるように考慮されている。図一1にセンターのシステ    図一4に1/0制御部の概略とコマンドを示す。写真一1 ム構成図を示す。       にはコマンドの説明用画面の一つを示す。

オンライン コア

一 一一一一一《一一一一一一、

入力 tェーズ

表示・訂

ヌ加登録 o力 tェーズ

子句解析

¥ース変汗

構文解析 レ的言語

?ャ部

目的言語 釈・実Z一

¥示

エラ 正常終了 nンドラー

ITFOR EXIT

図一1       図一2

(3)

、、 ・・.   一、    』・ ・       馳       、

ディスプレイ

_一     師  一  一 結果のデータ・即時表示

表 示

エラー解析・表示 求[チン

 〔Gフー        Gラー  エフー

/zz

 目的言語

@解釈実行 iINTER

@PRETER)

S言語

?ヘ

tェーズ

 字句解析

@テーブル

@割りつけ iLEXCAL

̀NALIZER)

  構文解析 レ的言語発生

sSYNTAX

@ ANALL)

iCODE GEN)

 画面 tアイル

Gラ…用

@画面 S言

¥示 ト登 級ハ fー

ト実 正常終了

・1 F2

メモリ ,

 」ソーヌ.

プログラム

 ●ア㌧

E・ ンz

プログラム 1言記.

@フアイル

一  一  一  一   一  一  一一 一 一 一冊「一一 変形ソース

vログラム

       1_  一  _  _  一 一   テープル

・ .・…  .・・

.・.....ξ.:.: :         .

=Q一

.実行結果1     ..

Dフアイルi;

〔  一   一    一   一    一   一   一   一   一  _   一  一  _   一  一一  一  一  一   _   _   一.  _ _____一 _____

.  −.・

実行結果の格納  ソーヌ、

vログラム q.果の出力

図一3

TRETRY TADATA

一一一一一一一一一一一一一P

       1  FOR COMP工LER        |        l        l

  LEX眺L AN仙工ZERへ 1

       1        1        1

 鯉蛉AX AN仙工ZERへ l  LEXC▲LムN△LエZERから l

       l

_一__________」

(4)

       通りである。

      KITSDISP・・………ソース・プログラムの表示        (訂正)

      KITADDSS……・………1行のプログラム追加。

      KITCATAL−……・…・KITFORプログラムを学生        用ファイルに登録する。

      KITODISP、………・…・…実行結果を端末に表示する。

      KITLPOUT・・………・…ソース・プログラム,データ        と実験結果をラインプリンタ        ーに出力する。

      写真一1

      、.、       KITRETRY………プログラムを再実行する。

      KITSTART…・…・…・…KITFORコンパイルと実行  3.1.L ソースプログラム・インプット・ルーチン       を開始する。

     (PHASE−1)       KITEND…・………KITFORの正常終了。

 フォートラン・ソース・プログラム(とデータ)を入

力する時,最初にオンラインから $$KITFOR を入力す    CANCELGA・・…一…・・KITFORを中断しオンライ る。これでKITFOR I/0制御部のフェーズ1が起動され       ンスタートポイントへもどる。

る。この時点で端末から直接ソース・プログラムを入力

(コマンド KITDINPT をインプットすると入力用画    KITFORの実行結果は,WRITE文が実行される毎に,

面が表示される)するか,従来からオンライン・システ   出力変数リスト中の先頭79桁(1桁はLP制御文字)が ムがサポートしているプログラムファイル中のプログラ   ただちに端末に表示されると同時にワーク・ファイルに ムをKITFOR用のワーク,ファイルに呼び込んでくる。   80桁×100行が書き込まれるのでKITFOR実行が全て

(コマンドは KITPINPT をキー・インする場合)この    終了した時点であらためて実行結果をみることができ 時,転送途中のプログラムを表示しながら高速にワー    る。又,KITFORで処理したソース・プログラムを学生

ク・ファイルに格納する。KITFORが処理できるソー   用プログラムファイルにカタログできる。学生用プログ ス・プログラムの大きさはデータも含めて最大400枚   ラム・ファイルの1本のプログラム長は200行である。

(カード・イメージ)である。

 コマンドは以下の通りである。

・$$KITFOR…・オンライン中核部から KITFOR   PHASE 1へ制御が移る。

・KITDINPT…・ソース・プログラムを端末から投入す   る。

・KITPINPT…・ソース・プログラムをプログラムファ   イルから引き出す。プログラム名が必要である。転   送中のプログラムを端末に表示しながら動作する。

 3.1.2.ソース・プログラムと実行結果の処理ルー      チン(PHASE−2)

このル_チンはソ_ス.プ。グラムの表示.証.追     写真一2

加と,ラインプリンターへの出力,実行結果の表示・出

力,KITFORコンパイラーの起動, KITFORルーチンの    3.2.字句解析部(Lexcal Analyzer)

終了,中断,プログラムの登録や,フォートランプログ    字句解析部は,ソース・プログラムがセットされてい ラムの再実行を行なう。コマンドとその意味等は以下の   るKITFORワーク・ファイルから1行ずつソース・プ

(5)

ログラムを取り出してきて,構文解析部が処理しやすい

形式に変形し麟名,ラベル等を名前表.番地表とデー   ㍊一{

タ領域に割りっける。又,1行ずつ文法チェック等の処理 を行なう時,これをディスプレイ端末に表示を行なう。

写真一3はこれを示す。又,エラーの表示画面を写真一4に 示す。

写真一3

写真一4

プログラム tアイル

璽1

ソース・

プログラム セットエリア

宣言表

雛;:

 T=TOPアドレス

  B=BOTTOMアドレス   P;POINTER

12KB

32KB

!K

4K

図一5

  

ヱ禦1=三

 字句解析部の主な作業は以下の通りである。

(1)ステートメントの整理と文番号のチェック・変換  * 注釈行の読み捨て

 * 継続行の接続  * 空白の読み飛ばし

 * 文番号のチェックと2進数への変換

(2)変数名,文番号や函数名等の表への記入とアドレス   設定

 表は図一5に示すが宣言表,名前表,番地表とデータ領 域である。図一7に変数・配列名に関する割りつけ方法を

示し,図一6に各テーブルのエントリーを示す。      図一6

(6)

宣言表        変数の番地表 配列の番地表    はデータ表相対アドレス,aaaaはデータ領域絶対アドレ  エントリー       エントリー , エントリー       _

名 前

名前表エントリー 属性1 _識_1−.

属性2 属性3 次 元 配列サイズ

名 前

サイズ1

サイズ2

サイズ3

番地表

@アドレス椛ホ

ワークエリア

引数の名前      4ηとアドレス

データ表又は 番地表相対 アドレス

名前の内部 識別コード

引数の名前

+アドレス

+配列情報部,

引数個数 データ表相対 アドレス 内部識別コード

      スで,F7××は基本函数名を不す。

       3.3.構文解析部(Syntax Analyzer)

       3.3.1. まえがき

       構文解析部は,字句解析部によって内部形式に変換さ       れたソース・プログラムを仮想マクロ命令の列に変換す          ・ ると同時に,構文上のエラーチェックを行なう。そのと       き,番地表,データ領域等に対して相対的に割り当てら       れていたアドレス(2バイト)を絶対アドレス(4バイト)

      に変換した後,マクロ命令中にセットする。

       主な作業を以下に述べる。

\      ・仮想マクロ命令の生成

      ・算術(論理)演算におけるオペランドの型のチェック       ・関数,副プログラムの呼び出しにおける引数の個数        型のチェック

      ・DO文の範囲と終端文のチェック

 13×η

      ・GOTO文,算術IF文によってなされる分岐の正当性        チェック

      ・プログラム相互間のチェック サイズ3

サイズ2 サイズ1 配列サイズ

次  元  数 動作マーク データ表 椛ホアドレス

構文解析部の流れ図概要を図一8に示す。

文関故の番地表         サブルーチンに関する

エントリー@        番地表エントリー      構文解析開始

図一7       各種の情報の初期化

(3)ステートメントの認識(KEY−WORD識別)と出現 順・位置のチェック

(4)ステートメントの文法チェックと内部形式への変換  特に数式チェックは推移テーブルと走査 POINTER の2つで行なう。文の変換例を下記に示す。

    10 ANS=X+Y+SQRT(3,14)     OlOO    lOO WRITE(6,500)ANS, X, Y     O200     20 iF(ANS−0.001) 1.,2,3      0300        壮

〔000A AREQ VRxx=VRxx +VRxx +F7XX(LRxx )       ;0100〕

〔0064WRIT(6,aaa)VRxx, VRxx , VRxx ;0020〕

〔0014ARIF(VRxx−LRxx )0001,0002,0003,;0030〕

 ↑   ↑      ↑       ↑

文番号 文識別コード フォートラン内部形式文 プログラム識別番号

ここで,VRは実変数, LRは実数型リテラル, xx等

識別子に応じて 仮想マクロ命令

を生成する

図一8

(7)

3.3.2.仮想マクロ命令について       WRTD  データ出力(表示)  DO型並びをもつ  (1)形式       CGOT  整変数の値に応じ分岐先決定

      ASSI  整変数に分岐先を与える  L LABEL OP OPERAND−FIELD ID    AGOT  整変数の値を分岐先とする

      PAUS  PAUSE文があらわれたことを表示し処理   L;命令全体の長さ       続行

  LABEL;ラベル(2進数)       CHEQ  文字型代入文の処理   OP;命令コード       CHIF   文字型IF文の処理   OPERAND−FIELD;変数定数等に対するアドレス   CONT  何もしない        等       (4)主要サブ命令コードー覧   ID;プログラム識別番号(文字)       命令コード    機    能  (2) 命令コード       ADD#   加算

 構文解析部が出力する命令コードは,字句解析部が出力   SUB#  減算 するフォートラン・ステートメント識別用コードをほと    MLT#  乗算 んどそのまま用いている。ただし,DO文の場合には・   DIV#  割算 DOOPとDOENの2つのマクロ命令に分けられる。ま   PW## ベキ算

た,何らかの演算を必要とするような算術式や,論理式   ISB#   逆減算 がIF文やCALL文中に書かれているときは, EXPRと   IDV#  逆割算   . ARIF(又は, LOIF,その他)のような2つのマクロ命令   IP##  逆ベキ算

に分けられる。       LOD#  算術アキュムレータに値をセットする

(2)・(1)EXPRマクロ命令について      STD#  算術アキュムレータの値を格納する  このマクロ命令は算術代入文(式),論理代入文(式)    C#??   算術比較

を実行するためにある。このマクロ命令は   LODb  論理アキュムレータに値をセットする OPERAND−FIELDにサブ命令列をもち,実行に際して   STDb  論理アキュムレータに値を格納する はこのサブ命令が順番に実行されてある式(代入文)の   Cb??   論理比較

評価がなされる。      NbXX  論理積  (3)主要マクロ命令コードー覧      ObXX   論理和 命令コード  解釈実行部での機能       TbXX   否定 STOP  実行終了. KITFORフェーズ2に制御を    XbXX  排他的論理和

     渡す       ARYX  配列添字チェック,アドレス計算 DOOP  DO文の前処理.制御変数初期化

DOEN   DO文の終端処理.分岐先決定

ARIF   算術IF判断.分岐先決定       #=1(整数型), R(単精度実数型),又はD(倍精度実数 LOIF   論理IF判断.分岐先決定      型)

GOTO   無条件分岐      b=B(1バイト), H(2バイト),又はF(4バイト)

EXPR  算術(論理)式の処理       ??=GT(〉), GE(≧), EQ(=), NE(X), LE(≦),又は CALL  引数をセットし・副プログラムに制御を渡す       LT(<)

RETN  副プログラムから呼び出しプログラムに制御

      をもどす      FlXX〜FgXX, FAXX〜FIXX

READ  データ入力      GlXX〜G9XX, GAXX〜GIXX 関数計算 WRIT  データ出力(表示)

REDD   データ入力

(8)

 3.3.3.構文解析部に関したエリアと概要

 構文解析部に関係したエリアを図一9に,算術式処理用 テーブルを図一1α11に示す。

KB データ領域 ヤ地表

KB 変形ソースvログラム Gリア

入力 構文解析

目的言語 作成

2KB 数式(論理式)?摎pスタック

0.6KB 数式(論理式)

p一時記憶域 5KB ワークエリア

オブジェクト Rード出力域

出力 64KB

TOP

BOT   、

P1 P2

 演算子スタック

[一 }ー一一

Q_L_一

@変数スタック

TOPBOT

P1 P2

  実数型

p丁一一 Qユ__

@ 整数型

@ 論理型

0.6KB

図一11算術(論理)式実行用一時記憶

       算術式処理スタックに関しては,

      (1)演算子スタックの1エントリーの長さは1バイ      図一9      ト変数スタックの1エントリーの長さは4バ       イト。

      (ii)TOP:スタック先頭アドレス(4バイト)

      BOT:スタック末尾アドレス(4バイト)

      P1 :スタック先頭アドレスからの変位       P2 :スタック先頭アドレスからの変位       (iii)実行用一時記憶域は,単精度,整数と論理型変       数は4バイトである。

       3.3.4.構文解析部処理詳細

       算術式は図寸2に示す演算子間の優先順位にもとつい       2KB      て,サブ命令の列に分解される。サブ命令は逆ポーラン        ド記法で表現されており,擬似アキュムレータを使用し        て演算を行なうδサブ命令列の生成の例を図一13に示す。

      代入文ANS=X+Y・SQRT(3.14)は字句解析部で内       部形式VRxx=VRxx +VRxx *F7XX(LRxx )に変形        されており,それが入力となる。命令の生成は,演算子        スタックの頂上と入力演算子との間の優先順位の比較に        より決定される。

      DO文の処理に関しては, DO文の出現位置にDOの制        御変数や終端文ラベル情報をうめ込み,DO終端文には,

図一10算術(論理)式処理用スタック      対応するDO文の位置(アドレス)をうめ込み・これと

(9)

コ       コ

i    (PRTY)HIGH       Lσw      i

ロ      コ

i 関数・**・θ・ラ・±・関係演算・NσT・AND・σR・−    i

コ      コ

1      演算子のもつ優先順位(PRTY)の関係      l

I             I I        コ      ホ

1      サブ命令生成の条件(頂上=演算スタックの頂上)      1

,      1       1       ロ

:       OPI,OPT;演算子       :

       1 コ       

l      C;PRTY(OPT)≧PRTY(OPI)   1       コ      コ

1      ;のときコード生成      l

l       ロ       

i      G1;頂上に!( がくるまでコード生成   i

ロ      ぐ

i      GA;すべてコード生成      i

ロ      ロ

:       N;コード生成はしない         1

       l       l

      1       l I      l l             I l       l

              l l       l コ      コ

1      図一12      1

1      1

      l l       l

    頂上

?ヘ

一〇PT

一〇PI C N

N N

G1 N

G1 N

GA

入 力

VRxx

VRxx

VRxx

F7XX(

LRxx

演算子スタック        変数スタック        VRxx ニ      VRxx

=      VRxx VRxx

=十       VRxx VRxx

=十       VRxx VRxx VRxx ニ十*       VRxx VRxx VRxx

=十*F7(         VRxx VRxx VRxx ニ十*F7(  LRxx XXXXVRxx VRxx VRxx

=十*         FRFFVRxx VRxx VRxx

=十       FRFFVRxx VRxx

二二@       FRFFVRxx 出力

コ       コ

i      〈出力〉       〈意味〉       ,       i

コ       コ

i    ①F7XX LRxx  FRFF←−SQRT(LRxx )     i

ロ       コ

i    ②MLrR VRxx  FRFF←−FRFF*(VRxx )    i

エ       ロ

i    ③ADDR VRxx  FRFF←−FRFF+(VRxx )    i

コ       コ

i    ④STDR VRxx  VRxx←一(FRFF)      i

も       ト

i    (注)      i

      コ

i       FRFF:実数演算に使用される擬似アキュムレータの記号         i

ロ       じ

i       XXXX:関数の引数の範囲を示す記号      i

コ       コ コ       コ

l       F7XX:外部関数SQRTを実行する命令の記号       l

I       I         コ       ロ コ       コ

l      ANS=X+Y*SQRT(3.14)に対する擬似命令列の生成      :

コ      

i       (VRxx=VRxx 十VRxx *F7X)く(LRxx ))       i

,        コ       コ

:       図一13       1

        1−  一 一  一  一 一  一 一  一  ≡ 一 一  一 一 一  ≡  一  一  ≡  一 一  ≡  一  一  ≡  一 一  一  一  一  ≡ 一 一  一 一 一  一 一  一  一 一  一  ≡ 一  一 一 一 一  一 一 一  一 一  一  〒 一  一  一 一  一  一  一 一  一 一 一  一 一  一  一  一 一  一  一  一  一 一 一  一  一 一  一  一 一  一 ≡ 一  ≡ 一  一  ⇔ ≡  一  一 ≡  −1

(10)

(マクロ命令コード)         (文番号)1 2 3 4

1

L2

3

MAIN

DOOP DOEN DOOP

A

(P=) 0  0  0 0  (σK)

      1 1 1       0     (NG)0 0

      (σK)

      1 4  _ _       0  GOTO(1,2,3,4,5,6,7),I

 DOOP

E

 DOEN

 6      B

 DOEN

7

(P=)

ENDM A

5 6 7

0 0 0 1 1 1

(NG)

  0 0

0

B

A:チェックする文番号がGOTO文より上にあるときのサーチ範囲 B:         〃      下       

P:G6T6文からみたDOの入れ子の深さに関した変数 図一14 GO TO文の文番号のチェック

DOのポインター情報エリアでもって処理をするが,こ れは島内氏13)と同様な方法を採用した。

 又GO, TO文やIF文等の分岐命令に対する正当性

(DOループ内への分岐)は図一14のように行なってい る。例えば文番号2については,まずPに0をいれ命令 コードのサーチAを行なう。まずDOOPがみつかる。こ のときPに1を加える。次に文番号2がみつかる。Pを 調べてPが0ならDOループ内でないので分岐先は正 当である。この例ではPは1なのでPを0にしてさらに 下方をサーチする。するとDOENがみつかる。Pは0な のでチェック中のGOTO文と文番号2の文の間にDO の端末文があることになり,これはエラーである。また 文番号6については,まずPに0をいれサーチBを行な う。文番号6がみつかったときには,DOOP, DOENが みつかっているのでPは0であり,分岐先は正当であ る。このとき仮にPが0でなければ,エラーとなる。

ロフ グア ライ ムル

KITFOR

  コンパイラー

EIB

ノ1勿1 κ

画面ディスクアドレス

ソース プログラム

 1  1  1  1  1 唯」

、、一■巳一 エラー画面

端末!

図一15

(11)

 3.4.KITFOR 解釈実行部について (INTER・   はエラー情報部のデータを参照して画面ファイルからエ     PRETER)       ラー説明用画面をメモリに呼び込み,エラーをおこした  解釈実行部は,構文解析部が出力したマクロ命令を解   フォートランのステートメントをプログラムファイルか 釈し,その実行を行なう。実行は,擬似PSW(PSEUDO一   ら呼び込み,両方のデータを重ね合わせて端末に表示し,

PSW)を基準として行なわれる。このエリア構成は,現マ   次に割り込み発生キーの入力により,制御を1/O制御部 クロ命令アドレス,次マクロ命令アドレス命令終了コー    に移す。

ド,各種スイッチとソースプログラム識別番号エリアを    この様子を図一15に示す。

もっている。ある命令の実行が終ると終了コードが チェックされ,正常終了なら次に時間うち切りスイッチ がテストされ,まだ時間が指定値以内ならPSWの更新 が行なわれる。もし命令実行時にエラーが検出されたり,

時間が超過したり,STOPマクロ命令が実行された場 合,プログラム識別番号とエラー情報とがエラーハンド

ラーに引き渡される。解釈実行部では以下にのべる作業         p、        p,

をも合わせて行なう。

 ・実行のうち切り時間設定

 ・配列要素の添字範囲チェック      p、

 ・演算に関するチェック(桁あふれ等)

 ・GO TO文等の分岐先チェック  ・DO 文等の制御変数チェック  ・関数等の引数範囲チェック

 又WRITE文実行マクロは,指定された変数内容を      図一16 キャラクターディスプレイ端末上に80桁だけ順次表示

する・この時FOR鵬T文の先頭1文字はラインプ ン 4. KITFOR文法概要

タの制御文字と同じように解釈されて表示(例えば頁換

文は画面をクリアして先頭に書く等)する。そして端末    KITFOR 文法は・複素演算・EQUIVALENCE・

上に表示した80桁は同時にKITFOR実行結果格納   BLOCK−DATA文等・入門者教育用としてあまり使用さ ファイルに99行(80桁/行)だけセットされ,1/0制御部   れない文を除いてあり・概略は以下の通りである・

で,結果をみられるようにしている。       DIMENSION文(三次元まで・サイズは4096以下)

 特に,KITFORは,オンラインシステムに組みこまれ    COMMON文(無名COMMONのみ)

ているため,ユーザーがかいたプログラムのためのメモ    TYPE文(INTEGER・REAL・DOUBLE PRECISION・

リ破壊によるソフトウエアダウンや,永久ループによる     BINARY*・HEX*・CHARACTER*)

CPU資源の専有等を防止するように配慮している。      FORMAT文(1・F・E・D・H・A・C・G・X・/・(・)・

 3.5.エラー処理部(Error Handler)       繰り返し)

 本ルーチンは,字句解析部,構文解析部と解釈実行部    DATA文

において文法エラーやメモリ不足や実行時の異常状況が    文関数サブルーチン副プログラム・函数副プログラ 検出された時起動される。       ム(いずれも引数8個以内)

 エラ_を検出したルーチンは,エラー情報部(Error一    算術代入文・文字型代入文*・2進(16進)型代入文*

Information−Brock...EIB)と称するエリアに,エラー    算術IF文,論理IF文*,文字型IF文*・2進(16進)

に応じてセットしてある画面データファイル識別番号と     型IF文*

このエラ_を引きおこしたソース・プログラム中の   DO文・CONTINUE文 フォートラン文の識別番号をセットする。エラー処理部    READ文・WRITE文

(12)

CALL文, RETURN文      CAI設問処理やコース形成ができることを目ざしてい  STOP文      る。

 GOTO文,計算型GOTO文,割り当て型GOTO文     以下にCAIの問題例と入力応答の判断プログラム例を

 DEBUG文      示す。

 COMMENT行, END行である。

継続行は,ほぼ9行まで使用できるカ㍉ソース・ステー 髄例1PLEASE ANSWER THE VALLUE PI?=

トメント1行の内容により若干小さくなる。        プログラムREAD(1,10)ANS

      IF(ABS(ANS−3.10). LT.0.05)

 5.CAIシステムとKITFORの関係

      GO TO$PROB 20  CAIシステムを計算機のソフトウェアから見てごく        GO TO$PROB 30 大まかに       10FORMAT(F 12.5)

 A CAI問題作成・コース設定系(CAI初期設定系)      i

       ノ       コ

 B CAI問題表示・コース推移系(CAI動作系)     問題例2 PLEASE INTEGRATE LOG(1+X).

 C CAI評価・記録系      (CAI記録系)        GIVE ANSWER WITHIN 17 CHARACTER.

にわけられるであろう。      ANS?=

 ここでいう問題作成・コース設定系とは,問題や付帯    プログラム

的通知情報の端末用ソフトウェアデータ作成と,端末か     READ(1.20)ANS

らの学習者の入力応答(解答)の処理(例えば正誤判断     IF(ANS(16). EQ.16H(1+X)*LOG(1+X)−X. OR.

等)とこれに応じて次の問題を端末に表示するための動     一 ANS(16). EQ.16H(1+X)*LOG(X+1)−X. OR.

作情報を作成する系である。       − ANS(16). EQ 16H(X+1)*LOG(X+1)−X. OR.

 CAIコース表示系は,入出力端末へ問題を表示し,入     一 ANS(16). EQ.16H(X+1)*LOG(1+X)−X. OR.

力応答をうけ取り,Aで作成された処理を行ない,次の     一 ANS(17). EQ.17H−X+(X+1)LOG(X+1). OR.

動作を行なう。(多)端末入出力制御系である・        − ANS(17). EQ.17H−X+(X+1)LOG(1+X). OR.

 CAIコース評価記録系は, CAIコースのある特定な点     一 ANS(17). EQ.17H−X+(1+X)LOG(X+1). OR.

(例えば,コースを全て終了した時・特別なコマンド入     一 ANS(17). EQ.17H−X+(1+X)LOG(1+X))

カ……HELP, HIN7二SOSやBREAKE等による中断点)     − GO TO$PROB 40 にきた時,記録をとり,次の時点での再スタート情報と      GO TO$PROB 50 したり,解析データや報告書の出力のための情報にする。   20FORHAT(17C)

我々はすでにAに関してディスプレイ端末表示画面デー         i

㌶ぽ㌶」票;㌶議ζ瓢 ここで∬・9(1+・)一(1+・)1・9(1+・)一・である.

システムが発展するには,計算機ソフトウェア側から考    問題例3

えて,次の2点が重要な事項であると考えられる。       PLEASE PUT tキョウワヨイテンキデスネ  (1)問題(設問)とこれに付随する情報を端末に表示     INTO ENGLISEH.

   するソフトウェアデータの作成が容易である。      ANS=

 (2)表示された問題に対する学習者の入力応答情報を

   判断し,加工し,表示し,又応答によって次の間   この例題に対する正解は

   題への分岐選択が容易にできるようなインテリ      HOW FINE IT IS TODAY! ,《HOWFINE    ジェンシーをシステムがもっていて,これをCAI  IS IT TODAY! , WHAT A FINE DAY IT IS! ,......

   コース作成者が容易にかくことができること。

 KITFORコンパイラーはCAIシステムにおいて(2)を   問題例4

サポートするものであり,以下のようなかき方でもって     PLEASE ANSWER MY QUSETION!

(13)

  LET BOOLEAN VARIABLE BE A LETTER,      ここで,

  DE MORGAN S THEOREM IS?=      Kは Mの有限な状態(すなわち問題呈示用画面(を表   正しい答は多数ある。例えば一(A+B)=−A・       示している状態))

  −B,X+Y=一(X−Y),一(X・A)=−X+−A,   P。は Kに属し,最初の問題の画面(を示している状態)

      Fは Kに属し,最後の問題の画面(を表示している状        態)

問題例5      Σは 入力応答アルファベット+割り込み発生KEY   PLEASE ANSWER MY QUESTION!        δは K×Σ*からKへの関数,すなわち応答データ判断   LET VARIABLE NAME BE A LETTER.         処理を含む推移関数である。

  WRITE ARITHMETIC EXPRESSION ON FOR     KITFORはΣ*の処理方法とδの作成を主としてサ   TRAN.       ポートするものである。

  ANSP;      6.おわりに

特に問題4,5については,これを判断する強力なインテ

リジェンシーが必要であることは明らかである。       本コンパイラーは稼動したばかりであるが,メモリ常  我々は以上のような考察をもとにして,広く使用され   駐型(センターシステムでは実メモリが少なく実際は仮 ているFORTRAN(流)言語で, CAIに対するインテリ   想メモリ上に常駐している)であるためと,連係機能が ジェンシーの付加とコース設定系を構成することを考    ないため速度は従来のコンパイラーに比して約10倍程 え,これにKITFORコンパイラーを用いることを計画し   度早く,エラーをその場で表示し,ただちに訂正に移れ ている。図一17は画面データとCAIシステム, KITFOR   るため教育用として便利である。又,実行の終了は異常 の関係を示す。      終了時に,異常をおこしたフォートランのソース・ス  CAIシステムと問題表示用画面とKITFORの関係を   テートメントを表示するためデバッグが容易である。本 以下のように簡単に表わす。CAIコースは図一16のよう   コンパイラー作成にあたり,メモリの量は多目に見積っ に1種の有限オートマトンと考えられ,コース設定と   ている点があるのと,メモリ節約のための技術的配慮は KITFORと画面データの関係を有限オートマトンの記    あまり行なっていない。これは将来実メモリの増設,価 法で説明し,関係づける。      格の点,ソフトウェアデバッグの容易さとコンパイラー       の早期開発のためである。今後教育用として使用実績を       重ねながら,改良すべき点は改良していくつもりである。

      又,CAI用として使用されるまでには更に組み込むべき       ソフトウェアが必要であり,なお若干の年月が必要であ       ろう。

       璃

        ㌫系 /弓 本システムの開発三あたい竺ディン㌍チや

    CAI

    評価       デバッグ作業にたずさわっていただいたセンター夜間操

    記縣  芸享㌘    作員学生特に,酬松原清山山・,軸,劇諸君に

      は深甚の謝意を表すとともに図面作成を行なっていただ       いたセンター野田事務官,その他多数の関係者の方々と          図一17      開発体制を作っていただいた磯センター長に深く感謝い       たします。

 問題が呈示されている端末からの応答入力Σ*上の CAI初期設定系MをM=(KΣ,δ, P。, F)の5組で 表わす。

(14)

      参 考 文 献

1)情報処理教育センター; KITFORコンパイラーの概       要 ,1977.

2)情報処理教育センター; KITFORコンパイラー1/0制       御部仕様書 ,197a

3)情報処理教育センター; KITFORコンパイラー操作法 ,       1977.

4)情報処理教育センター; KITFORコンパイラー文法仕様       書 ,1977.

5)情報処理教育センター; KITFORコンパイラー構文解析       部仕様書 ,1977.

6)情報処理教育センター; KITFORコンパイラー解釈実行       部仕様書 ,1977.

7)情報処理教育センター; KITFORコンパイラーエラーハ       ンドラー仕様書 ,1977.

8)情報処理教育センター; キャラクター・ディスプレイ装       置を用いたCAIシステムへの       1つのアプローチー推移テープ       ルをもつ画面データをもとに       動作する多端末オンラインシ       ステムについて一 ,1976.

9)深川,矢鳴,中山,吉田; キャラクター・ディスプレイ  用画面の会話形成・データ構造付加システム ,情報処理  学会一MMS27一資料,1977.

10)矢鳴,深川,中山,吉田; キャラクター・ディスプレ

 イを用いた会話形CAI作成システム ,電子通信学会一技       ,  研一ET76−9,1977.

11)深川,中山,矢鳴,吉田; 九工大情報処理教育センター・

 オンラインディスプレイシステムの開発 ,九工大研究報  告(工学),No 33,1976.

12)金山,他; 教育用FORTRAN HITFOR ,プログラミ  ングシンポジューム,1975.

13)島内,他; FORTRANの実際 ,サイエンス社.

参照

関連したドキュメント

関東総合通信局 東京電機大学 工学部電気電子工学科 電気通信システム 昭和62年3月以降

理工学部・情報理工学部・生命科学部・薬学部 AO 英語基準入学試験【4 月入学】 国際関係学部・グローバル教養学部・情報理工学部 AO

ウェブサイトは、常に新しくて魅力的な情報を発信する必要があります。今回制作した「maru 

Google マップ上で誰もがその情報を閲覧することが可能となる。Google マイマップは、Google マップの情報を基に作成されるため、Google

しかしながら、世の中には相当情報がはんらんしておりまして、中には怪しいような情 報もあります。先ほど芳住先生からお話があったのは

一貫教育ならではの ビッグブラ ザーシステム 。大学生が学生 コーチとして高等部や中学部の

J2/3 ・当初のタンク設置の施工計画と土木基礎の施工計画のミスマッチ

SFP冷却停止の可能性との情報があるな か、この情報が最も重要な情報と考えて