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

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
38
0
0

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

全文

(1)

Title

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

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

Author(s)

阿部, 亮一

Citation

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

Issue Date

1988-03-31

URL

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

(2)

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

-クロス集計の自動化の試み- 阿部亮 【前号】 はじめに I分析の方法 l分析の手段 2分析の対象と具体的方法 33次元クロス集計プログラムの概要 Ⅱプログラム前半の内容と実行結果 1Mainroutin6部 2原データ転送部 3項目指定部 4集計部 5集計結果記録部 6結果読み出し部 【以下本号】 Ⅱ補足 Ⅲプログラム後半の内容と実行結果 1表示、主要部 2クロス集計表 2.11行表示 2.22行表示 3棒グラフ表示 4原データ表示 5割り込み処理 Ⅳ成果と残された課題 1

(3)

〔承前〕との(下)では、(上)で算出、記録した3次元までのクロス集計結

果や原データを表やグラフで表示する部分の内容説明と実行結果の例示をおこな

う。 Ⅱ補足

前号掲載の前編〔文献9〕では、プログラムの説明に終始し、実行時のCRT

画面を例示しなかった。これは実行の各段階を連続して示さなければ理解しにく

いためで、前段が終ったとの段階で後編へのつなぎの意味もこめて、ここに表示

例を一括して掲載しておこう。

図1初期画面I(出力先切り替え機能設定、原データのRamDisk転送)

Built-inPRINT->LPRINTCharlgeRcLItine?(CrI[11.N)[Y,.]?Y Youcanusethefollo↓jingcommands、 C1viDON:PRINT->LPRINT CIvlDOFF:Cancel 中中**中小Iや*中中中小小1供*●*****:小小中**O:*+,,い*小才Oq:+of小.小?040.OqOd中中*・0.0:OqO

黙ア邑莞石合妻藁言+」棒グラフ<原デー噺$

byRりっichiFlbelgS7、10。 *中中中中中中*中中中中中中中中*や中中中中*中中中中中中*中中中中中中OOq*中中****+:い*中

震堯嚇:\鐡二籍H濡鮮縫鵬雰灘脚,

(1)図1は、リスト3にある本プログラム開始時の画面である。

先頭の噸Built-inPRINT->LPRINTChangeRoutine?”から3行目ま

では、文献10から借用した画面表示とプリンタ出力とを簡単に切り替えるRoutine

の組み込みに関する部分である。その詳細はm5で述べるが、図では組み込みを

指示していろ。

プログラムのタイトル表示に続くブロックは、原データのRAMDiskへの転

送関係の指示をあたえる部分である。図は、まだ転送していない場合で、原デー

タ・ファイルのFloppyDiskへのセットを指示し、RAMDiskのDrive

numberを尋ねていろ。これは、RAMDiskのDrivenumberが、DiskDrive

-2-

(4)

中最後の番号を与えられることになっていて、接続されるFloppyぞHardDisk

Driveの台数に応じて変動するのに対応するためである。現実のDriveが2台で あればその次の番号としてCを選択する。 図2初期画面Ⅱ(再起動時、原データRamDisk転送済の場合) (2)図2は、リセット(システム全体の初期化、再起動)をせずに、プログラム

を再び動作させたときの画面で、出力切り替えRoutineや転送等の作業が省略さ

れていろ。 図3項目番号の入力、分類集計および記録 Z(第S元)に従って、X(横)、Y(縦)のクロス表を出力します。

項目糞曼{dTEnNoJを入力してください。

Y=118 Z=170 0K?[YorCR]Y 計算結果のFileがあります力、?[YorCR】N StartedReadingdataonl7:G7:21 Endedabove,andStartedSummingonl7:07:3g EndedSunwningonl7:B8:BG

繧詳「鋪長IW鐡,三’11餃鰡繍誌芹亨

FileDescrpt=B:19187曰

(3)図3の前半は、リスト4において処理対象とする3つの項目を、項目番号

で順次指定する画面である。

指定後、計算結果Fileが既にあるかどうかを尋ね、集計作業をパスするかどう

-3-

(5)

力>を決定する。 同Fileがない場合(図の場合)は、Subroutine*CALC(リスト6)に移 り、原データFileのはいっているDrive番号を指定させてから、データの読み

出しと集計の作業にはいる。作業開始と終了の時間を表示する(図では読み出し

に18秒、,集計に27秒を要している)。ついで、集計結果を記録する

・RESULTMEMO(リスト9)に移って、RAMDiskへの書き込みをおこな う。ついでFloppyDiskへの記録の必要を尋ね、Y〔es〕のときは、項目番号

の下2桁を機械的に書き連ねたFile名(101870個2a、1)で自動的に書き込み

を行ったのちに、それ以外のキーが押されたときは直ちに、以下説明する表示部

に移行する(本例の続きは図9)。 図4図3下段よりの分岐、集計結果の読みだし 集計結果を読みだします SourceDiskIIb・は?[B~mB B:412B68

1筆蹟-,鑪露

168PD TRPIVSFERTORFIvlDISK TR$=D:RSLTF

'晶篭-1蝋:

168P函 796 796 (4)図4は、前図3の中段で、これから処理しようとする3項目の集計結果が 既にあったため(YまたはCRキーを押して)、リスト10に分岐した場合であ る。集計結果FileのはいっているDrive番号(読み出し元、図ではB)を指定す れば、すでに指定されている項目番号(ここでは1行表示のクロス集計表を見る ため図3とは異なる組み合せの場合を載せていろ)から自動的にFile名(412068)

が再生され、集計結果がMemory上の配列に読み出されろ。もしFloppyDisk

からの読み込みであれば、再使用に備えて図のようにRamDiskにRSLTFとい

う臨時名称で転送されろ。

その後、上図の場合と同様、つぎの表示部に移行する(本例の続きは図6)。

-4-

(6)

曲2a、1このプログラムに使用したN88BASIC(86)では、Fileの名称 として、このような数字の羅列も許されている。使月]が禁じられているのは、コ ロンとCharactercodeOおよび255のみである。〔文献7,42頁参照〕しか し、File名による並び替えsort等に支障が出るのであまり奇抜な名称は避ける べきであろう。 Ⅲプログラム後半の内容と実行結果 1表示、主要部(*DISP;3810-4230行他) プログラム後半の役割は、集計結果の配列をクロス集計表ないし棒グラフの形 で、また原データを一覧表の形で、表示することである。その冒頭部分がこの routineで、どの形式で表示するかを選択する。それに応じて、Ⅲ。2および3 にある3つのSubroutineに分岐し、表示後はここに戻って、項目の組合せが変 わらない限りさまざまな表示を繰り返し見ることができるようにな~っていろ。 〔3850〕表示部では、図6のはじめにⅦ対象項目',とあるように、表示に日 本語を使うが、他方で表示routine内では罫線や棒等の表示にグラフィック。キ ャラクタも使っているため、同モードと日本語モードとをそのつど確実に切り替 える必要がある。この切り替えは、CONSOLE文の第5Parameterで行うが、 ここではこれを0にsetして、日本語モードにしておく。以下の主要routineで も頻繁にこの切り替えが行われろ。由3.1 図5HELPKeyによるFunctionKeyの説明、Function表示窓

FuilctionKeリによる割込み処理の説明 [f、i]処理l1ENuへ戻蜀[f・2]名処理の冒頭へ戻る[f・3]〔RTとPRINTERの切り換易 了解したらどれかキーを押します W同11,雷lE肩i稲RHI1回iW寵i鯛p…とqD-餌。トー日トーヨトー㈲0,-詞b自白 ̄

‐丑

(7)

〔3860-3900〕FunctionKeyの機能と表示を本プログラム用に切り替え ろ〔図5最下行の反転表示部参照〕。それらの簡単な説明文を表示するHELP Keyも切り替える〔図5上半部は同キーを押した画面〕。(3860,3870行、11. 1.1のONKEY、ONHELProutineの説明、及びⅢ。5を参照のこ と) 図6処理の決定、クロス集計表(1行表示)

辮患姿'1繍繍)欄蜑|…-,J,;i入漁,…《,…戸主年階勵)

ChangetheOrderofSubjects?[Y/]N

ど溜欝i生霊ii窯[割1鵬雲團の辮祷Lビガニ曇あ繍与了?c

★クロス集計表★(割り込み処理の説明は肥LPキー) ChangetheOrderofSubjects?[Y/]N 3(168,19G,戸主年階層,6)別X=l(141,08,女・就職観、7):Y=2(128.95-1,収入源1,9

1織鯛鱗織鱗震垂澪二Ⅷ

表示するのは、Z軸の全値【Z】,特定値[P]?P Zの値【〈8]は?3 〔3920〕CMDOFFで、CRTへの表示を指定した(Ⅲ。5参照)のち、対 象項目の番号、名称、欄数等の諸元を図6のように表示させる。 〔3940〕表示対象の3項目の順序(表やグラフの位置にかかわる)を必要な ら変更するroutine*CHGORDR〔4070-4230〕を呼ぶ。 〔3950-4050〕図6の上記に続く部分に見るように、表示部での処理ブロ

ックの選択を記号の入力で行わせろ。Cでクロス集計表、Bで棒グラフ、Rで原

データー覧、Eで終了である。 終了Eを選択すると、。CLOS〔リスト12;7170-7190行〕へ飛んで、 FunctionKeyに割り当てた機能を終了(KEYOFF)させた後、プログラム 全体を単純に終了する。

なお、各ブロック内での分析作業途中でも、FunctionKeyの1を押すと、こ

のroutineに戻って、他ブロックの作業に切り替えられるようになっている。

(8)

。項目11項序変更subroutine 〔4070-4230〕察CHOORDRこの表示部では、3つの対象項目は、そ の指定された'I項序にしたがって、表示の位置が、クロス集計でいえば横軸、縦軸、 垂直軸(集計表の切り口)と、固定されている。これは各軸と項目との関係を自 由とすると、各作業routine中で、処理の繰り返し回数や表示件数の指定などの 点で項目の扱いが複雑になりすぎて混乱し、第3者の解読が困難になるばかりか、 誤謬bugが入り込みやすくなるからである。 しかしこれでは位置を入れ換えた表やグラフを見ることができない。そこで自 由に繰り返し変更できるようにするため、2つのデータ配列を設けることにした。 まず前編で作成された初めの(したがって元配列と以後呼ぶことにする)データ 配列C(x,Y,Z)がすでにある。その項目11頂序〔X、Y、Z〕を任意に入れ 替えて新順序〔N1,N2,N3〕を定め、これにしたがって新たな作業用配列 ,(X,Y,Z)を設定し、これに配列Cからデータを組み替えながら転送する。 表示はこの作業用配列Dを対象に行うことにするのである〔4120-4220〕。つ まり表示は、配列Dを対象に軸を固定して行われるが、配列Dが元配列Cから自 由に組み替えて再編成されるようになっているために、極めて柔軟な表示が可能 になったのである。 だが、この多機能化のために、単一の配列を論理的にだけ組み替える場合より も容易とはいえ、多少の構成の複雑化や見通しの低下は避けられなかった。㈱3.2 ㈱3.1MS-DOS上のBASICでは、漢字codeにSHIFTJIScodeを 使い、モード切り替えにESCK等の特別のcode列(㈱1.4参照)を用いないた め、16進で80番以降のキャラクタcodeは、漢字系とグラフィック系が重なっ て同時に使うことができない。このため使用したN88-BASICでは、CONSOLE 文に第5Parameterを設け、他の系統のキャラクタを使うたびに、この文を書い て切り替えるという、面倒な手続きが必要になったのである。 曲3.2まず配列の表現が2重化して複雑になった。またおのおののDimmension も変更する必要が能じ、4140行で、ERAZEDで元の作業用配列Dを消去して から、DIM文で新たな11項序とそのもとでの回答肢数に応じた次元を指定して再 定義するなど、若干処理が複雑化した。 7

(9)

リスト11 3810,...**・******。。*。。*****・゛・*・**な*・*****゛*************** 3815,*

集計結果および原データの表示*

3820,****************************・*・********・**********・**

3825,

3830’二二=====二二二二二二=表示、主要部=ニニニニーニニ==ニーニーー

3840*DISP

3850CONSOLEO,24,1,1,0:KEY7,',CONSOLE,’’’0,,+CHR$(13)

pp91

3860DATAMENU,sameRt,chg・PR,,,,…

3870REsToRE3860:FOR’二1TolO:READo$:KEYI,o$:NExT

38800NKEYGOSUB*F1KEY,*F2KEY,*F3KEY

38900NHELPGOSUB*HELP・D 3900KEYON:HELPOMPRINT:PRINT

39100BJ.H$=,'対象項目(N、,略号,名称,欄数)'’

3920CMDOFF:PRINTOBJ.H$:PRMOB$(1);08$(2);08$(3)

3930ⅣBR$二,,R,,THENCLOSE#1

3940GOSUB*CHG・ORDR

3950PRINT:PRINT,'どの処理をしますか?”

,,割I)込み処理の説明は、HELPキーにあl')ます’’

3960PRINT,,〔C〕クロス集計表,';

3970PRINT,,〔B〕棒グラフ,,;

3980PRmT,,〔R〕原データ一覧',;

3990PRINT,,〔E〕終了,,;

4000INPUTBR$:IFBR$=',,,THENBR$=BR・MEM$

40101FBR$="C,,THENGOSUB*CROS

4020ⅣBR$二''8,,THENCDSUB・MRG

4030FBR$=,,R”THENCDSUB*D・DUNP

4040IFBR$=,,E,,THENmTO・CLOS

4050BR・MEN$=BR$:GOTO3950

4060,

(10)

4070*CHGoORDR

40801NPUT''ChangetheOrderofSubjects?〔Y/〕,',C、ORD$

4090ⅣINSTR(",,+,'Yy",CoORD$)THENELSERETURlI

4100PRmlT''0riginalOrder〔X(ヨコ),Y<タテ),Z(ウエ)〕:,P

4110PRIllTOB$(1);OB$(2);OB$(3)

4120PRINT''1NPUTNewOrder〔ウエノx,y,zヲ1,2,3トシテ〕,';

4125INPUT,,,,,N1,N2,N3

41301NPUT''0K〔YorCR〕,,;A$

4135ⅣA$=,,,'oRINsm(,'Yy',,A$)THENELsE4120

4140ERASED:DIMD(S(N1)+1,s(N2)+1,s(M)+1)

4150XS毛(1):YS二s(2):ZS=S(3)

4160FORZ=OTOZS+1:E(3)=Z

4170FDRY=OTOYS+1:E(2)=Y

4180FORX=OTOXS+1:E(1)=X

4190D(E(N1),E(N2),E(N3))=C(M,Z)

4200NEXT,X 4210NEXT,Y 4220NEXT,Z 4230RETURN リスト12

7170,=ニーーニニ=====二二二二=Ending

7180率CLOS:KEYOFF,KI1L”C:FII1,,

7190剛, 一一 一一 一一 一一 一一 一 一 一一 一一 一一 一一 一一 一一 一一 一一 一一 一 一一 一 一 一 一 一一 2クロス集計表(・CROS;4250-4340行) クロス集計結果を、3番目の項目Zの回答肢番号順に、2次元の表形式(横軸:

第1項目X、縦軸:第2項目Y)で、百分率も加えて、順次自動的に表示して行

くroutineのメイン部分である。 作業名を表示した〔図6,3段目〕のち、項目順序の変更routineをへて -9-

(11)

〔4300行、図、上記次行〕、Z、X、Y各軸の要素を表示する〔同、次行〕。

さらに、集計実数と百分率を同一行で表示するか(*SNG)、2行に分けるか

(*DBL)を自動的に決定し、分岐する〔4330行〕。 これは、Printerが10インチ幅と狭く、英数字をElitemodeで詰めて印字 しても、実数と百分率を1行で表示できるのは、無答。その他。合計の3つの欄 が加わるので横軸Xにおかれた項目の回答肢数が7以下のときに限定され、これを

越えると%を別行で表示するほかなくなるためである。しかも、それぞれ書式が

異なるので、・SNGと*DBLの2つの独立したroutineをもうけ、自動的に切

り替えるようにしていろ。 リスト13 4250’二二===============二二==二==================ニーーニーー

4255,=二二===ニニニニCROSSTABLE

4260*CROS

4270CONSOloE,…O

4280PRINT:PRmTSPC<10),,★クロス集計表★”;

4290PRINT,,(割り込み処理の説明は、HELPキー)'’

4300GOSUB*CHqORDR

4310PRINTOB$<M)’'別X二''0B$(N1)”:Y=''0B$(N2):PRINT

4320,-----横肢数による表示変更8>SingleelseDouble

43301FXS<8THENGOSUB*SNGELSEGOSUB*DBL

4340RETURN 2.11行表示(*SNG;4350-4870,6060-6530行他) 横軸Xにおかれた項目の設定回答肢数(XS-1)が7以下、無答。その他回 答・合計の欄を加えて10以下のとき、縦軸Yの回答肢の番号に応じた実数と百 分率を1行に順次表示するroutineで、具体的には次のようなプロセスをへる。 〔図6~8、表1~2参照〕 〔4380-4390〕Subroutine*SELBAS〔リスト15〕㈱33を呼び -10-

(12)

出し、図6の4段目を表示して、百分率の母数を選択あるいは入力.させる(母数

にする変数BASEのPointerとなる変数BAを決定)。次に*Z、SELCT〔同〕

曲3.4を呼び出し、図6の5段目のように、第3項目Zのどの回答肢に対応する

集計表を表示するのかを指示させる。特定回答肢に対応する集計表を表示するの かを指示させる。特定回答肢の場合(ZSEL$=蝋P,,,ZDに回答肢番号)と、全 肢を連続して表示する場合(ZSEL$=碗Z'')とで処理が若干異なる。 〔4400〕PRN=1でPrinterへの出力が指示されていれば、PRINT命令 をLPRINT命令に切り替える役割を与えられたCMDの機能〔リスト22参照〕 をONにし、さらに*ELITE〔リスト17,7150行〕により、Elite字体を指 定して、印字数を増加させる措置をとる。

〔4410-4440〕上記の表示対象選択で、全部を選んだ場合は、ここで項目

Zの全回答肢に対するクロス集計表を。SNG.Dを呼び出しながら順次表示する。

〔4450〕同様に特定回答肢を指定したときは、その番号ZDのクロス集計表

を表示する。図6の下段では回答肢番号3を指定していろ。図7がその実行画面 の一部である。

図71行表示クロス集計表Display表示

。〔rossTabl唇ヨコニ糞・就職観ダテーlliJlM;il 2o:411「,.a、2 ,.1.Eu「11 under戸王年階層=3 345 01へ「β● 1(0.3)- 24(6.1)3ゴ(3.4)37(9.4)105(2鷹.6) と(0.5)-3(0.9) !(0.3)3(0.8)113(と.5) 、a.’- 1(0.3 111(0.3 9.3〉323(81.3 gl- IUE》(とe、El) 3(0.2) 12(3.0) 16(4.1) I(0.3) 1(0.3) 9(2.3 。0 (0.3j3lEI5(IDD)

蝋辮掌''::'臘繍犀雷:叩

, X軸項の解答肢数が多いためその他と合計欄が折り返して表示されて、見にく -11-

(13)

いものとなってしまったが、Printerに打ち出して検討するのが主であるため、 Display上では見当をつける程度の目的で使うので、差し支えないであろう。 表1が、Printerに打ち出した例である。見やすい表示になっていろ。 表11行表示クロス集計表Printer表示 *CrossTableヨコ=女・就職観タテ=収入源1under戸主年階圏 ’ロ.a.23456 2 a 20:4 sum D0aO 1 2 3 4 5 6 7 8 a1. 8U■ 1(0.3)26l6.5)30(7.5 1(0.3 1(0.31- 2(05)- 1(0.311(0.3 M0.3)- 1(0.3131(7.8)32(8.0 33(8.3 2(0.5 M0.3 1(0.3 0212;.6 4(1,0 2(0.5 M0.3 2(0.5 -5(3.8 - 362(90,7) 11(2.8) 3(0.8) 4(1.0) 〕(0.8) 611.5) 812.0) 2(0.5) 399(100) ”(38.8 5(1,3 M0.3 1{0.3 1(0.3 4(1.0 2(0,5 1(0.3 110.3 6 1(0.3- -38(9.5 1(27.8 - 70(42.6 - 16(4.0 項目入れ換え例 図8 ? こ'X)処理のネ鵬に戻ります〔'}ミ?[Y□「[R] ★クロス集計表★(割(〕iムみMIJ里iZI説明は}|ELPキー) Cl1anqPthEP〔lrdBrofl3I」biFiごls?[Y]Y 〔I「iqinal〔lri」今「[》<(ヨコ),,,,(,テルこ(ゥl)]8 1(i41,99,女・就職観,7)2('2121.1215-1,IMJliiiI.`〕)〕(l〔,3,Hq戸主年階層,〔,) INPUTNEPIAl〔l「(l色r[ウェノ、,u,こヲ1,2,3にIテ]3.1.2 〔1K[YOrl:.R]?Y 2(120,95-1,1M、源I.E})別;《=3(IIE,E,H〔】、戸王年階層,6):Y=l('4い:IML7.jiilllill観.7

i鍵世祷i澱奮|鑿學騨凄鯉:lご川

壽聯椚霊BIB圭値に肌特定値[FwP

なお、前述のように、項目11項序変更subroutineを使うと、切り口を替えて

データを検討しなおすことができる。図8は、FunctionKeyの2を押して、こ

の処理の冒頭に戻り、、OChangetheOrderofSubjects?”の問に'9Y”と答

えて変更を行った例である。ここでは、Z軸として表面に出ていなかった168項 が横軸に、横軸だった141項が縦軸に変更されている。表2は、そのPrintout

であるが、前図と全く異なった角度からの検討を容易にしていることが伺えよう。

〔4460-4470〕*OUTCHG〔リスト16,7530-7580行〕を呼んで -12-

(14)

必要に応じてFunctionKey3の切り替えroutineを呼び出して切り替えたの ちに、このブロックの冒頭に戻る。この結果、無限ループが形成されるので、こ のブロックからの脱出は、fo1キーを押す以外にない。 表2図8による1行表示クロス集計表Printer表示 *CrossTableヨコー戸主年階圏タテ=女・就職観under 41:681、,a. ’234 収入源1=sum 5aL gum 4(0.3) 88(7.4) 98(8.2) 120(10.1) 364(30.5) 447(37.5) 69(5.8) 2(0,2) 192(100) l(0.1)l(0.1)2(0,2 9(0.8)31(2.6)29(2.4 14(1.2)〕2(2.7)38(3,2 19(1.6)38(3.2)43(3.6 43(3.6)111(93)131(11.0 81(6.8)170(14.3)130(10.9 4(0.3)16(1.3)21(1.8 1(0.1 71(143)399(]3.5)305(33.1 OG■■且nJuへ&■シn尺“岳PhD〃〃生、u ■(』 C hu 7(0,6) 7(0,6) 810.7) 26(2.2) 23(19) 16(13) I(0.11 88(7.4) 12(1.0) 7(0,6) 12(1.0) 53(4,4) 4313.6) 12(10) 39(117) aL Su目 車SNGLD 〔4490 4630〕 Sub routine 4760行〕を呼んで表題〔4680 まじめに、Subr *CRSHD〔4650 行〕と横軸の見出し〔4700-4730行〕を見やすく表示し㈱3.5、区画線を引 く〔4750行〕㈱3.6゜ ついで、Y軸の値を順次増加させ行替えしながら〔4510-4610行〕、以下 の操作を繰り返して目的の表を描きだす。まず傘LNO〔4780-4810行〕を呼 んで、縦軸の見出しとして行番号あるいはsum等の記号を書き縦罫線をひく。 次にY軸の値に対応したX軸の各数値Wと、()に入れた百分率を続けて表示 していき、X軸合計欄を表示後改行する〔4530-4590行〕・数値Wが0の欄 は多くあり表が見にくくなるので、区別しやすいように彩欄と一括して↑'一”の みを表示していろ〔4570行〕・百分率は、前記察SEL・BASで選定した形基準 BAに基づき、*POBAS〔リスト15,6310-6370行〕で基準数BASE を復元したのち、*PC・DSP〔同、6390-6450行〕で計算し、整形表示す る。燭3.7 ㈱33準SELBAS〔リスト15,6070-6220行〕では、百分率%の基準 を簡単に指定できるように、総計、合計、横計、縦計、その他、さらに耐前回に 同じ,,(CRキーのみを押す。変数FBASEに記憶させておく)のメニューの中か -13-

(15)

ら番号で選択するようにしていろ。その他の場合、*SEL、INP〔6230- 6290行〕を呼んで手入力する(変数SL.Xほかとして)。これら変数は、 pointerの役割を果たし、後に。PC・BASで現実の変数BASEに変換される。 閏3.4.Z,SELCT〔リスト15,6470-6530行〕は、表示の軸になっ ているz軸の項目について、全部を表示するのか、特定の値の断面を表示するの かを選択させ、特定値の場合はその値ZDをinputさせるroutineである。 曲35各行列の内容を指示する見出し部分は、番号のみでは解りにくいので、

無答を表す数0番の回答肢は。n.a.”と表示させ、規定外のその他回答の欄は

wal.,,、合計欄(XS+1番)は伽sum,,と表示するようにしていろ〔*ANS・ IDX、4830-4870行、その他は番号が表示される〕。これは、縦軸の見出し についても同様に行われろ。 樹3.6本リストは、漢字平仮名が使われているため、日本語・キャラクタ・ モードで印字されているが、罫線には使いやすさからいわゆるANKモードのグ ラフィック・キャラクタを使っている。本章冒頭で指摘したように、両モードは 同時使用できず、罫線用キャラクタを嘘,,に入れたプログラムにすると、それ自 体は有効な処理であるが、日本語モードでリストをとるとその部分が意味不明の 漢字や記号に化けてしまい、リストとしての機能を損なってしまうので、4750 行ではキャラクタcodeで入力していろ。149が横線部分を、143が縦線とのク ロス部分を意味する(文献8,19-140ほか参照)。 ㈱3.7*PC・DSPで、百分率影は、表示可能桁数が少ないことと、分析 上の必要を勘案し小数点以下1位まで小数点を含め4桁で表示すること にした〔6450行〕・表示範囲が狭いために、100を越える場合の対策が必要 となるが、ここでは合計欄にしばしば出現する100%の表示を、単に鰊100,,と 表して他数値と区別しやすくし〔6410行〕、それ以上は小数点以上4桁の% で表し〔6440行〕、範囲をはみ出す100倍以上は%で示す意味が薄くもなるの

で、、**,,と目だたせて別扱いとした〔6420行〕。

リスト14 4350,=== 4360*SNG

DispinSingleLine(Elite,Conds)

-14-

(16)

4370

CONSOLE ,.,,0

4380

GOSUB *SEL.BAS

4390 GOSUB .Z.SELCT

4400

IF PRT THEN CMD ON:

GOSUB *ELITE

•printer=elite

4410

IF ZSEL$="Z" THEN ELSE

4450

4420

FOR

Z=O TO S(N3)+1

' All

of

Z

4430

GOSUB .SNG.D

4440

NEXT: 6010

4460

4450

Z=ZD: GOSUB

.SNGaD

'

Random Z

4460

GOSUB ••OUT.CHG

4470 0010

-SNG

4480

,---4490

.SNG.D

4500

GOSUB *CRS.HD

4510 FOR Y=O TO S(N2)+1

4520

GOSUB

*LNQ

4530

FOR X=O TO

S(Nl)+l

4540

W=D(X,Y,Z)

4550

GOSUB .PC.BAS

4560

IF W=O THEN ELSE 4580

4570

PRINT

"

: OOTO

4590

4580

PRINT USING "####(";W: :GOSUB .PC.DSP: PRINT ")";

4590

NEXT

'X

4600

PRINT

4610

NEXT

'V

4620

PRINT

4630

RETURN

4640 '---

Head

l.ine

4650

.CRS.HD

4660

CONSOLE ",,0

-

(17)

15-4670

A=Z:

VS=S(N3):

GOSUB -ANS.IDX

.

4680

PRINT

"-Cross Table

3J="

;W2$(Nl);"

tf=";W2$(N2);

"

under ";W2$(N3);"=";ANX$:PRINT

4690 CONSOLE ",,1 : VS=S(Nl)

4695

IF PRT THEN PRINT: GOSUB -ELITE

4700

PRINT FNC$(N2)":"fNC$(Nl);CHR$(150);

4710

FOR

A=O

TO S(Nl)+l : GOSUB *ANS.IDX

4720

IF VS(8 THEN PRINT"

"ANX$"

ELSE

PRINT "

"ANX$ ;

4730 NEXT : PRINT

4740

IF VS<8 THEN

XLEN=(S(Nl)+2)*10 ELSE XLEN=(S(Nl)+2)*5

4750

PRINT STRING$(5,CHR$(149»;CHR$(143);

STRING$(XLEN,CHR$(149»

4760

RETURN

4770

'---4780

*LNO : IF PRT THEN GOSUB -ELITE

4790 A=Y: VS=S(N2): GOSUB *ANS.IDX

4800

PRINT "

"ANX$;CHR$(150);

4810

RETURN

4820 '

4830

*ANS.IDX

4840

IF A=O

THEN

ANX$="n.a." :RETURN

4850

IF

A=VS

THEN ANX$="

al."

:RETURN

'others

4860

IF A=VS+1 THEN ANX$="

sum"

:RETURN

4870

ANX$=RIGHT$("

·'+STR$(A)

,4) : RETURN

I)~,..

15

6060

'=======

Sub-sub routine

========

6065 '---

Base for

%---6070 .SEL.BAS :CMD OFF

(18)

-6080

PRINT OB$(NI);OB$(N2);OB$(N3)

6090

PRINT "

%~.~.~1:~m~L·-c

<

t!..~ ~\o

6100

PRINT " Dfj(:"FBASE")

t

fRJ

t.'d:'

t:,

CR~-"

6110

PRINT

tt

(1)

~~

:C(Xsum,Ysum,ZsUDl) ";

6120

PRINT"

(2)

~it

:C(Xsum,'lsum,Z)

"

6130

PRINT"

(3)

Mit

:C(XsuIB,Y,2)

"

6140

PRINT"

(4).it

:C(X,YsUII,Z)

6150

PRINT"

(9)

~~flf!"

6160 INPUT BA$

6170

IF BA$:"" THEN BA=FBASE:RETURN

6180

BA=INSTR("1~349",BA$)

6190

IF BA=O THEN

6160

6200

IF

BA=5 THEN GOSUB *SEL.INP

6210

FBASE=BA

6220

RETURN

6230

'---6240

*SEL.INP

6250

INPUT"

~.tT~I1~

X,Y,Z

-r:'AtJ

",SL.X,SL.Y,SL.Z

6260

IF

D(SL.X,SL.

V

,SL.Z)=O

THEN

PRINT

.to

DATA! ":GOTO

6250

6270

INPUT "OK

";A$

6280

IF

A$=""

OR

INSTR("Yy"

,A$) THEN ELSE 6250

6290

RETURN

6300

,---6310

*PC.BAS

6320

IF BA=] THEN

BASE=D(S(Nl)+1,S(NZ)+1,S(N3)+1):

RETURN·

6330 IF BA=2 THEN BASE=D(S(Nl)+l,S(NZ)+l,Z): RETURN

6340

IF

BA=3

THh~

BASE=D(S(Nl)+l,Y

.Z):

RETURN

6350

IF BA=4 THEN BASE=D(X

,S(N2)+I,Z): RETURN

6360 IF BA=5 THEN BASE=D(SL.X,SL.Y,SL.Z)

6370

RETURN

(19)

17-6380

'---6390

*PC.DSP

6410

IF W=BASE THEN PRINT" 100"; :RETURN

6420

IF W}100*BASE THEN PRINT" ** "; :RETURN

6430

IF W>BASE THEN ELSE

6450

6440

PRINT USING "####";W*100/BASE; :RETURN

6450

PR1NT

USING"##.#";W*100/BASE;

:RETURN

(..4()O .. --- ---

Select.ion for

Z

---6470

*Z.SELCT : CMu OFF

f.480

PHINT

"1(iJ~'~-

{)

\l.>ti,

Z

,mO)

~lIftLZJ

~~JEfllr.p.l C)".

h!l'-JO

IN1·tLJ

I

" I f.1.~EL$:

It·

ZSEt~$="Z"

THEN RETURN

6500

JF /.SEL$="P" THEN ELSE

6490

6,10

PRINT

If

ZV>1I«C

<"S(Ni)+2"']tt?

tt;:

INPUT

t i f t

.ZD

(~5~O

iF ZD> S(N) +

1

THEN

6510

(Jij.)(J KETUH~

I)

~

"

16

7530 '---

Changing of

Output

devices

---7540

*

.OUT•

ClUJ

7550 CMD OFF: UlNSOLE ".,0

7560

PRINT

"llijJ9G~tJJW!i.;! i-j;~?

(Y/)

tt;

7570

IF INSTR ( "Yy" ,INPUT$

(1

»

THEN GOSUB *F3KEY

7580

PRINT: RETURN

I) ~ "

17

7140

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

Printer chr Size

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

7150

*ELITH :

LPRINT

CHR$(27);"E":CHR$(27);CHR$(1);:RETURN

7160

*CONDS : LPRINT CHR$(27);

"Q":: RETURN

(20)

-2.22行表示(*DBL;4740-5150行)

X軸の有効回答肢数が8以上のときに、X軸の各数値を、1行目に実数、2行

目に百分率と、2行に分けて表示するルーチンである。〔図9~10、表3参照〕。

〔4900-5010〕*DBLここのメインルーチンで、Z軸項の表示対象選択 をはじめ2゜1と同じであるが、表示routineが*DBL.Dとなっている点だけ が異なる。 図9処理の決定、クロス集計表(2行表示)

ポ1需具畿蠕'重iiW蝋)生計費に)3(I7aM域s分類,,)

ChangetheOrderofSubjects?[Y/]

ど溜雪;;鵠潔[割鰐蝶の辮原季LE妻二塁あ艦謹了?c

★クロス集計表★(割り込み処理の説明は、HELPキー) ChangetheOrderofSubjects?[Y/】

3(170,A8,地域8分類,9)別x=l(12,GR,学歴,11):Y=2(118,03,生計費,12)

艤繍辮繍:騨騨…

?l

誘繍|まi,霊由牙全値[z山特定値[川P

図9は、図3に続くもので、Display上では1行表示の図6と同じである。

図102行表示クロス集計表(Display表示)

・CrossTableヨコー学歴タテ=生計費under地域8分類=3 -19-

(21)

〔5030-5300”DBL.,2.1での*SNG.Dと同様な構成であるが、

縦軸項Yの各解答肢ごとに、X軸項の各解答肢の数値を表示するのに、まず

実数値だけを1行に打ってしまい〔5080-5130行〕、次の行に百分率のみを表

示する〔5150-5260行〕ことを繰り返す構成になっていろ。図10がDisplay

に表示した例である。

ここでは、元来有効回答肢数が多いものを2行表示にしたため、表示上の工夫

が必要となった。Printerに打ち出して検討するのが主であるため、これを優先

し、ElitemodeとCondensemodeとをうまく組み合せて、実数欄と幅をそろ

えながら字体に変化を持たせた。曲3.8この結果、表3に見るように実数、百分

率の区別が明瞭で、見やすい表になった。他方、Displyへの出力は、Character

の大きさを選べず表示の区別がつきにくいこともあり曲3.9,1行表示のさいと

同様の見にくさが生じ得るが、同様の理由で差し支えないであろう(図10でわか

るように、有効回答肢が11までは折り返さずに表示されろ)。

表32行表示クロス集計表Printey表示 *Cro83TabIeヨコ=学歴タテ=生計費under地域8分類=sum l8:101,a.12345678910a1.8u田 ロ.a.I12312- 1(2.6)(0.])(0.8)(2.2)(1.7) 1112]6811- 1(31.6)(6」)(2.2)(22)(0.8) 21710538274 1(10.4)(17,7)(10.6)(4.])(5.8)(12.1) 〕11215885101111 1(31.6)(26,7)(23.7)(21.7)(9.2)(33.3) 4141;099103011 1(10.5)(25.3)(27.7)(21.7)(25.0)(33.3) 51274649271 1(5.3)(12.5)(17.9)(19.6)(22.5)(]0) 61-4130519〕 (6.9)(8.4)(10.9)(15.0)(9.1) 71-1593122 (2.5)(2.5)(6.5)(10.0)(6.1) 81-51031 (0.0)(2.8)(2.2)(2.5)(]0) 91-4712- (0.7)(2.0)(2.2)(1.7) 101-1325- (0.2)(0.8)(4.])(4.2) 111-1211- (0.2)(0.6)(2.2)(0,8) a1.1- 9 (0.0) 58 (4.9) 164 (118) 289 (24.2) 306 (25.7) 177 (14.0) 98 (8.2) 41 (1.4) 20 (1.7) 14 (1.2) 11 (0.9) 5 (0.4) (’00) 2 (66.7) (]].])(100) 38592358 00)(100)(100) 00)(100)46120 33 00) 00)] Su■ 1 00) 1 00) 1192 (100) 20

(22)

㈱3.8Printerへの出力では、実数にElitemode(linchあたり12字) で5字分、百分率には同じ長さにするため同modeで1字分の空白とCondense mode(linchあたり18字)で()を入れて6字分を加えたものとしている 〔*DBL・PRN、5230-5250行〕。この空白と()と字サイズの相違に よって、実数と百分率とが混同される可能性が低くなっている。… 油a9Display上でも、200からDOO番台のcodeに半角文字が指定され ているので、使えないことはないが、Printer出力用とcodeが異なり2重の指 定が必要になるなど不便でもあるので、全角文字で表示した。実数には5字分、 百分率は小数点1位までに影記号をつけて同じく5字分としている〔5210行〕。 リスト18

4890’二===Twolines:E1ite####/Condense(##.#)

4900*DBL

4910CONSOLE…,O

49ZOGOSUB*SELoBAS 49〕OGOSUB*ZoSELCT 4940IFPRTTIlENCHDON:GOSUB*ELITE

49501FZSEL$=,,Z”THEN497()

4960Z=ZD:GOSUB*DBL.D:GOTO5000,RamdomZ 4970FORZ二OTOS〈N3)+1,A11ofZ 4980GOSUB*DBLoD 4990NEXT 5000GOSUB…OUT・CHG 5010GOTO*DBL 5020,----5030*DBLD 5040GOSUB*CRS・HD

5050FORY二OTOS(M)+1

5060GOSUB*LJlIO 5070FURX=()TDS(N1)+1 -21

(23)

5080v=D(X,Y,Z〉

5090IFPRTTHENGOSUB*ELITEprn=elite

5100IFW=OTHENPRINT’’-,,;:GOTO5120

5110PRINTUSmIiG,'####,';111;

5120NEXT,X 5BOPRINT

5140’----for%

5150PRINT,,,,;CHR$(150>;

5160FDRX=OTDS(M)+1

5170w=、(x,Y,z)

5180GOSUB*PC・BAS 5190IFPRTTHEN*DBL・PRN 5200IFW=OTHENPRmlT,,

”;:Gom5260

5210GOSUB・PC・DSP:PRINT,,%,,;:GOTO5260

5220*DBLPRN:

5230LPRINTCHR$(27);,,E,,;',,';CHR$(27);''01';,condense

5240IFW=OTHENPRINT,,

”;:GOTO5260

5250PRnlT,'(,,;:GOSUB・PC・DSP:PRINT,,),';

5260NEXT,X 5270PRINT 5280NEXT,Y 5290PRINT 5300RETURN 3棒グラフ表示(*BARG;5320-5860行他)

対象3項目のうち、任意の項目の各回答肢の数値分布を、

呵家3項曰のつら、仕恵の唄曰の各回答肢の数値分布を、任意に指定した母数

に対する百分率の形で、棒グラフで表示する。そのさい他の2項目(軸)は、合

計値(単純集計の結果)のみならず、回答肢番号を自由に選んで、多角的に繰り

返し表示できるようにする。Printerへの切り替えは前と同様である。

-22-

(24)

〔5320-5410〕屯BARG 棒グラフ表示routineのメイン部であるが、ここでは平面上の棒グラフ(*BAR 2)のみが組み込まれているため、なんの操作も行わずに次につないでいろ。し かし、現在、二次元のクロス集計表をそのまま立体化する立体棒グラフ表示 routine(*BAR3)を開発中である。のちほど、これを直接組み込むか、別の プログラムとして作成しておき必要な時にCHAINMERGE文で組み込むかし て機能する予定であるが、その時にはこれら2種の棒グラフ表示を選択する routineがここにはいることになる。 〔5420-5590〕*BAR2(平面棒グラフ表示) 表示したい軸(項目)を決めるroutine*BAR・OBJ〔5610-5690〕油3.10 から始まって、百分率の基準を定める既出〔リスト15〕の*SEL、BASおよび

*PC、BASをへて、棒の長さを定める*SCALE〔5800-5860行、ANK文

字80字という画面横サイズから、60字分を1行のfullscaleとし、既定値 は1%を1字分としている〕を呼んで、棒を表示するroutine*DPS・BARを 呼びながら、対象項目の全回答肢の百分率を連続して表示する。 〔5870-6050〕*DSR、BAR〔リスト20〕 指定された回答肢の実数の母数BASEに対する百分比を横棒の長さで表示す るが、使用パソコンに固有のグラフィック・キャラクタのうち、各字桝の左端か らndot目まで縦全幅で塗りつぶすものが8種類あるので(16進character codeで87から8Eまで)、これを利用して、連続した棒を描いていろ。 まず、見出し部分と数値、百分率と区画線を描いた〔5910-5940行〕後、 比率に応じて字桝全体を途りつぶすcodeを重ねて出力し〔6020行〕、端数部 分は、最も近い8分位数を算定し〔5900行〕㈱3.11これに対応するcodeの部 分塗りつぶし模様を出力する〔6030行〕。これにより、図11~12に見るよ うに疋確な横棒を表示できるのである。 このグラフィック・キャラクタを用いた手法は、棒の幅を選べないほかは、 dot単位で細かく表示するいわゆるグラフィック表示と全く同じ精度を持ち、グ ラフィック表示では複雑になる文'j三等のキャラクタ表示との連動(クロス集計表 等との混用や画面の同時移動、消去等)の配慮が無用であることから、実用性の 高い方法といえよう。 -23-

(25)

平面棒グラフDisplay表示 図11 =平面棒グラフ表示=

蝋議瀞i黙二二誉lW。…戸主年階剛

鑪繍i謹鋳震耆職繍騨雷:Ⅷ

1(14

霜ii}i

[2]= [3】= 1(14 %の 【l 【3 ?2 I1IPUT トb・M n・a.: 1: 2: 3: 4: 5: 6: aL sum 出力 =平面樺グラフ表示=

衾艶綴目鱗iMI…一山収入源''9)`('…,戸主年階鳳6)

平面棒グラフPrinter表示 図12 No.141女・就職観 、.a、:l(0.3) l:24(6.1) 2:”(8.4) 3:37(9.4) 4:105(26.6) 5:106(26.8) 6:16(4.1) aI.:1(0.3) Bum:323(81.8) No.168戸主年贈囲 ロ.a.:-(-) 1:76(6.4) 2:155(13.0) 3:106(8.9) 4:12(1.0) 5:2(0.2) a1.8-(-) 8m:351(29.4) No.168 〕

一コ

/No.141=  ̄

ヨ■■■■■■■■■■

5 No.120=

二コ一一

24

(26)

また、図12の上のグラフは、表示項目を替え、こオlを規定する他項目の回答 肢を変更した例である。さらに、百分率の母数を総数に替えたため、棒が短くな るので、上述の*SCALEroutineで2を指定して、棒を2倍に拡大していろ。 このように、この棒グラフ表示は、簡単な指示で多角的な分析ができるようにな っている。 糊3.10表示したい軸は、inputで簡単に定められるが、他の軸については、 合計欄をsと入力させると、こオlを解析してそれらの値を定めるのは若干面倒に なる。このため、さらに下位のSubroutine*SEL、BOB〔5700-5790行〕を 設け、処理に当らせている。 曲3.115900行の前半で、BOを算出するのに、、625を加えて切捨て型の 整数化関数INTで処理しているのは、1/8に対するいわば4捨5入を行うた めであり、次にB2をSCALE倍した百分比とBOの差を8倍して今度は4捨5入 型の関数CINTで出しているのは、最後の桝の幅を定めるためである。 リスト19 5310,=================================ニーニニーーニ====

5315’二========二二=BarGraph===二二二二二===========

5320*BARG

5330’----Graphtypeswitchroutine*BARO、and

5340,EnterancetoB-Ddisproutine*MRj,

5410,---bebere.(91inesormoreareavailablehere.)

5420*BAR2 5430SCALE.M=1:K=O 5440CONSOLE,,,,O:PRINT

5450PRINTSPC(26);,'=平面棒グラフ表示='':PRINT

5460GOSUB*BAR・OBJ 5470GOSUB*SEL・BAS 5480GOSUB*PCBAS 5490GOSUB*SCAlE -25-

(27)

~SO()

114 PRT THEN CMD ON

5510

PRINT BHD1$;" //"; BHD2$: IF PRN THEN PRINT

'Heading

5520

~'OR

DW=O

TO OS

5530

IF AXS=l THEN W=D(DW. Y. Z)

5540

IF AXS=2 THEN

W=I)( X~DW.

Z)

5550

IF

AXS=3

THEN W=D( X, Y.DW)

S5bO

OOSlJB

*DSP.BAR

5570

NEXT

5580 GOSUB *·OUT.CHG

5590

CMD OFF:GOTO

5440

5600 •

:::::'"~'.=:':==

5610

*BAR .OBJ

'

for

Heading

5620

PRINT OR$(Nl);OB$(N2);OB$(N3)

5f)"iO INPUT ...

~j~

tJ'

t--:

~

'JQ

§

'j:

C?

C

1

.2,

3J ",

AXS

S640

I~

AXS<l

OR AXSJ4 THEN 5630

5650

PRINT

"$7)41

~

(1)«IJNo

-'-1?

(f1~IJ'j:

s

.~~wnj: 0)u

5660

K

=

1:

L=N

1:

(DSUB

*SEL.

BOA : X=A

5670

K=2:L=N2: GOSUB *SEL.BOA

:¥=A

56MO

K=··~:L=N3:

(X)SlJB

*SEI,.BOB

:Z=A

5690

RETL!HN

S/UO *SEL.BOB

5710

IFAXS~K 'n~EN

ELSE

5730

'J720 nS=S(L)+ 1: A=O:

BHD]$="No.

"+~~NN$(L)+"

"+W2$(L):

mTO fJ790

5730

PRINT

CHR$(87+K);

u=";:

INPUT

BD$: VS=S(L)

5740

1f AD$="S" THEN

A=S(L)

+

1: OOTO 5770

5750 IF BO$="O" THEN A=O

: 0010 5770

CJ7bO

A=VAL(BD$): IF A=O

OR

A>S(L)+j

THEN

GOTO

5730

5770 GOSUB *ANS.IDX

S7tiO

BHD2$=BHD2$+"

No."+FNN$(L)+"="+ANX$

(28)

-26-5790 RBTURN

5800 '--- Scale of %-Bar

5810

*SCALE

5820

PRINT "INPUT Devider

(n)

for % Scale a line ";

5830

INPUT "(full scale=60%

In )

(ditto=CR)

",GA$

5840

IF GA$="" THEN SCALE=SCALE.M ELSE SCALE=VAL(GA$)

5850 IF SCALE=O THEN *SCALE

5860

SCALE.M=SCALE: RETURN

IJ~1'20

5870

'======= disp Bar ========

5880

*OSP.BAR : CONSOLE

",,1 .

5890

W.PC!=W*100/BASE

5900

BO=INT(W.PC!*SCALE+.0625): B2=CINT«W.PC!*SCALE-BO)*8)

5<)10

A=DW:

VS=DS-l:

GOSUB

*ANS.IDX: PRINT ANX$;":";

5920

IF W=O THEN PRINT"

-

( -) ";:

OOTO

5940

5930

PRINT USING

"#### ("

:W:: GOSUB

*PC.DSP:

PRINT ")

"~

5940

PRINT

CHR$(224);

5950 FULLB=BO

¥

60: RESB=BO MOD 60

5960

IF FULLB THEN ELSE

6020

5970

FOR

1=1 TO

FULLB

5980

PRINT STRING$(60,135)

5990

IF

J=Fm~LB

AND RESB=O AND B2=0

THRN

6010

6000

PRINT

I t " :

CHR$ (224); '2nd

1

ine

6010

NEXT

6020

IF RESB THEN PRINT STRING$(RESB,135);

6030

IF

82

THEN PRINT CHR$(135+B2);

6040

PRINT: CONSOLE

",,0

6050 RETURN

(29)

-Z1-4原データ表示(*D・DUMP;6535-7110行)

アンケート回答のFile、FAMFLDATにはいっている原データを、一件

ごとに、なんとかチェックできる程度に加工して、一覧表示する。連続表示も可 能とする。異常なデータの内容を確認して(誤りが集中していることもある)訂 正に役立てたり、全体の傾向をざっと見渡すのにも使用される。Printerへの切 り替えは前と同様である〔図13参照〕。 〔6580-6600〕初めてこのroutineに入ると、原データのFileのあるDrive 番号を尋ね、FileをOPENして、データ列を項目に割り付けろ〔6590-6640 行〕。2回目以降は、変数DRV$にその番号が入っているためここはパスされ ろ〔6580行〕。 〔6660-6780〕表示するRecord番号を尋ね、次の*D・LISTを呼んで 家族人数に応じて5ないし10行でその内容を表示する。操作を簡単にするため 次の番号を見るときは、単にCRキーを、直前の番号を見るときはBS(Back Space)キーを押せばよいようにしてある。wE,,を入力すればこのダンプ routineを終了し、表示部メニュー*DISP〔リスト11〕に戻る〔6680-6730 行〕・図13は、500番のデータをDisplayへダンプした図である。表4はその 次の501番の:データをPrinterへ打ち出したものである。 図13原データ・ダンプDisplay表示 ★原データ・ダンプ`★ 表示するRecordNo・は?[次=CR,前=BS,終了=E]SUD 5 、少 118 -一R 80く 一-1 BC --2 13 -- 1116 -一一- 9904 GB|シ |’0, 42へdF NFうぐ *心R》I 22ID 一一f、’ 6514 35200一一 一一一日019 11048}1 ,4一一一5’ ’1000,1 l0B3J gl41K L(埋○昨亜 、、/022 -5001 4Ql0|- ’く--10/ 3400〒、“Y 5l0UllⅢ 0444’2

辿醒稻轌》宰必勵

叩沙旧烟剣且変 一J1⑲uuJ氾先 nsp馴犯姻宅旧力 臥pJq②。Ⅱ昨出 ・22402く一 PllB00l2 l1l’10一ン0 --1一一688 99,日0,15 001008く 一一Q44Q0。 ”ぬ師く、富・く中叱 5**111 1161a1d ・一一一p・Ir o0627一ao N04QQSTC 一一・・・一e C112224R 舵、巴巾印印、前 -28-

(30)

表4原データ・ダンプPrinter表示 RECNo.501[P、0-11-04〕-1054-2-[Cl-00-2oP4-14-1-1-1-1-1[2]_l2-1DI7-O9-1-2-9-3-1 [p2.oz-6】くQ1>1-132-08<Q2>80-2-3<05>4-3-0-0-1 【p2.Q7j①800-002②800-002③800-002④800-002 ⑤800-002⑥800-002⑦800-400⑧800-400 [p2.8-P3】<Q8>6-1く11>2-1<12>3-1-1-250<13>2-2-4く16>60-0-3 [p4-Tall]●0く18>0-0<19>0-0-0<21>0<CK>1-15-4-,2<FD>4-6-4-1〈A8>5 〔6800-7110〕*D・LIST 指定されたRecord番号のデータを読み出し〔6820行〕、まず1行目に、その 番号と、作業用codeや家族数など4項目を書き出す〔6830行〕。

2行目からは、家族の基礎データ(各10項目)が、6850行の書式(各項目の

境界は、おもに髄-,,で示す)にしたがって、1行に2人づつの割で表示されろ

〔6840-6900行〕・家族人数分を表示すれば、この部分の作業を終えて次に移る

ので、行数は変動する。

その後、6920,7020,7070行の各書式にしたがって、質問項目への回答

が順次表示されていく。各書式の諸処に、鰊<Q5>,,、『!<18>,'、碗<FD>,,

等の記号があるが、これらは質問項目番号やその略称で、前後の質問項目の番号

を割り出す指標に入れてある。

こうして1件の表示が済むと、このSubroutineは終わって、6760行に移

り、Printer等への切り替えをするかを聞いたのち、2段目の冒頭6660行に戻

って、表示を続けられるようになっていろ。 リスト21

6535,=================二二=ニーーニーーニ===ニニーニニニニ===

6540,=ニーーーーーDumpofRawDatainDataFile二二二====

6550*DDUMP 6560ClIDOFF:CONSOLE,,,,0:U二O

6570PRINT:PRⅢTSPC(30),'★原データ・ダンプ★'’

6580IFDRV$<>",,THENGDRV$=DRV$:GOTO6610

6590PRINT',原データのあるDRIVEのNo.〔B~D〕は?,,;

6600INPUT,,,,,GDRV$:IFINSTR(,'BCD,,,GDRV$)THENELSE6600

-29-

(31)

661.0 OPEN GDRV$+" :FAMFL.DAT'· AS

#1

6620

FOR 1=1 TO

170

6630

GOSUB *BT:FIELD #1,U AS DUM$,BT AS P$(I):U=U+BT

6640

NEXT

6650

,---6660

eND OFF:

CONSOLE

",.0

6670

PRINT

"~~TQRecord

No.'j:'"!

(<X=CR,fiij=BS,~7=EJ

u;

6680

DMP$=INPUT$(l)' :

DMPT=VAL(DMP$)

6690

IF DMP$="E"

THEN RETURN

6700

IF DMP$=CHR$(13) THEN DMP=DMP+l: 6OTO 6730

6710

IF DMP$=CHR$(S) THEN

DMP=DMP-l:

GOTD 6730

6720

PRINT DMP$;: INPUT ,,,, ,FOLLOW$: DMP=VAL(DMP$+FOLLOW$)

6730

IF DMP<l OR DMP)

1192

THEN

6680

6740

IF PRT THEN CMD ON

6750

PRINT: GOSUB *O.LIST

6760

CMD OFF:

PRINT

"RfjRec.No. "DMP"

m1J~J!?

(v/) ";

6770 IF INSTR("Yy",INPUT$(l»

THEN GOSUB *F3KEY

6780 G010 6660

6790

,---6800

*D.LIST

'Listing Raw Data

6810

PRINT

6820

GET #l,DMP

6830

PRINT "REC

No.

"DMP"

(p.a-I)

_"P$(1)"_"P$(Z)"_"P$(3)"_":

6840

'***face

sheet

'?

USING"(!)_&&_!_*&&_& &_!_!_!_!_!_ "

6850

DATA (,J_,_,*,_,_,_,_,_,_,_

6860

NF=VAL("&H"+P$(3»)

6870

FOR

M=O

TO NF-I :

RESTORE

6850

6880

IF MMOD 2 THEN PRINT TAR(40); ELSE

PRTNT

6890

FOR

L=O TO

9:

READ M$: PRINT M$;P$(lO*M+L+4);: NEXT

6900

NEXT M: PRINT

(32)

-6910,***p2.Q1-Q6

6920DATA,,〔p2.Q2-6〕〈Q1>''’-,-,<Q2>,-,-,<Q5>,-,-,-,-,-6930R鴎TORE6920

6940FoRM=114,124:READcQ$:PRINTcQ$;P$(Ⅱ);:NExT

6950PRINT

6960,***p2Q7

6970PRINT,'〔p2.Q7〕,';:FORM二lTO8

6980ⅣM=5THENPRINT:PRINT,, m

6990PRINTKNJ$<MEX$(&H2D抑Ⅱ)>;P$(123+M*2)"_''P$(124+M*2);

7000NEXTII:PRINT

7010,*・*p2.Q8-p3

7020DATA,,〔p2.8-P3〕〈Q8>''’-,-,<11>,_,<12>,-,-,-,〈13>,-,-,

〈16>,-,-7030RESTORE7020

7040FORN=l41TO154:READDQ$:PRINTDQ$;P$(M);:NEXT

7050PRINT

7060・***P4-tail

7070DATA,,〔p4-Tail〕*圏,,<18>,-,<19>,-,-,<21>、<CK>,-,-,-,

〈FD>、-.-,-,<A8〉

7080RESTORE7070

7090FORN=l55TO170:READEQ$:PRINTEQ$;P$(M);:NEXT

7100PRINT:PRINT 7110RETURN 5割り込み処理(*PRNCHG;7590-7830行) 出力をDisplayとPrinterとに任意に切り椿えるためのroutineである。 ↑CMDON,と入力すればPrinterに切り替わり、℃MDOFF,とすオlば りisplayに切り替わる。迅速かつ簡単に出力が切り替えられるこのroutineは、 文献10の223頁に掲載されていたもので、用途にあうため、メモリーへの書き 込み場所を変更しただけで借用した。閥3.12 -31-

(33)

しかし、入力待ちの状態で上記の特殊な命令を打ち込ませるのは一般向けには 好ましくないので、本プログラムでは、入力待ちの状態でf・3キーを押せば、 この*PRNCHGroutineが呼び出され、出力先を交互に切り替えるようにし たいF3KEY、リスト2)。 さらに、この切り替えをするか否かを尋ね実行するroutine*OUT,CHG (リスト16〔7530-7580行〕)を用意し、各表示routine(集計表、棒グラ フ)の末尾でCALLしていろ〔4460,5000,5580行〕of・2キー(f・1

も)で同じ作業を繰り返せるようになっているため、Display上で確認した表示

をこの間に答えるだけで簡単にPrinterに打ち出すことができるのである。 ㈱3.12文献10の8章5節は、「PRINT/LPRINTあれこれ」と題して

CALL文で呼ぶ専用routineをつくる例等が、ここで採用した「未使用コマン

ドでの切り替え」とともに紹介されていろ。随時呼び出して、切り替え可能なの

は、最後のものだけであった。(219-223頁)

一一一一 ・S c

士鴎

Ql---

l J dr 二二1ノ 2 Ad

一一二3

。d 9. 6 ⅢA 二ニリ』 e 4 o 二ニワと n Ce 二二P ・I e n -- t NⅢ

Ⅲ位

Ⅲ記

二e8

0 o

℃m

二・mw

E, R e R0 c

幸乢、

9 0 0 gr n EF 5e

二mM

肥風

a I1s h +

柵O

llre

c c D r l 二t

二蛇川

T NC De E7 刑 E AS

二・mG

Ⅱ Ⅱ R T 0

二片中

P 0 P 3 L 15 9

二’1,

$7 5 1A7 二一・1 $ Ⅱ

一一く

”E 0 3 T yR 十 一一 二yd N YO L

一山画

I”T

冊爪盛

一一・四m

TR くI S L 7

二Dc

n N..0A ・1 105V R

l-

0 0Ⅱ二 T

二二側

Ⅳ湖60

7 1 ・1 Ⅱ0..

s0m

二三,~ u ..87$

一一一一

8 $二 0 --9 6” AG0 GL0 l-一一 Ⅱ E二D EF二

2二一

CT”TSIA S I

剛川MM即侃肥棚卿剛M

E 2二ニ ト二二 ,,,*PLI0F

ス00000100000000

リ印Ⅲ日塊田川M防侃切開的、汀

77777 77777777 -32-

(34)

7715Z$=MID$(''00,00,00,7A,3E,00,00,7A''’1*3+1,2)

77ZOPOKEAD+LVAL("&H"+Z$)

7730NEXT,seg7AOO*2

7740POKEFL,1’--F1agOn

7750DATA3C,E8,F8,75,39,E8,0,,00,80,FB,BD,74,18,80,FBBF

7760DATA74,ZC,E9,0A,00,89,36,EA,06,BF,0,,00,CD,C4C3,BF

7770DATAO1,00,CD,C4CB,B8,9C,15,B8,40,00,89,07,E9,07,00

7780DATABB,9C,15,33,CO,89,07,ALEA,06,A3,E8,06,F9,CB,O0

7790DATA3C,CO,74,07,釦,E8,74,07,E9,02,00,B0,AD,F8,C8.E8

7800DATAC3,FF,80,FB,BF,74,,9,80,FB,BD,74,F1,EB,Cl,90,90

7810PRINT,,Youcanusethefollowingcommands・'’

7820PRINT,,CMDON:PRINT-〉LPRINT',:

PRINT,,CMDOFF:Cancel,,:PRINT

7830RETURN ,****EndofCMDRoutine Ⅳ成果と残された課題 1成果 以上の結果、1.3.1で定めたプログラムの基本的仕様をすべて実現するこ とができた。すなわち、

a.RAMDiskを原データおよび集計結果をともに扱うことで全面的に利用

し、読み出し等に要する時間を大幅に短縮し、Diskと機器の損耗を防ぐことが できた。

b、当初から限定した単純項目(回答肢のうち1つだけ選択させる項

目)については、3つの項目番号を入力するだけで、当然人が行なわ なければならない選択指示する場面を除いて、自動的に処理できるよう になった〔3t)((元全方向の合計の算出、百分率の同時計算表示、集計結 果のFile化を含む〕。 c、3種類の表示を実現した。

まず、クロス集計表は、第3元の任意の数値および全数値について、実数と百

一33-

(35)

分率を並べて連続して表示できるようにした。印字幅の制限があるので、横軸に 定めた項目の回答肢の数が7以下のときは自動的に1行に、これを超過すると2 行に分けて表示するようにした。さらに文字サイズに変化を付けるなどして多く の情報を見やすく整理して表示することができた。

棒グラフでは、仕様どおりの項目でも表示可能で、百分率の母数には、集計結果

配列中の任意のCellを選択できろ。これにより、視覚によるチェックが容易になった。 原データ表示は、簡単ながら項目グループごとに表示するようにしたため、原 データ中の誤記をチェックするのに幾度か役立ち、全体をざっと眺めながら特徴 の把握を試みるのにも多少は役立った。 このように、基本的な仕様を満たしたほかに、次のような個別的な成果を上げ ている。 ①項目順序の反復変更を可能にした。 Subroutine*CHGORDRを設けて、項目の11項序を自由に変更して繰 り返し表示できるようにしたことは、分析の視座を増設する効果をもたらした。 これは、メモリ上の配列を当初書き込んだあるいは読み込んだ配列(元配列)と 実際の表示作業に使う作業用配列と2種類設け~プログラムの指示に従ってXY Z各軸にあてる項目を任意に指定すれば、これに応じて項目を入れ換えて元配列 から作業用配列にデータが転送されるようにしたことで、この作業用配列を対象 に固定した項目11頂序で処理をする表示用の各routineを多様に機能させることが できたのである。そして元配列はそのままなので、これを元に繰り返し多様な順 序で表示させることもできた。 項目の順序を自由に変更し、さまざまな切り口の集計結果を表示させて多角的 にデータを眺めることを可能にして、新たな発見の機会を増加させたのである。 またこれにより、一度人力された元配列中のデータは、徹底的に活用され、分 析作業の効率を高めることになった。 ②表示先の変更を随時可能にした。 表示先をDisplayとPrinterに切り替えるか否かは、各処理の冒頭で尋ねていろ。 これは一とおりDisplayに表示して検討し必要ならPrinterに打ち出して記録を 残すという手|頂が多いためである。さらに、FunctionKey3番を押せば随時切 一34-

参照

関連したドキュメント

 調査の対象とした小学校は,金沢市の中心部 の1校と,金沢市から車で約60分の距離にある

 毒性の強いC1. tetaniは生物状試験でグルコース 分解陰性となるのがつねであるが,一面グルコース分

ところで、モノ、ヒト、カネの境界を越え た自由な往来は、地球上の各地域の関係性に

それゆえ、この条件下では光学的性質はもっぱら媒質の誘電率で決まる。ここではこのよ

本論文での分析は、叙述関係の Subject であれば、 Predicate に対して分配される ことが可能というものである。そして o

上であることの確認書 1式 必須 ○ 中小企業等の所有が二分の一以上であることを確認 する様式です。. 所有等割合計算書

そこで、現行の緑地基準では、敷地面積を「①3 千㎡未満(乙地域のみ) 」 「②3 千㎡以上‐1 万㎡未満」 「③1 万㎡以上」の 2

これらの事例は、照会に係る事実関係を前提とした一般的