ι2
門 門 門
M川 ‑
J 寸
﹂ 寸
J
n u ‑
‑
ウ ム rL
阿l h
旬
WI L
PROGRA門 A
門2←門ODULE A
門3←門2+.x門2
E
例7のEはメインプログラムであり、 Iはモジュール、いわばサブルーチンに該当する。 Eの [ 1 ]行自にサブルーチンがきている。 APLではこのモジュールがさらに拡大され大規模な ものとなり、ユーザによって私用ライブラリとして蓄積される。したがってモジュールを計画 的に、汎用性をもたせて設計するならば、あらゆるプログラムに10のモジ、ュールを重複して 使用することが可能である。 APLはパッチ型言語の特徴を有し、 Iは 変数Aを抱いて走る'
という概念をもっと理解が深まる。
ユーザ、の保持できる莫大なメモリ領域とプログラムとデータの共存について説明を加えよう。
先に 変数Aを抱いて走る'と述べたが、変数Aはどこに保存されているのであろうか。
APLではプログラムとデータの保存領域の区別が弱く、共存という考え方がとられている。
その概念をFORTRANとの比較も含めて図
l
に示した。‑44‑
[図1]
APL FORTRAN
デ ー タ
プ ロ グ ラ ム デ ー タ デ ー タ
プ ロ グ ラ ム デ ー タ
プ ロ グ ラ ム デ ー タ プ ロ グ ラ ム
デ ー タ デ ー タ
プ ロ グ ラ ム プ ロ グ ラ ム
デ ー タ プ ロ グ ラ ム デ ー タ
プ ロ グ ラ ム
デ ー タ OPERATING SYSTEM OPERATING SYSTEM
APLにはワークスペースという概念があり、 1人の利用者が複数のワークスペース(例え ば科学技術計算用、事務処理用)をもつことが許される。データとプログラムは個々のワーク スペースの中で完結し、管理され、ワークスペース聞の移動も可能である。こうした管理の長 所はデータの整理がしやすく、ファイルのOPEN、CLOSEの手順が省けるなどの点にあ
る。
以上に述べたようにAPLは他言語と比較していくつもの特徴と長所を持ち合わせている。
APLが実際に有効利用される分野は科学技術計算、即ち数値計算、統計計算であろう。特に 行列計算の表現・漬算がひどく容易で速いという特徴により、行列を多用する分野において特 に有効であるう。非線型最適化法においてはヤコビアン、ヘシアン行列がデータ数に応じて拡 張される。他言語によるこれらの演算は莫大な時聞を要し、プログラムの記述には過大な労力 を伴う。その他、偏微分方程式の解法、 FFT、多変量解析法、構造力学で最近脚光をあびて いる有限要素法においてもAPLの利用は有効である。 APLの実力が発揮できる分野は枚挙 にいとまがないといえよう。
hh d
a斗 ・
4 APLによるデータの移送と他言語との互換
APLの短所は汎用ライブラリの蓄積が少ないという点につきょう。利用者の多い言語は対 応するライブラリが多く開発される。 APLの利用者は少なく、ライブラリの少なさに波及し ている。現状でAPLをより有効的に利用するためには言語の長所だけを取捨選択する必要が あろう。言語とハードウェアを総合してその長所を表1にまとめた。
[表1]
汎ラ用イブラリ 計算速度 Graphic
手(軽吏用さ制限の少なさ) 思考と実行の ギャップの少なさ 大F型O機RTRAN O O
ノマソコンBasic O O
大型機APL O
。
スーノマーコンピュータ
。
FORTRAN
表1の 思考と実行のギャップの少なさ'とは換言すれば、問題を解くための労力、問題の 生起から解決までの時閣の短縮と考えてよい。 APLは巨大な電卓とも考えることができ、簡 単な四則漬算から莫大な数値計算までこなすことが可能である。演算の函数がベクトル、行列 にまで拡張され有効な機能を持つことは前述した。
言語の長所の取捨選択とは、データをあらゆる型の計算機閣でやりとりすることに換言でき ょう。
[図
2]
liQ~
PERSONAL CO阿PUTER
図2に示すように、大量のデータを保持する利用者が、※(1)そのデータの特定の部分を抽出 し、※(2)ある数学的展開によって変形し、※(3)さらにそのデータを統計処理する、という場合 を想定しよう。 (1)の場合のデータ管理はパソコンをデータペースとして活用するのが最適であ る。 (2)の場合は図2の①②によって転送されたデータをAPLで処理することが有効である。
(めの作業は統計ライブラワの豊宮さ、潰算の速さからFORTRANを用いるとよい。つまり
③④方向への転送が必要となる。計算の終了後は⑤⑥の経路によりパソコンに戻すのがよい。
豊富なGraphic機能も生かせるからである。
‑46 ‑
実例としてAPLとパソコン聞のデータの移送について示そう。著者らが東京の統計数理研 究所と行った共同研究では莫大な行列の潰算が必要であり、アルゴリズムは必然的lこAPLに 決められた。長崎大学のFACOM‑M360 OS‑IVのAPLでは計算機能が弱体なため、
統計数理研究所のHITAC‑M280H VOS3で演算することになった。この場合、パ ソコンでデータを管理し、必要部分をフロッピィに抽出し、統計数理研究所でパソコン一大型 の通信によりデータセット上に転送する。さらにデータセットとAPL聞の転送をすれば、長 崎(長大)のパソコン内に管理されたデータが東京(統数研)のAPL上に移送できるのであ る。以上の概念を図3に示す。逆転送すれば計算結果をパソコン上に戻すことも可能である。
[図
3 J
NAGASAKI TOKYO
ー 穏 に ロ ノ P C 1 2 2 1
APL WORK
SPACE
HITAC M‑280H VOS3 (HITACHU
複数の処理すべきデータはMS‑DOS版 N88‑BASIC (86)を用いて、 MS‑
DOSのシーケンシャルファイルとして整理した。レコード長は80とした。複数の処理すべ きデータを連結して図4に示すレコード長80のシーケンシャルファイルとした。斜線部分に は個々のファイル名を入れアスタリスクはファイルの切れ目を意味する。長大からのファイル は通信用プログラム、 TERM98TN' (統数研の中村隆氏作製)によりHITACの データセット上に転送した。‑.E!.セーブしたデータセットを今度はAPLのワークスペースへ 転送する必要があり、図5のプログラムを使用した。
[図4J
‑47 ‑
*
1 S S UE'はデータセットとAPLを連絡するプログラムである(統数研の仁木直人氏作 製)0
A P L
には 補助プロセッサ'と呼ばれる拡張装置があり、 OSレベルのコマンドの呼 び出し用、共用変数を用いたデータセットの出力用、などが準備されている。ユーザがAPL セッションを開始後、 ISSUEを実行すると、口SVOコマンドにより共用変数が提供され、データの連絡が可能となる。エラー表示がなければ連絡は成功したとみなされる。
データをAPLに取り込むために READDATA'を実行する。このプログラムは順編 成入出力プロセッサ(プロセッサ番号111番)によりデータをAPL側へアクセスするため のものであり、成功した後は15行自の表示がなされる。ここで注意すべき点は6,7行自の 後半の部分、つまり、 DEBC'、 'CTL'の記述で、 HITAC IBMなどシステム の相違によってオペランドが変わる場合がある。実際のプログラムの運用の方法、入力方法を 図6に示す。プログラムがワークスペース上にあれば以下のとおり入力すればよい。以上によ り、データセット上のデータがAPLワークスペースへ DATA'という名前で送り込まれ る。
[図5]
[0] ISSUE CHD;TSS;RC [ 1] →(2=1000SVO 'TSS'J/GO
[ 2 ] →p口←'**UNABLE TO COHHUNlCATEむlTH TSS [l SSUE] ,
[3] GO:TSS←CHD
[ '1]
[ 5]
[6 ] [7 ] [8 ]
→【o1 2 '1'1斗 =RC←TSSJ/O,ERC.ATTN.ERD
‑+p口←'安*ERROR! RETURN CODE←, , (亨RC),' [lSSUE]' ERD:→p口←'**SYNTAX E旦ROR [lSSUE]'
ERC:‑+p口←'脊*UNEXECUTABLE COHHAND [ISSUE]' ATTN: '女*ATTENTION! [lSSUE]・
[0] DATA←FlELD READDATA FILE;REC;CTL;CC;F;L;S;1 [ 1 ] L←((pS..tO).I"l )/ρFlELD
[2] FL:S"S,(FIELD[1;1]+tOfFIELD[2;I]J,1 [3] -+(L~I..I+l 】 /FL
['1] L←( f/S)ー1
[5] DATA"'(O.pl←1. p5) p I
[6] REC←FILE,'(DEBC'
[7] CTL..Fl LE. ' (CTL'
[8 ] →(2 2 メ111 ロSVO2 3 p守尺ECCTL') / EOP [ 9 1 【(REC=O)ACTL=O)/CV
[10] EOP:‑+p口←'**FAILED TO OPEN THE FILE (' ,FILE, ') .READDATA' [11] LP :DATA<‑DATA, [11 F
[12] CV :F[ ('ー'=F←(' ',LtREC)[S])/l]←・ー, [13] ‑+(0 12 '141 =CC←CTL】/LP,EOF,EOP
[14 ] →pO←'*大DETECTED AN 1/0 ERROR (ERROR CODE =' ,(苓CC),') .READDATA' [15] EOF: '**NUHBER OF RECORDS =' ,(苓1tpDATA)・, .READDATA'
‑48‑
[図
6 J
ISSUE 'ALlOC DD(FIlEl DS(DATANA門E.DATA1' FIELD ←2 ρ 1 80
DATA ←FIElD READDATA 'FILE'
著者らによる実施例では複数のファイルを連結したものであり、個々のファイルに切断する 必要が生じる。これは図?に示した
GODECODEDATA'
で実行できる。なおDE
CODEDATA' 'CHRCNV
T'はそれぞれモジュールと考えてよい。APL
ではマイ ナス記号とネガティブ記号が別にあり、 J1 S
コードのマイナス記号をAPL
の内部コードへ 変換する際、マイナスが W'に化けてしまう。したがってマイナスは積極的にネガティプに 変換する必要があり、'CHRCNVT'
はその作業をするものである。これらの手!噴に従え ばAPL
とパソコンの有機的利用が可能となる。APL
からパソコンという逆転送法の手順は下記の通りで、プログラムを図8
に示す。①
E D I T
モードでデータセットの行き先を作っておく。( F / / / / . E M P T Y D A T A . D A T A
という名で空のままS A V E
する)②
A P L
セッションを開始する。③
I S S U E 口← A L L O CD D ( F I L E O U T ) D S ( E M P T Y D A T A . D A T A )
, ~④
D A T A
←G O E N C O D E D A T A E N T R Y
~⑤
D A T A W R I T E D A T A F I L E O U
T'♀⑥パソコンと大型機聞の通信を行う。
※③と⑤の
F I L E O U T
の部分は閉じ名前を用いる。④の
E N T R Y
は持ち出すべきファイル名を文字行列型に並べたもの。[図
7 J
(01 GOD~COD~DATA DATA;D;[
[11 A****女 F[LE DATA FORHAT
,
0 APL VAR[ABLES [21 LOOP:→(0注1tpDATA)ILEND(31 ←1十DATA[;11l'女 '
('11 D争 ' ー ー,CHRCNVT(([‑j),80)tDATA
(51 DECODEDATA D
(61 DATA<‑([,O】.DATA
(71 ーかLOOP
(81 LEND:
(01 DECODEDATA DATA [11 V←,DATA( 1; 1 [21 DATA←1 0 .DATA (31 DATA←企,DATA
('11 企V,'←DATA'
T 内y
ι v
s
内v
nv
l ︐
m4
[ FU ↑ ]
市︐
︐ .
‑F T
内VL /
︑ ︐
nU14L a
﹃ . ︐ ︐ ︐ [
﹀ C T S
= T
.
︐ 申
$ 令
T f T
t p
T T o
vvO
﹃ ︐ N 0 C
c'+
R T Z H P
↑
円u
fu nl v 争P C T
︿↑
T O T‑
‑t
m4n
︾
r L M 今
I l l
nV 4a・
9 ι
[ [ [
‑49‑
[図8J
(0) DA1'A←GOENCODEOA1'A VARS;NAHE
[ I J R***** A?L VARIABLES 1'0 FILE DA1'A FORHA1' 合 * 安 安 *
(2J DA7'A・‑0 8 0 ρ『
(3J LOOP:
(~J -(O~ltpVARS)ILEND
( 5 J 口← NA I1 E~ , VARS(1; J ( 6 J V AR.5 +‑ 1 0 • 1 ARS '
(7J DATA~DATA , [11' ー一 , CHRCNV1' ENCODEDATA NAHE (a J ‑LOOP
[9J LEND:
[OJ DA1'A ←ENCODEDA1'A VAR;D;L [ 1 J L~80
[2) DA1'A ←(I,LlpLt.¥'AR [ 3 J D←不全.VAR
[~ J D ←( ( r (pD)ーL).L 1ρD.Lp' [5) DATA ←DATA.[I) D [6J DA1'A←DA.TA.[I) Lt・世'
[0) DATA WRITEDATA FILE;REC;C1'L;CC;LR;S;L;I1;N;1 (1) LR←8口
(2) DA1'A←【(N+‑.I‑j.S).N←ー1tS←pDATA 1 pDATA (3] DA1'A←((l1xNl.LRlp(I1.LRxN←r N+LRl tDATA (4) R.EC‑F[ U: • ' (DEBC'
[5) CTL←FlLE.' (CTL'
[6] "'(2 2メ11j口SVO2 3 p'RECC1'L' l/EOP [7J "'((REC=OlACTL=O】ICV
(8) EOP:"'p口←'**FAILED1'0 OPEN THE FILE (' .FILE, 'l ・WRITEDATA' (9) LD: ゅ (O~j 十 pDA 1' A ← 1 0 +DATAl/EOF
[10] CV:REC←DATA[ 1;)
[ 11 ] ーや(012441 =CC←CTL)ILP,EOF,EOP
[ 1 21 ゅp口←'女官DETEC1'ED AN 110 ERROR (ERROR CODE ='.(平CC).' )
・
WRI1'EDA1'A' [131 EOF:'安*NUI1BER OF RECORDS =' ,(苓I1xN),' .WRI1'EDA1'A'5 ;toわりに
コンビュータサイエンズ 計算理学'と称される新しい学問分野を生み出しただけでなく、
今やコンビュータは人聞に似た柔軟さも備わり、擬似実験装置として各分野に幅をきかせよう としている。このような分野が本当に確立しているかどうかはさておき、科学計算という元々 の利用法も含めて、コンビュータは人聞が現在もち得た 最も高級な道具'といってよかろう。
しかし著者らの専門としている水産学の分野では所詮、永遠にコンピュータは 創造しない道 具'の域をでないであろう。
人聞がいつも挑戦している 創造的研究'の時間づくりに、コンビュータの有効的利用・効 率的活用が必須な時代がきている。マイクロエレクトロニクスの進歩により、コンピュータの 利用法はさらに高度化・多様化していくであろう。科学には不可欠であっても、人間には退屈
‑50‑
そのものの計算・統計処理・作図などをコンビュータが肩がわりし、人聞が創造的研究に力を 注ぐことを手助けしてくれるのである。
我々コンビュータのユーザ、にとって、ハードウェアの選択の範囲は狭い。一方、ソフトウェ アに関しては選択の大きな自由度が与えられている。 APLはその自由度を最大限生かし、我 々に多くの創造的時間を与えてくれる言語であると判断している。本稿では割愛したが、 FA COM OSIV上でのAPLパッチ処理についても開発中である。長崎大学情報処理センター のAPL演算機能が向上することを切に願っている。 FORTRANやBASICで何重もの
J レーフ.を回すことに生きがいを感じ、コンピュータを無二の親友としている方は別として、こ の拙ない解説を通じ一人でも多くの方々がAPLに接し、 創造的時間'をつくっていただけ れば幸甚である。
‑ 参 考 文 献 一
音川 勲(1980) ちょっとおもしろい書語 (APL)
長崎大学情報処理センターセンターレポート,第l号.69‑77. Niki. N(1981) :APL. Programmes for Canonical'Correlation Analysis of
Categorical Data. Computer Science Monographs. NO.16. The Institute of Statistical Mathematics. 32PP.
中 村 隆 (1985) パーソナル・コンビュータ (NEC/PC‑980 1シリーズ)によるT SSフロントプロセッサTERM98TN.統計数理,第33巻,第2号.221‑ 249.
竹内 寿一郎(1985) : 2元表離散データ解析のためのAPLプログラム,
応用統計学.vol.14. No. 3.131‑142. 堀 江 賢 治 ( 1985) : A P Lの使用法
東京大学大型計算機センターセンターニュース .vo 1. 17. No.
1 .
29‑39. 山 本 和 男 ( 1986) : vos3 APLの使い方東京大学大型計算機センターセンターニュース .vo 1. 18. No.
1 .
42‑50.﹁h
u