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

パソコンでのアンケート・データ分析の事例研究(上)-クロス集計の自動化の試み-: 沖縄地域学リポジトリ

N/A
N/A
Protected

Academic year: 2021

シェア "パソコンでのアンケート・データ分析の事例研究(上)-クロス集計の自動化の試み-: 沖縄地域学リポジトリ"

Copied!
31
0
0

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

全文

(1)

Title

パソコンでのアンケート・データ分析の事例研究(上)−

クロス集計の自動化の試み−

Author(s)

阿部, 亮一

Citation

沖大経済論叢 = OKIDAI KEIZAI RONSO, 12(1): 73-102

Issue Date

1987-09-30

URL

http://hdl.handle.net/20.500.12001/6764

(2)

パソコンでのアンケート・データ分析の事例研究(上)

-クロス集計の自動化の試み- 阿部亮 はじめに I分析の方法 1分析の手段 1.1使用システムーMS-DOSとRAMlDiskの採用 1.2データ等のコンバート 2分析の対象と具体的方法 2.1クロス集計の重要性 2.2コンピュータによる一括処理化 33次元クロス集計プログラムの概要 3.1プログラムの条件 3.2プログラムの基本構成 Ⅱプログラム前半の内容と実行結果 1Mainroutine部4集計部 2原データ転送部5集計結果記録部 3項目指定部6結果読み出し部 【以下次号】 Ⅲプログラム後半の内容と実行結果 1表示、主要部 2クロス集計表 2.11行表示 2.22行表示 3棒グラフ表示 4原データ表示 5割り込み処理 Ⅳ成果と残された課題 -73-

(3)

はじめに

筆者は、本誌前号(第11巻、1.2合併号)で、文部省科学研究費助成対象

研究「戦後沖縄における社会変動と家族問題に関する総合的研究」に協力して

おこなったアンケート調査のパーソナル・コンピュータ(以下、パソコンと略

称する)による処理作業のうち、全データをパソコン処理に適したFileに納め

るまでの過程と問題点、工夫点等を、「パソコンでのアンケート・データの入

力および修正方法の事例研究一表形式化とカーソノレ・キーによる入力・修正

作業の迅速正確化一」(文献1)と題して発表した。

そこで入力、作成されたデータFile(このデータは原初の基礎データである

ため、以下原データと呼ぶことにする)を読み出して分析することが次の段階

の作業となる。この種のアンケート・データ処理では、単純集計分析に次いで、

クロス集計分析が、基本的な分析手法として重視され、多用されていろ。対象

の諸特性間の関連を表示するクロス集計表を作成するこの分析は、規定要因の

抽出や相関、因果関係の分析といった分析の深化に欠かせないものである。単

純集計に比べて、多段階の集計作業を要するうえ、対象の組合せは非常に多く

なるので、これに多くの時間と労力をとられることになる。

今回のパソコンによる分析資料の作成でも、このクロス集計表作成の効率化、

自動化が焦点となった。ここを中心に概要を発表することにする。ただ、プロ

グラムや分析事例がかなりの量となるため、今回は集計Fileの作成と読み込み

までを掲載し、クロス集計表やグラフに表示する部分は、次号に掲載することに

する。 l分析の方法 1分析の手段 1.1使用システムーMS-DOSとRAMDiskの採用

この処理に使用したパソコン・システムは、いわゆるハード面は、前研究と

基本的に同じで、NEC社製16ビット機PC-9801Eに、2連の8インチFDD

FloppyDiskDriveと10インチ漢字プリンタを接続したものである(文献1参

-74-

(4)

照)。 しかし新たに、増設メモリ(容量1メガBytes)の一部を、プログラムによっ て疑似的にDiskとして扱うことにした。いわゆるRAMDiskを採用したので ある。分析作業では、全データを読み込みながら分類・集計することを繰り返 すので、処理の高速化とデータの入った磁気記録媒体のFDF1oppyDisk(単 にDiskとも呼ぶ)やFDDの損耗防止とをはかる必要があるが、このRAM Diskならば、全データを一度読み込んで(転送して)おけば、以後はここから データの読み書きをすることで、Diskを回転させることなく、電子的に処理で き、この要請に応えられるからである。油11 実際、後述するプログラムを一部変更して、全1M件を読み込むのに要する 時間を測定したところ、Diskから取扱単位のSectorごとに直接読み出す従来の 方法では56秒かかったのに対し、RAMDiskではわずか7秒と8分の1に過 ぎなかった。もっとも現実には、1件ごとに読み込みと分類集計とを連続して おこなうので、一括した作業時間は、機械的構成の違いからもっと縮まり3分 の1強となる。由12 とれに対応して、ソフト面では大きな変更が生じた。プログラミング言語が、 本体付属で自立型standaloneのN88-BASIC(PC-98H87(K))から、16 ビット・パソコンの標準OSOperatingSystem(パソコン界ではOSは磁気 Diskを中心に構成されているためDOSと称されろ)となったMS-DOS上 のインタープリタ、N88-日本語BASIC(VersionLO,PS98-311-HSF) に変更された。自立型のBASICではRAMDiskを一般に利用できないし、 また機能が制約されており、他のOS上で動く多くの多機能な支援プログラムも 利用できないから、それの可能なMS-DOS版に移行したのである。㈹1.3 由UこのRAMDiskを構成するためのプログラムは、単独でも市販されて いるが、増設メモリポードに付属していることが多い。本システムも同様で、 メガソフト製のMX-1Plusを使用している。PC-98系では、ここ数年来、同 社と1.0データ機器社のボードおよびソフトが有力である。 曲1.2単純な構造の3項目(項目番号10,118,170.有効回答肢数はそれぞ れ10,11,8と、回答肢のやや多い組合せである)を対象に、全件を読み込み、 -75-

(5)

3次元の配列|に集計を行い、その所要時間を1820および1840行での表示時間の 差で求めたところ、FDDからの直接読みだしは56秒とまったく変わらず、RAM Diskでは17秒に増加し(分類集計時間が10秒という計算になる)、差が縮まっ てしまう。前者で時間が増加しないのは、I/O用のbufferをDiskの1trackの

表裏16Sector分以上に設定しておいたため連続して読み込んでしまい、次の

ltmckに移動する間に集計が済んでしまうからと考えられろ。

|まMAMDisk使用の値には、冒頭でのそれへのデータ転送時間は加えられ

'ていない。これは、1300行前後で計測して(1310行)616秒である。これを加

|えれば、所要時間比はさらに1.7分の1に縮まる。一度きりでは大差ないことに

なる。しかし、この記憶内容は一度転送しておけば、プログラムを何回実行・

I消去してもSystemre白etするまでは保存されているので、項目の組合せを換

|えて分析を繰り返しておこなえば、2回目以降は前記の高速性と静粛化、機械

的動作がなくなることによる機器寿命の延長が実現されるのである。

㈹1.3コンピュータ本体や周辺機器を操作する場合、直接しようとすると、

その機器の微細な構成に対応した操作を要し、煩雑なだけでなく、同一機種で

も改良等で操作を変更しなければならなくなる。そこで、これら機種による個

体差をならして、共通の環境を形成し、共通のルールと操作法で多方面のソフ

トウェアを使えるように作られた土台の役割をするもっとも基本的なプログラ

ムが、OperatingSystemCS)である6多くの機種で採用されているOS上で

作成されたソフトウェアは多数の機種で動くので、生産者は個別に修正した商

品を小量づつ作らずにすみ規模の経済を享受でき、機能の向上等に力を集中で

きることになる。こうして価格の引き下げと機能の向上がもたらされるならば、

生産者消費者双方に利益を与えることになる。その地位を、16ピット機では、

米国マイクロソフト社のMS-DOS系がほぼ独占した状態にある。

なお、国産のパソコンには慣例としてBASICが付属されており、パソコン

の初期化や基本的な操作もこれを使って行うことになっていて、言語をこれで

学びはじめるのが普通になっていろ。ところが、この種のBASICは、他機

種と共通のSystemをもたない孤立した専用の言語となっていろ。Standalone

といわれるゆえんである(汎用DOS上のBASICもあるが、安価でないこ

ともあってわが国では普及していない)。このためある程度習熟すると、他機

-76-

(6)

種や他プログラムとの交流、相互利用ができない孤立性が、障害になって、本 格的言語の普及や応用プログラムの充実を妨げているのが実状である。パソコ ンの利用拡大のためには、この点を改める必要がある。 1.2データ等のコンバート 他方、上記の利点をうろために、別な作業が避けられなくなった。データや プログラムを自立型BASICからMS-DOS上のBASICの仕様にあわ せた形態に転換するconvert作業である。この作業のために、転換プログラム が必要になる。ハード・メーカーのNEC社から「日本語N88/MS-DOS ファイルコンバータ」(PS98-216-SF他)が提供されており、各種のFileを 容易にMS-DOS形式に変換できるが、これを持たないため、雑誌等に掲載 されたプログラムを利用して転送することにした。 転換プログラムとしてはじめに使用したのは、「MS-DOS-N88DISK BASICファイル転送プログラム」(文献2)であった。このプログラ ムは、ファイル名Filedescripterが一覧表示されカーソル移動で対象を確実 に選択できる点ですぐれていたが、「単純にファイルを媒体変換するものです から、コード体系の異なるデータを転送した後の取り扱いには注意が必要です」 とあるように、BASICはMS-DOS上で行毎に再登録をしなければなら なかったし、漢字は全く転換されず、漢字モードへの出入を示すKI、KOマー クをチェックする専用のutilityプログラムを作製し、チェックした箇所を原文 を見ながら漢字で再入力せざるをえなかった。またメモリーの関係で転送サイ

ズは32キロBytesに限定されていたため、1192件、298キロBytesもの大きなデ

ータFileを10回に分けて別名でMS-DOS上のFileに転換・転送し、これら を機械語Fileとしてメモリ上に順次連続して展開して、1本のデータFileにま とめて復元するという煩雑な作業を要した。 その後、MS-DOS側から自立型N88-BASICを読み込むプログラム 「ファイル転送プログラムMrTRANSFER」(文献3,38-41頁)を見いだ した。これにより、BASICで書かれたプログラムも一挙に転換できるよう になった。ただ、漢字の転換だけは、漢字モードへの入出は簡単にチェックで きるものの、自立型BASICで使われろ「JISコード」をMS-DOSで -77-

(7)

使用されろ「シフトJISコード」へ転換する作業が多少煩雑なため、これま

でのところ漢字モードへの入出のある行をリスト・アップするにとどめ、転換

後にその行について漢字部分を書き直すようにした。曲1.4 樹L4PC-98シリーズのN88-BASICでは、漢字モードへの移行の記

号は、ESCK(機械語16進数で表示すれば、1B4B)、それからの脱出

は、ESCI(同じく、1B48)である(NEC方式とよばれろ)。この記

号の有無を、MS-DOS上のBASICとして書き込む際にチェックするこ

とは容易である。そして、前者が来れば次の文字からMS-DOS上の漢字コー

ド(SHIFTJISCode)に転換して書き込み、後者に会えば以後転換をやめる

ルーチンを作製すれば自動処理がほぼ可能となる(完全にといえないのは、上

記とは無関係にプログラムないしデータの内容が、lB4Bないし48と続く

場合がないとはいえないからである)。しかし二つの漢字コードの対応関係が

比較的単純な原理ではあるが、例外もあるため、漢字モード入りをチェックし

てその行番号を順次表示するプログラムにして、訂正しやすいようにしていろ。

なお、上記ファイルコンバータやメガソフト製の「INTER-DISK2」

は、このコード変換が可能である(文献4,96頁)。また自作のコード変換

ルーチンについて触れた論文(文献5,53-68頁)もでているので、これを利

用すれば作成も容易になるであろう。 2分析の対象と具体的方法 2.1クロス集計の重要性

数量的な解析を意図したアンケート調査では、あらかじめ設定した回答肢を

選択回答させる形式(数値を書き込む場合も数列値を選択するという意味でこ

れに加えることができる)が多用され、自由回答形式の設問は、客観的数量化

が困難なため定性的なあるいは個別的な検討材料をうろため等に付随的に用い

られる。本アンケートは、すべて回答肢選択型であった。

この種の調査の分析は通常、まず①各設問の各選択数の累計を求める単純集

計を行い、できれば②それを視覚化するグラフ表示を行い、そして③クロジス集

-78-

(8)

計(2次元、3次元、…)を展開し、さらに④相関、有意検定等の古典的分析 や、⑤総合的な数量化分析等に進む。 このうち、③のクロス集計が、前述のように、各設問範薦間の関係ないし 関連を分析するのに最も基本的な手段となっていろ。数量化分析も多用される ようになったが、これもクロス集計を基礎に分析作業が展開されるのであり、 各種分析手法の分析対象への適合性を検討するにも、このクロス分析が重要な 基準となる。また、このクロス集計が対象としうる項目の組合せは、多元化す れば連乗算で指数的に増加するから、しばしば鹿大な作業になり、多くの時間 をこれに費やすことになる。クロス集計・分析は、質的にも分析作業全体の中 でもっとも基礎的で重要な部分といってさしつかえないであろう。 さらに、この分析で十分な成果をえられる場合も、多いと考えられる。対象 を概観したり、課題を発見しようとする段階ではとくに、そういえよう。本件 でもこのクロス分析が中心であった。前稿で述べたように、対象となった「研 ,究」は、20名もの研究者が集まって、社会学を中心に経済学、心理学、法律学、 歴史学、宗教学など多方面から、戦後沖縄の社会、家族の変化、実態を総合的 に分析しようとするおそらく初めての試みであった。そのため、上記のような 第一次接近的な性格が強い研究となり、アンケートの質問項目も、きわめて多 方面に分散され下個々の分野の質問は少数に制限されざるをえなかったようで、 クロス集計・分析が主要な作業となったのであるd曲1.5 ・クロス集計の次元 つぎに、クロス集計は、クロスさせる項目(変数)をいくつでもとりうるか ら、プログラム作成の都合上からも、自動的に処理する組合せ数(次元)を決 めておく必要がある。 クロス集計の基本は、当然のことながら、最小の組合せたる2項目の要素間 の関連を示す2次元クロスにあり、多次元クロスも残りの次元の要素で規制さ れた2次元クロスの集合にほかならない(数値を-グラフではなく数字列とし て-表示するのに紙面やDisplay画面等の2次元の表示手段を用いる限り2次 元の表示しかできないという面もある)。そこで分析作業は、2次元クロスか ら出発することになるが、進展するにつれ、平面的把握から立体的把握へ、さ -79-

(9)

らに多次元的分析へと進んで行く。たとえば、ある2項目間の関係をより詳し く分析するために、地域別や家族類型別、性別等の新たな分類軸を加えて、立 体的な分析を試みることが常套的におこなわれていろ。 さらに、4次元以上の集計も当然考えられるが、本件のような千件程度のア ンケート調査では、性別のように選択肢が非常に少ない普遍的な区分で、それ ぞれの3次元クロス分析をおこなうような例を除けば、あまり有効ではなくな る。一般的な質問への回答のようないくつもの選択肢をもつ項目間で、4次元 以上の集計を行えば、クロス表の要素すなわちCellが分散されてきわめて多く なり、したがってそこに入る数値が一般に小さくなってあまり意味のないもの になってしまう可能性が高まるからである。そこで、本件のような分析におい ては、3次元クロスを処理でき、それ以下の場合は簡単な指示で対応するプロ グラムを作成することが、もっとも有効と判断されるのである。 2.2コンピュータによる一括処理化 ところで上記の手順は、手作業が主であった段階では必然的なプロセスであ ったが、パソコン等を利用して処理するようになると、必ずしも最適といえな くなる。 それは、コンピュータは処理能力(速度や量)が人力と比較にならないほど 高い反面、そのプログラム作成には多くの時間と手間を要すること、また、デー

タや処理結果の入出力InputPutput(I/Oと略称される)を担当するKey

BoardやF1OppyDiskやPrinterといった機械的周辺機器の使用にも時間と手数 を多く要することを考慮しなければならないからである。すなわち、プログラ ムはできるだけ汎用性をもたせ、I/O関係(特に人手による入力)はできる だけ少なくする必要があるのである。 そこで処理過程を見直してみると、①の単純集計と②のそのグラフは、デー タが同一のため、グラフ表示用のルーチンを用意すれば、一括して処理できる し、その単純集計も、③のクロス集計の合計欄に出てくるから、クロス集計の いわばついでに算出しておき、必要に応じてこれを取り出して利用することも 簡単にできることに気づく。 以上を踏まえて、本件では、クロス集計を半自動的に効率よく行い、グラフ -80-

(10)

も自動的に表示できるプログラムを作成して、上記の①単純集計《②そのグラ フ表示、③クロス集計(3次元以内)を、ほぼ同時的に処理できるようにした のである。 ・プログラム化の技術的問題点 汎用プログラムを作るにあたって問題になるのは、1つには、集計作業に用 いる記憶領域が使用可能なサイズを越えて処理不能にならないかということ、 2つには、例外的な項目をどのように組みI込んで処理するかということである。 第1の点については、選択肢が極端に多く、各欄(数値等が代入される個々の 枠、通称にしたがって以下Cellとよぶ)の桁数が多いというような項目どうし の組合せの場合に、その可能性が出てくる。しかし、実際には選択肢数が30を 越えて設定される例は少ないと思われる(あまりの多肢は回答者に選択上困難 を与える点で好ましくない。本例ではすべて15以下であった)。また第3の軸 (項目)には、性別、地域別、家族等の類型別での特徴を捉えようとすること が多いので、これもあまり多数の基準に分割されることはなく(あまり細分す ると意味が薄れることもある)、数千件までの通常のアンケート調査の場合は、 余裕を持って処理できろといえる。ただ出力桁数の多い項目があると、結果を 表示する際に困難がでてくる。しかし、使用するSystemは、メモリをPC98シリー ズの限度の640キロBytes以上に増設していて400キロBytes以上を,集計用の配 列に使用できるから、すべての配列要素が倍精度実数型(各8ByteSを要する) の場合で、全次元の項目数の積が5万までは曲1.6,N88BASICで直接I処理 できるのでほとんどの場合問題なく処理できよう。それを越える場合は、配列 を分割するなりして、RAMDisk等にも置くようにすれば、事実上制限はな くなるのであまり問題にはなちないであろう。’ 第2点の例外的な項目としては、実数値を記入した項目やメモリ節約のため 表現が圧縮されている項目があげられろ。前者は、本来はデータFileに書き込 む際に、常識的な数の回答肢に分類されているのが望ましいが、正確な平均値 や相関係数をとりたい場合や、分析者側で有効な分類基準がつかめない場合な どには、避けられない。それぞれ専用の処理routineを準備する必要がある。 また、後者については、単純な構造の項目と無差別に組合わされるので、専用 -81-

(11)

の復元routineを別に作成しておき、この項目を他と組合わせるたびに呼び出 してプログラム本体に結合し回答を復元して以後は自動的に処理できるように すればより効率的になろう。 曲1.5本件では、70数件の単純集計と、筆者が再分類の必要上開発したグラ フ表示を除けば、200件近い分析作業は、すべて、クロス集計であった。 曲1.65万の例を示せば、50欄×40欄×25欄とない回答肢の非常に多いも のを対象にしうることがわかる。番号で回答するような一般的な場合は、1要 素に2Bytesを消費するだけなので、この枠はさらに4倍の20万Cellにまで広 がる。もっとも、N88BASICでは1つの配列の大きさに制限があるので、 このままを実現できるわけではないが、複数の配列に分割すれば可能だから、 実用上無制限に近いといえる。 33次元クロス集計プログラムの概要 3.1プログラムの基本的仕様 以上をふまえ、プログラムの基本的仕様を以下に箇条書したように定めた。 a、RAMDiskの利用(原データの転送、結果Fileの一時記憶) ・約1200件の大量データを、Diskからいちいち呼び出して処理する場合の、 時間の消費と機器の損耗を防ぐために、処理の冒頭で原データをすべてRAM Diskに転送しておき、以後の原データ呼び出しは、このRAMDiskからおこ なう。(1.1.1参照) ・集計結果も、RAMDiskにFileとして記憶しておき、表示形式の変更等 においても繰り返し利用できるようにする。 b、処理の自動化 ・3項目がすべて、回答肢のうち1つのみを回答する項目(単純項目と呼ぶ) である場合(大多数がこれである)は、項目番号を打ち込むだけで、すべて自 動的に処理できるようにする。(配列の大きさの指定、集計結果Fileの命名も 自動化) ・3次元の全方向の合計を同時に計算する。 -82-

(12)

・分母を選択して、各欄の百分率も同時に算出、表示する。 、これらの集計結果は、多様な加工のため、File化しておく。 C,3種類の表示 ①クロス集計表:横方向第1元、縦方向第2元の、2次元表を、第3元の回 答肢順に(無答、その他回答、合計欄も含め)、表示する。 ②棒グラフ:3つの次元のどの切口でもパーセントで表示する。百分率の分 母は、集計結果全欄のうちから任意に選べるようにする。 ③原データ表示:特徴の把握や、誤記入のチェックのため、任意の原データ を、ある程度整理して、一覧表示できるようにする。 3.2プログラムの基本構成 上記の仕様を満たすために、プログラムの基本構成を次のように定めた。 ①Mainroutine部(未MAINほか) 全体を少数のブロックに分け、各ブロックをSubroutine群としてまとめ、 冒頭のMainroutineで統括するようにした。油1.7 ②原データ転送部(米TRANS・DT) RAMDiskに原データを転送済みか否かの確認。済みなら、次ブロックへ。 否なら、転送作業を行って、次ブロックへ。 ③項目指定部(※DETMIN) 集計の対象とする項目の指定。X,Y,Zの3次元について、項目番号で指定 する。これで、各項目の日本語略称や回答肢数も読みだし、配列の大きさDIM-ensionの指定も行う。集計結果のFileがあるなら、表示部⑦に飛ぶ。 ④集計部(米CALC) 」原データを読み込み、上記で指定した項目の回答肢の番号の組合せに対応し た配列のCellC(X,Y,Z)を加算していく。全対象を処理したのち、各 軸の合計欄を計算し、各行列の末尾に書き込んでおく。 ⑤集計結果記録部(米RESULTMEMO) 上記の結果を、RAMDiskにFileし、必要ならFDDのB番のFDに記録 し長期保存しておく。集計結果があるので、ここでは表示部⑦に移行する。 -83-

(13)

⑥結果読み出し部(米RECALL)

同じ項目を対象とし既に集計済みのFileがある場合、項目指定後、ここに飛

んでくる。RAMDiskかB番のFDDから集計結果Fileを読み込む。

⑦表示部(米DISP)

集計結果の配列を表ないしグラフで表示する。まず、どの形式で表示するか

を選択する。それに応じて、つぎの3つのSubroutineに分岐する。

⑧クロス集計表部(米CROS)

クロス集計結果を、第3番の項目Zの回答肢番号順に、2次元の表形式で、

百分率も加えて、順次自動的に表示して行く。Printerへの切り替えも、 ̄挙

動で可能とする。

なお、百分率も表示することから、回答桁数との関係で、一行で表示でき

る場合(米SNG)と2行にわたる場合(米DBL)とがあり、それぞれを自

動的に切り替えろ。 ⑨棒グラフ部(未DSP・BAR)

2つの軸(次元)をあらかじめ指定し、その交線上の分布を、任意に指定し

たCellの数値に対する百分比として、単純な棒グラフで表示する。単純集計の

結果のみならず、他の2軸の回答肢番号を任意に選んで、表示できるようにす

る。Printerへの切り替えは前と同様。

⑩原データ一覧表部(米UDUMP)

原データを、一応解読できるていどに、整頓して、一覧表示する。連続表示

も可能とする。Printerへの切り替えは前と同様。

閥L7このようにプログラムを機能ごとにブロック分けして、各ブロックを

Subroutineとしてある程度独立した小プログラムにまとめ、これらをそれ自

体としては短い部分プログラムであるMainroutineで一括して管理する方式

は、大規模なプログラム作成で、常套化されている。プログラムは大規模にな

るほど、全体の把握が難しくなり、論理的あるいは技術的な誤謬の発見や訂正

が加速度的に困難になる。逆に、小規模に分割すれば、目的や機能も明確にな

り、誤りの入り込む余地がそれだけ減少し、全体の完成度を高めることが期待

できろ。同時にプログラムの流れ、見通しも飛躍的によくなるので、第三者の

-84-

(14)

理解を容易にし、後日の訂正やVersionupにも役立つといった利点がある。 『プログラム書法』ではこれを、「たいていのプログラムは、全部いっぺん に理解するには大きすぎるものである。それらは、個別に征服できるような小 部分に分割しなければならない。それが信頼できるプログラムを書くための唯 一の方法である。それはまた、プログラムを読み、理解するための唯一の方法 である。/サブルーチン、関数、および手続きは、大きなプログラムの機 能単位(モジュールーmodule)となる。」と表現していろ(文献6、訳書84頁)。 Ⅱプログラム前半の内容と実行結果 上記に沿って、プログラムの前半部分の集計作業と記録までを、やや具体的に みていこう。 1Mainroutine部(米MAINほか:5-1170行〔行番号5から同1170ま での意。以下同じ〕) 1.1初期値設定(5-1050行) プログラムの冒頭にあたって、一般的な書式にしたがって、まずタイトルの 表示(10-50行)掴2.1と、機器の初期設定(1010行)閏2.2をおこなう.次に、 FuctionKeyとHELPKeyを用いる下記の割り込み処理の定義をあたえる。 リスト1前半 5,SAVE”QNR-AM1・BAS'’ 10DATA,,*****・・・・・・・・***・・・***・・***。。*・・***中・心・●**な*****・'’ 20DATA',。■アンケート分析I」*'’ 30DATA,,* S元クロス集計<棒グラフ、原データ表示・'’ 40DATA”*byRyoichiAbe1987.10。、D 50DATA,!*******わ******$*・*****“な*・ゆ・**・*・・わ**な$・*“本*・・・'’ 1000, 1010CLEAR&'11000,,,&'12000:CONSOLEO,24,0,1,0 -85-

(15)

1020,町INTA-Z 10300NKEYGOSUB*F1KEY,*F2KEY,*F3KEY 10400NHELPGOSUB*HEU〕.D 1050, bONKEYroutine〔1030行〕 「ONKEYGOSUB」文は、FunctionKeyの1番から3番までを使 って、表示部での処理の中断や変更を宣言するものである。「KEYON」 を宣言した後は、「KEYOFF」が出てくるまで、指定されたKeyが押さ れろと、処理中に割り込みが発生し、そのKEYに対応するリスト2〔7210-7520行〕に示したSubroutineが呼び出され、、実行される。 まずf・1は、表示部冒頭のMENU画面に戻り、作業の種類を切り替える のに用いろ。(米F1KEY) f・2は、各作業の冒頭へ戻るために用いる。(米F2KEY) f・3は、出力先を、CRTとPRINTERに切り替えるためのものであ る。「CMDON」でPRINTER、「CMDOFF」でCRTである。 (米F3KEY) ・ONHELProutine〔1040行〕 上記FunctionKeyの説明を、HELPKeyに割り当てる宣言をする。具体 的には、Subroutine米HELP.,(7460-7520行)を随時呼び出し、説 明文を表示させることになる。参照後、任意のKeyを押すことで、中断したプ ログラムの続きに復帰できろ。 リスト2 7210,..***・**。。*・*●**ウ・*・・な**・●*●*・*****・゛*****。。**準*な。**・ SubPmgram 7220杉へ~* 7230,..**。。*・*●******・******・**●******●***。。*・*****・***が準* 7240,===============ONKEYroutine----------- 7250.F1KEY 7260cmOFF:PRT=O:cONsOLE,’’’0, -86-

(16)

---~~---

---7270

INPUT

"ME N

un,,~t)

:li-

OK? (YoreR)

",AS

7280 IF

AS=""

OR

INSTR("Yy"

,A$) THEN BlSll RBTURN

7290

RETURN .DISP

7300

·F2KEY

7310

CMD OFF:

PRT=O: CONSOLE '" ,0

7320

INPUT

"C:(1)~J.I(1)~W>~;:~tJ~T

OK? (YarCR)

",AS

7330 IF

AS=""

OR

INSTR("Yy",AS)

THEN ELSE RHTURN

7340

ON INSTR("CBD",BR$) 6OTO

7360,7370,7380

7350

RETURN .DISP

7360

RETURN .CROS

7370

RETURN·BARG

'7380

RETURN

.D.DUMP

7390

.F3KEY

7400 eMD OFF: CONSOLE ",,0

7410

IF

PRT=O

THEN ELSE

74~O

7420

PRINT

·'f:l:thlc~PRINTER':.f'1ti;t

t

T"

7430

eMD ON : PRY=I: RETURN

7440

PRINT

"W1J9c~

CRT

':.~tit~T"

7450

CMD OFF: PRT=O: RETURN

7460 '===============

ON

HELP

7470

*HFJ.,P.D

7480

PRINT: PRINT "Function

Key

':J:

~'~hMQ).J1JJ"

7490

PRINT "(

f

-I)

MMENU

~~

(f·

2)MYI(1)Bjj"'~Q

( f ·

3)

CRT~ PRINTER(1)~1J t)

tit.

If

7500

INPUT

"7. L

t~

I?

~tlfJ)~-~jtp

L

t

T

",8$

7510

RETURN

7520 '

~1.2 ~-1 l--)V~.~O)~~~j:, R EMtcCV'v '~~~l:':Jttt:~~fjO)~rJij3t

(R E M)() O)1fgJ:tl:~iFT~O):!J), iiI&~~~:O:!Jj, L. L.-e,;~j:D A TA)(~_

(17)

-いてある。REM文ではプログラムの実行の際に、表示されないので)別に表 示用のroutineを設ける必要があり、また、後に変更する際にも、複数箇所を 一斉に訂正しないとどれが正しいのか不明になってしまうといった欠点がある ので、ここでのようにDATA文としてもプログラム実行時の表示用にも使え るようにする方がよいであろう。 陶2.2メモリー領域の配分を定めるcLEAR文と画面表示関係を定める CONSOLE文は、同じ企業が発売した同名のN88BASICでも、いわゆ るStandalone版(本体に付属)と、MS-DOS版とで大きく異なっている。 MS-DOS版の方が、機能が拡張している分、指定が複雑になっている。と くに、CONSOLEの第5項は、目だたない位置にあるが、日本版ASCII CODEのCharacterを表示するか〔1〕、ShiftJISCODEとして日本語表示 をするか〔O〕、の選択を行う重要なスイッチとなっており、これを間違える と、漢字がおかしな模様になったい疑似グラフィクのつもりが漢字になった bと、出力に大きな影響を与える。したがって十分な注意が必要である。本プ ログラムでも両者を使いたいために苦心しており、指定をいくども切り替える ことも試したが、listの一部が漢字に化けて公表するには見苦しくなるため、 断念した経緯がある。 1.2MAINroutine(米MAIN;1060-1150行) プログラム全体を、いくつかのブロック分けているが、ここでそれらを統合 して操作する。1120行で1140行に飛んでいるのは、1110行を実行していれば、

集計結果が既に作られているからである(ここを以下、MAINRと略称す

る)。 一一 一一 一一 一一 一一 一一 一一 一一 一一 一一 【】【|】 印印四一m 》■■一 一市・日巳 側 【凹胆皿 印一四町、 虹 】四阿胆 一一 可●0△ 一一 (叩叩) &Ⅲ P一一 N耐皿 一一

剛脆M

一一 半宰 ●** (四m】(】【|)(四【】 後一一mN000

H--肌朋伽脱

7* スー00》《一U0》0》 リⅢWⅡⅡ、 一勺日日(●一口■(●■ロ■△□一日■(●Ⅱ■二 -88-

(18)

000000 123456 111111 111111 GOSUB*RESULTHEN0 GOTOll40/ GOSUB中RECALL GOSUB*DISP END p-,_ニーーニーーニーーーーユーニーーーーニー_==---==--------二二==-------二一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一二二-----_ 2原データ転送部(米TRANS・DT;1170-1380行) RAMDiskに原データを転送済みか否かを確認。済みなら、次のブロック へ。否なら、転送作業を行って、次のブロックへ。 〔1190〕初期設定していたら(TRANSED=1)、MAINR・へ戻 り、次のブロックに進む。 〔1200-1250〕次回のために、上記のF1ag役の変数を1としたのち、タイ トルの表示を行う。 〔1260-1310〕原データ(File名、FAMFL`DAT)閥2.3をRAMDisk に転送済みなら、そのDrive番号を聞いて(米DRV、NO;1330-1380行)、 MAINR、にもどる。未転送なら、‘同じように転送先のDrive番号を聞い てから、「CHILD」機能由24をつかって、一括転送する。 リスト3 1170,ニニーーーニ=二二二二==原データ転送二==二二二二=二====== 1180*TRANS・DT 11901FTRANSEDTHENRETURN 1200TMNSED=1 1205DIMP$(170) 1210GOSUB・PRNCllG 1220RESTORE10~,TitleDisp1ay l230FORI二1TO5 1240READA$:PRINTSPC(12);A$ -89-

(19)

1250NEXT:PRINT

12601NPUT',原データは、RAMDISKに転送済ですか?〔Y

orCR/rests〕”,A$

1270ⅣA$=''''0RINsm(',Yy,,,A$)THENGOsUB・DRV・NC:RETuRN

1280PRINT,,原データ・ファイルFAHFL・DATを”;

,,DriveBにセットしてください'’

1290α)SUB*DIW・NO

1295,START$=TIME$

1300CHILD”COPYB:FAWL・DAT,,+DRV$+,':” ̄

1305,PRINT,,START--,,START$:PRINT,,END----,'TIHE$

l310RETURN

1320’---RAllDiskDriveNumber

l330*DIW・NO

13401NPUT,,輪差先RAMDISK〔>310kB〕のDriveNo.は?

〔CorD,不使用二N〕,,,DM

1350IFINSTR(',N、,',DIW$)THENDRV$=''8":REmN

1360IFINSm(,,cc,',DHV$)TIlENDRV$=,℃":REmRN

1370IFINsm(,,,。,',DRv$)TIlENDRv$=''D',:RETuRN

1380GOTO1340 、㈱2.3本誌前号で作成したアンケート調査の原データFileである。元は、拡 張子にDAT」はついていなかったが、多数のFileが並存するDOS上での 取扱いのため、慣例にしたがって付与した。 ㈱2.4CHILD機能は、企業が生産過程の一部を他企業に下請けさせるよ うに、現在実行中のプログラムから、別のプログラムを起動し実行したのち、

復帰する機能で、N88BASICでは、MS-DOS版のみにある高度な機能

で、そのプロセス領域をCLEAR文で確保しておく必要がある。ここでは、 DOSのCOPY命令を呼び出して、原データFileのRAMDiskへの転送を 実行させている。 -90-

(20)

3項目指定部(米DETMIN;1400-1700行) 〔1400-1570〕クロス集計表に出力する際の、横軸としたい項目をX、縦 軸をY、第3の軸とする項目をZとおく。そのとき、各項目の情報(日本語名 称や英字略称、集計用配列の大きさを定める回答肢数など)をSubroutine 米ITEM(リスト5;7850-8410行)から読み出す。 リスト4

1390,========二二====項目指定一---1400*DETIIIN 1410ClS

1420PRINT,,単純なs重クロスまで自動的に処理します。”:PRINT

1430PRINT”Z(第S元)に従って、X(横)、Y(縦)の'';

,'クロス表を出力します。'’

1440, 1450XX$=,,,':YY$=,,',:ZZ$=,,,,:PRINT

1460PRmT,'項目番号(ITElINo.)を入力してください。'’

1470INPUT,,X=,,,N 1480GOSUB*DETM:IFBADTHEN1470 1490XN=N:XN$=N$:X1$二W1$:X2$=U2$:XS=S

15001NPUT,,Y=,,,N

1510GOSUB①DETM:IFBADTHEN1500 1520YN=MYN$=N$:Y1$二W1$:Y2$二W2$:YS=S 15301NPUT,,Z=,,,N 1540GOSUB*DETIl:IFBADTHEN1530 1550ZN二N:ZN$=N$:Z1$=W1$:Z2$二W2$:ZS=S 15601NPUT''0K?〔YorCR〕''’0K$ 15701F0K$=,'Y''0ROK$=,,,,THENELSE1450 1580, l590Dmc(xs+1,Ys+LZS+1) -91-

(21)

l600PRmTxaYS,ZS

16101NPUT”計算鰭果のFileがありますか?〔YorCR〕",A$

16201FA$=''''0RINSTR("Yy,',A$)THENRETURN1130,*RmAIL

1630RETURN ,●DETNIN 1640’ 1650*DETll

l670BAD=0:IFN=O0RN>170THENBAD=1:RET1jRN

1680GOSUB・ITEIl l690RETUM 1700,

〔1590-1700〕3つの軸の項目の回答肢数を基づく配列C(X,Y,Z)

DIMensionを指定したのち、計算結果Fileの存否を問い、あるならMAIN

のRECALLroutineへ飛び、なければ米CALCへ移行する。 のR リスト5

7850,..本***な****な*****・***・*・“わ**・*・***。。**゛・**・*掌・******

7860,*MTAPool*

7870,**・中*****な******・**戦***・**心・*・**********“*な。****.***

7880,

7890,====二=====Spec・ofltemg==============

7900*D1:DATA/01,AREA,,,地点No.'1,79,/02,OBJ,,,対釧。.",1200

7910DATA/03,FS’'1家族数''J1

7920傘D2:DATA/04,NF,,,家族内No.''’11,/05,ZK,,,続柄''’90

7930DATA/06,sX’''性W,2,/07,AG,"年齢''’19

7935DATA/08,BP,,,出生地'''59,/09,LT,,,剛据P'’6

7940DATA/10,GR,,,学歴'''10,/11,V0,,,職種''’14

7950DATA/12,EⅡ,,,雇用形態''’9,/13,CV,,,転lMi経験''’6

7960.,3:DATA/14,Q1,''住宅形態",8,/15,Q1-1,"住宅面積''’13

7970DATA/16,Q1-2,,,部l室1M【''’13,/17,Q2,,,親鯛丘住''’7

-92-

(22)

7980DATA/18,Q3,"生計費''’11,/19,Q4,,,家計収支''’7

7990.,4:DATA/20,Q5-1,',収入源1''’8,/21,Q5-2,,,収入源2''’8

8000DATA/22,Q5-3,,'収入源3''’8,/23,Q5-4,"収入源4,,,8

8010DATA/24,Q6,',朝食",5

8020*D5:DATA/25,Q7ml,,'食準備、''’11,/26,Q7sl,"食準備s''’11

8030DATA/27,Q7,2,',食片付図''’11,/28,Q7s2,,,食片付s''’11

8040DATA/29,Q7m3,"買物、",11,/30,Q7s3,''買物s",11

8050DATA/31,Q7m4,,,掃除、''’11,/32,Q7s4,''掃除s",11

8060DATA/33,Q7m5,''ごみ処理、''’11,/34,Q7s5,',ごみ処理s''’11

8070DATA/35,Q7,6,,,洗濯、''’11,/36,Q7s6,"洗濯s''’11

8080DATA/37,07,7,',近所交際、''’11,/38,Q7s7,',近所交際s''’11

8090DATA/39,07,8,W,親戚交際、'''’11,/40,Q7s8,,,親戚交際s''’11

8100.,6:DATA/41,Q8,,'女・就職観''’6

8110DATA/42,Q9,"位牌有無",3,/43,Q10,''位牌礼拝''’4

8120DATA/44,011,''墓有無''’3,/45,Q11-1,"墓種類''’4

8130DATA/46,Q12,,,ユタ経験''’3,/47,Q12a,',ユタ回数''’3

8140DATA/48,Q12b,',ユタ目的''’10,/49,Q12c,,,ユタ効用''’5

8150傘D7:DATA/50,Q13,',位WiL相続'''5,/51,Q14,''宅fUl相続",5

8160DATA/52,Q15,',宅地外相続''’7,/53,Q16,''不相続理由,',5

8170DATA/54,Q17,"親扶養者''’5

8180.,8:DATA/55,CL,',共働き者',,11,/56,Q18a,''働く理由a''’4

8190DATA/57,Q18b,',働く理由b''’4,/58,010a,"職選択a''’8

8200DATA/59,Ql9b,''職選択b''’8,/601Q20,''経歴'9,5

8210DATA/61,Q21,',共働き感想''’14

8220*D9:DATA/62,CK,',CheckBit",3,/63,FT,',家族類型1''’57

8230DATA/64,FG,,'世代類型''’7,/65,FM,,,家族類型2''’36

8240DATA/66,FD,"家族10類型",10,/67,LA,',地域分類”,26

8250DATA/68,AG,"戸主年階層''’5,/69,CT,"市溜螂別",2

8260DATA/70,A8,,W戎8分類",8

-93-

(23)

8270,--------GettingSpec、------------- 8280*ITEN 82901FN>l61mENN1二N-161:REsToREなD9:GoTo*M1 83001FN>l54mENN1=N-154:REsIoRE・D8:GOTo*Nx1 83101FN>149TllENN1二N-149:RESTORE*D7:GOTO・NX1 83201FN>140T1IENN1二N-140:RESTORE*D6:GOTO傘NX1 83301FN>124TlⅢNN1二N-124:REsmRE*D5:GOTo*Nx1 83401FN>l19mIENN1二N-119:BESTORE*D4:GOTO*NX1 83501FN>113I1IENM=N-113:RESTURE*D3:GOTO・NX1 83601FN>31nIlENN1=N-3:REsmRE*D2:GoTo・Nx1 8WON1=N:RESTORE*D1 8380*NX1:FORNQ=lTON1:READWO$,111$,U2$,W3:NEXT 8390H$=',”+w1$+”,'+U2$+,,,,:s二V3+1:N$=RmllT$(w0$,2) MOORETURN M10, 4菓計部(米CALC;1710-3200行) 4.1原データFileのOPEN 〔1740-1770〕原データのFile、FAMFL・DATの置かれたFDDの番 号を確定した後、それをOPENする。 〔1780-1800〕読み込まれる原データの変数列を、FIELD文でランダムフ ァイル・バッファ内に割り当てろ。変数列は、170項目に及び、各変数の使用 メモリサイズも不同であるため、Subroutine米BT(リスト7;8420-8450 行)に、その全情報を集中して書き込んでおき、これを1項目毎に呼び出し、 それまでの項目分をdummyに繰り込み、位置を積算しながら、正確に割り当 てていく(1790行)。 -94-

(24)

IJ A ~ 6

1710

'=====================================================

1720

'=============

Jjj{::r-

?

ift~;Ah...

#Cit

==============

1730

.CALC

1740

IF

DRV$

<> ''''

THBN GDRV$=DRV$: GOTO 1770

1750

PRINT ".r-?Q)~~Drive (J) No. (B~D)

C;J:?

.~,

1760

INPUT ''''

,WHV$:

IF INSTR("BCD" ,GDRV$) THEN ELSE

1760

1770

OPEN

GDRV$+":FAMFL.DAT"

AS

#1

1780 FOR 1=1 TO 170

1790

GOSUB .BT:FIELD

#1,U

AS DUM$,BT AS P$(I):U=U+BT

1800

NEXT

1810 '

1820 PRINT "Started Reading data on "TIME$

1830

GOSUB *NORML.RD

'###

point

to improve

1840 PRINT "Ended above ,and Started

SUllUDing

on "TIMBS

1850 GOTO -SUM

1860 '

1870

*NORML.RD

1880

FOR 1=1 TO

1192

1890 GET #1,1

1900

XA=VAL("&H"+P$(XN»

1910

YA=VAL("&H"+P$(YN»

1920 ZA=VAL("&H"+P$(ZN»

1930 C(XA,YA,ZA)=C(XA,YA,ZA)+l

1940

NEXT

1950

CLOSB

#1

1960 RETURN

1970 ,.

(25)

-95-リスト7 8420,========BytesforeachlTEMofRawDATA====== 8430.BT 8440BT=VAL(111,$(''341121221111112122111111212211111121221111 112122111111212211111121221111112122111111212211111121221111 112122111111322111111133333333333333331111111311121111111141 21212111"’1,1)),sum253Bytes,l701tems M50RETURN 8460, 4.2集計実行(1810-1970行) 〔1820-1840〕設定された回答肢の中から1つだけ選択する通常の単純な形 式の項目だけからなる場合のみを、ここでは対象にしている。そのときには、 Subroutine米NORMAL・RD(1870-1960行)をCALLして、X,Y, Zの値を数値化して陶2.5配列の番号として、それで指定されるCellC(XA, YA,ZA)の値を1づつ加算していく。これが集計の作業に外ならない。 現実には、この場合がほとんどであるが、複数回答などでデータを圧縮した 場合など、特殊な場合は、別に専用の復元・処理のプログラムをSUbroutine の形で作成しておき、これをCHAINMERGE㈱2.6文で呼び出すこと で対応するようにしている。今回は複雑になりすぎるため発表を控えたが、次 の機会にプログラムの拡張として発表したい(続く未SUMの行番号が、約 100O飛んでいるのは、その処理routineを組み込むためである)。 ㈱2.5N88BASICのランダムFile形式ではく数値は特殊な関数処理によ って記録書き出し用のbufferに転送することになっていろ。整数値'であれば

MKI$()を用いて、2Byteの文字列にするのである。これを読み出すと

きには、上の例ではCVI()というやはり専用の関数で整数値に復元する

ことになっていろ(文献7,257,231頁)。これは10進で絶対値32767以下の多 桁の整数値を記録するときには桁数の節約になるが、このアンケート調査デー

タのように、ほとんどの項目が1桁で済む場合などでは、かえって2Byteも消費

-96-

(26)

してしまう点でもまた手続きが面倒な点でも、好ましくない。ここでは、文字 として扱い、1Byteで済ましてメモリの大幅な節約を実現していろ。 また、1900行から3行で、各軸の回答肢番号の復元を、読みだした該当項目

のデータP$()に。&H"を付加(+)して、数値化(VAL関数)し

ているのは、Record内部で、10以上15以下の回答肢をAからFまで割り当てて 16進数で表示しているので、16進データとして処理するためである・ 圏2.6CHAIN命令は、別個のBASIC系プロラムを実行させる命令で、

MERGEoptionをつけると、現在lordされているプログラムとこれを混合

させ、指定した行番号から実行させることができる。付加するプログラムは、 ASCIIsaveされていなければならない面倒はあるが、プログラムの資産

化、Library化がむずかしいBASICの難点を克服すべ<拡張された機能

として、そのメリットは非常に大きなものがある。これを活用することによっ て、共通の本体部分は、1本のプログラムで済ませ、個別的な処理を要する部 分だけ小さなroutine群を作成しておけば、簡潔かつ統一的に、全体を処理で きるようになる。 4.3合計算出(未SUM;3000-3200行) 3次元の合計欄の算出は、2次元の場合と異なりかなり複雑になる。3方向に ついて、立体的なイメージを描いてから、FOR~NEXT文の、estを形 成し、計算式をたてる。3方向の合計面の計算は、一括してできるが、その合 計面の重なり部分(合計の合計)と3つの合計面の重なり(総合計)は、それ ぞれ別に式をたてて求める必要がある。ここでは、基本的計算式の中にその計

算式をできるだけ取り込んで(3090-3100行)、計算時間の短い簡潔な表現形

式を心がけた。 リスト8 3000,---Summing 3010*SUN 3020FURZ=OTOZS 3030FORY=OTOYS  ̄ ̄ ̄-----■■■ -97-

(27)

3040FORX=OTOXS

3050C(XS+1,Y,Z)=C(XS+1,Y,Z)+C<X,Y,Z)

3060C(X,YS+1,Z)=C(X,YS+1,Z)+C(M,Z)

3070C(X,Y,ZS+1)=C(X,Y,2S+1)+C(M,Z)

3080NEXT,X

3090C(XS+1,YS+1,Z>=C(XS+1,YS+1,Z)+C(XS+1,Y,Z)

3100C(XS+1,Y,ZS+1)=C(XS+1,YbZS+1)+C(XS+1,Y,Z)

3110NEXT ,Y 3120NEXT,Z 3130FURX=OTOXS+1 3140FORZ=OTOZS

3150C(X,YS+1,ZS+1)=C(X,YS+1,ZS+1)+C(X,YS+1,Z)

3160NEXT ,Z 31701vEXT’X

3180PRINT,,EndedSummngon,,TIME$

3190RETURN,Calc.&summing

3200, 5集計結果記録部(米RESULTMEMO;3210-3500行)、リスト9

上記の結果を、RAMDiskにFileし、集計結果があるので、表示部⑦に移

行する。 〔3230-3280〕上記の結果を、RAMDiskをつかっているなら、そこに “RSLTF”という名のsequentialfileをOPENして、Subroutine 米WRITEOUTにおいて書き込む。Fileのサイズは、3つの項目の肢数十

3を累乗した数値の2倍程度である。4キロByte余りという例が多い。

〔3300-3370〕別な機会に再び利用する可能性のある項目の組合せである場

合には、FDD(F1oppyDiskDrive)のB番上のFloppyDisk(原データの

Fileが入っているものでよい)に、各項目の番号の下2桁を順に綴ったFile名 を自動的につけて(3320行)、上記と同じ内容を記録しておく。自動的な名称 -98-

(28)

の付与は、再利用する際に、記憶やメモ類の確認や打ち込みなどの煩雑で誤り 易い操作を省いて、確実迅速に取り出せるようにするためである。 〔3390-3480〕米WRITEOUT:次の順に、Fileに書き込む。

まずX軸の項目から順に、項目番号XN、日本語名称X1$、英字略号X2

$、回答肢数(+1)XS(3400行)。次に、集計結果配列Cの合計欄を含む

Cellを、X,Y,Zの番号を順次増加させながら、書き込む。 なお、このroutineではすでに関係変数群や配列Cが与えられているから、 MAINR・に戻ったのちは、1120行により、直ちに表示routineに飛ぶこ とになる。 リスト9

3210,===ニニニーーニー=二二二=集計結果記録二二======二二二二=

3220*RESULTHE1IO 3230PRINT'、結果を、''; 32401FINsTR(',CD,,,DRV$)THENmsE3300

3250PRmT”まずRAMDISKNo.,'DRV$,'に記録します'’

32600PENDRV$+,':RSLTF”FOROUTPUTAS#2 3270GOSUB・WRITEOUT 3280CLOSE#2 3290,

3300INPUT,'F・DISK(B:)に記録しますか?〔YorCR/〕,,,A$

33101FA$=''''0RINSTR("Yy,,,A$)THENElSE3370

3320FmE$=,,B:''十xN$+YN$+zN$

3330PRINT,,FileDescrpt=',FILE$

33400PENFILE$FOROUTPUTAS#2 3350GOSUBなWRITEOUT 3360ClDSE#2 3370RETURN’・RESULTMEIlO -99-

(29)

000000000000 890123456780

羽羽弧弧弧弧弧弧弧弧弧弼

*WRITEOUT

NRITE#2,川,X1$,X2$,XS,YN,Y1$,Y2$,YS、ZN,Z1$,Z2$,ZS

FORz=Omzs+l FORY=OTOYSH FORX=OTOXSm WRITE#2,C(X,Y,Z) NEXT,X NEXT,Y NEXT,Z RETURN , 6結果読み出し部(米RECALL;3510-3820行) このroutineは、既に集計結果のFileがある同じ項目の組合せをあらためて分 析するような場合に、再計算や結果Fileの作成といった作業の重複を避ける ために使うもので、項目指定後、ここに飛んでくるようにしていろ。 〔3530-3580〕集計結果Fileの種類を、DiskDriveの番号で確認し(Bな らFloppyDisk、CまたはDならRAMDisk)、そのFile名をつける。 〔3600-3620〕上記のFileをOPENし、米READINを呼び出して、元 の順序通りに変数群と配列Cを書き込む。 〔3630-3680〕FDDから読み込んだ場合は、今後の処理の便のため、RAM Disk上に前の米RESULTMEMOと同様の結果Fileを形成する。 〔3700-3800〕米READIN:上記の米WRITEOUTとまったく同 じ変数、配列を同じ順に、メモリ上に読み込む。 〔以下次号に続く〕 -100-

(30)

I)~ " 10

'3510 '

===============

&8tM:Mt

.~W

L.

.================

3520

·RECALL

3530

PRINT

".,tM:Mt~H~t~l;lT"

3540

INPUT

"Source

Disk No.

1:1?

(B~DJ ",RDRV$:

3550 ON INSTR("BCD",RDRV$) GOTO 3570,3580,3580

3560

OOTO

3540

3570

FD.D=!: FILES="B:"+XN$+YN$+ZN$ : GOTO

3600

3580

FD.B=O: FILE$=RDRV$+":RSLTF"

3590· '

3600

OPEN FILES FOR INPUT AS

#2

3610

.

GOSUB .RBADIN

3620

CLOSE #2

3630 ._

IF

FD.8 AND DRVS(>

"8" THEN ELSE RETURN

3640 .

TRFI~=DRV$+":RSLTF"

:.PRINT

"TR$="TRFIL$

3650

OPEN TRFIL$ FOR OUTPUT AS #2

3660

GOSUB .WRITBOUT

3670

CLOSE #2

3680

RETURN

3690 '

3700

*READIN

3710 INPUT #2,XN,X!S,X2$,XS,YN,Yl$,Y2S,YS,ZN,ZI$,Z2$,ZS

3720 FOR Z=O

]Q

ZS+l

3730

FOR

Y=O TO YS+l

3740

FOR X=O TO X8+1

3750

INPUT #2,C(X,Y,Z)

3760

NEXT' X

3770

NEXT

'y

3780

NEXT 'Z·

3790

RETURN

(31)

-101-参照文献(本編で引用したもの) 〔1〕阿部亮一「パソコンでのアンケート・データの入力および修正方法の 事例研究一表形式化とカーソル・キーによる入力・修正作業の迅速正確 化一」、『沖大経済論叢』第11巻、1.2合併号、1987年3月 〔2〕森塚慎治「MS-DOS-N88DISKBASICファイル転 送プログラム」、『TheBasic』1984年8月号。 なお、プログラムは「ナンパーソフト98」Vol、1,技術評論社刊の Diskに、また説明文は同マニュアルに納められており、筆者はこれを利用した。 〔3〕GIN「ファイル転送プログラムMr・TRANSFER」、『The Basic』1986年1月号 〔4〕村瀬康治『応用MS-DOS』アスキー出版局、1986年7月 〔5〕小紫成吾「プリンタドライバの作成」『TheBASIC』1987年11月号

〔6〕B、W,KernighanandPJ,P1anger,wTheE1ementsofProgra-

mmingStyle”’2nded.,McGraw-HillBookCo.,198(木村泉訳、『プロ グラム書法』第2版、共立出版、1982) 〔7〕NEC『PC-9801EBASICREFERENCEMANUAL』 〔8〕NEC『PC-9801EUSER,SMANUAL』 -102-

参照

関連したドキュメント

そのため本研究では,数理的解析手法の一つである サポートベクタマシン 2) (Support Vector

重回帰分析,相関分析の結果を参考に,初期モデル

メインフェイズにおいて、ターンプレイヤーは自分のリーダーエリア

S SIEM Security Information and Event Management の 略。様々な機器のログを収集し、セキュリティ上の脅 威を検知・分析するもの。. SNS

分だけ自動車の安全設計についても厳格性︑確実性の追究と実用化が進んでいる︒車対人の事故では︑衝突すれば当

自動車環境管理計画書及び地球温暖化対策計 画書の対象事業者に対し、自動車の使用又は

核種分析等によりデータの蓄積を行うが、 HP5-1

 千葉 春希 家賃分布の要因についての分析  冨田 祥吾 家賃分布の要因についての分析  村田 瑞希 家賃相場と生活環境の関係性  安部 俊貴