ノード 3 ノード 4
01 W‐ZEIGAKU PIC S9(07)
PROCEDURE DIVISION.
PRO‐STA.
OPEN INPUT GEN‐F.
READ GEN‐F
AT END SET GEN‐EOF TO TRUE
END‐READ.
PERFORM UNTIL GEN‐EOF
COMPUTE T‐MAX = T‐MAX + 1
MOVE GEN‐KYUYO TO TBL‐KYUYO(T‐MAX)
PERFORM VARYING IX FROM 1 BY 1 UNTIL IX > 8
MOVE GEN‐ZEIGAKU(IX) TO TBL‐ZEIGAKU(T‐MAX IX) END‐PERFORM
READ GEN‐F
AT END SET GEN‐EOF TO TRUE END‐READ
END‐PERFORM.
CLOSE GEN‐F.
OPEN INPUT KYU‐F OUTPUT ZEI‐F PERFORM UNTIL KYU‐EOF
READ KYU‐F AT END
SET KYU‐EOF TO TRUE NOT AT END
PERFORM VARYING IX FROM 1 BY 1 UNTIL
a
CONTINUE END‐PERFORM
IF IX > T‐MAX THEN b
PERFORM CALC‐ZEIGAKU c
ELSE
PERFORM CALC‐ZEIGAKU END‐IF
MOVE KYU‐SNUM TO ZEI‐SNUM MOVE W‐ZEIGAKU TO ZEI‐ZEIGAKU WRITE ZEI‐R
END‐READ END‐PERFORM.
CLOSE KYU‐F ZEI‐F.
STOP RUN.
CALC‐ZEIGAKU.
IF KYU‐FUYO > 7 THEN d
IF W‐ZEIGAKU < 0 THEN
e
END‐IF ELSE
MOVE TBL‐ZEIGAKU(IX KYU‐FUYO + 1) TO W‐ZEIGAKU END‐IF.
[設問36]プログラム中の a に入れる適切な字句を,解答群の中から選べ。
解答群
ア IX < T‐MAX AND TBL‐KYUYO(IX) < KYU‐KYUYO イ IX > T‐MAX AND TBL‐KYUYO(IX) > KYU‐KYUYO ウ IX > T‐MAX OR TBL‐KYUYO(IX) > KYU‐KYUYO エ IX > T‐MAX OR TBL‐KYUYO(IX) < KYU‐KYUYO
[設問37]プログラム中の b に入れる適切な字句を,解答群の中から選べ。
解答群
ア MOVE IX TO T‐MAX イ MOVE T‐MAX TO IX
ウ MOVE 1 TO I エ MOVE 1 TO T‐MAX
[設問38]プログラム中の c に入れる適切な字句を,解答群の中から選べ。
解答群
ア COMPUTE W‐ZEIGAKU = W‐ZEIGAKU + KYU‐KYUYO * 1.3 イ COMPUTE W‐ZEIGAKU = W‐ZEIGAKU
+ (KYU‐KYUYO ‐ TBL‐KYUYO(1)) * 0.3
ウ COMPUTE W‐ZEIGAKU = W‐ZEIGAKU
+ (KYU‐KYUYO ‐ TBL‐KYUYO(T‐MAX)) * 0.3
エ COMPUTE W‐ZEIGAKU = W‐ZEIGAKU + TBL‐KYUYO(T‐MAX) * 1.3
[設問39]プログラム中の d に入れる適切な字句を,解答群の中から選べ。
解答群
ア COMPUTE W‐ZEIGAKU = TBL‐ZEIGAKU(IX 7)
‐ (KYU‐FUYO ‐ 7) * 1500
イ COMPUTE W‐ZEIGAKU = TBL‐ZEIGAKU(IX 7)
‐ (KYU‐FUYO ‐ 8) * 1500
ウ COMPUTE W‐ZEIGAKU = TBL‐ZEIGAKU(IX 8)
‐ (KYU‐FUYO ‐ 7) * 1500
エ COMPUTE W‐ZEIGAKU = TBL‐ZEIGAKU(IX 8)
‐ (KYU‐FUYO ‐ 8) * 1500
[設問40]プログラム中の e に入れる適切な字句を,解答群の中から選べ。
解答群
ア MOVE 0 TO W‐ZEIGAKU
イ MOVE TBL‐ZEIGAKU(IX 1) TO W‐ZEIGAKU ウ MOVE TBL‐ZEIGAKU(IX 7) TO W‐ZEIGAKU エ MOVE TBL‐ZEIGAKU(IX 8) TO W‐ZEIGAKU
問9 次の
Javaプログラムの説明及びプログラムを読んで,設問
41~45に答えよ。なお,
Java
プログラムで使用する
APIの説明は,この冊子の末尾を参照する。
〔プログラムの説明〕
スキー場に関する情報を,名前の辞書順と積雪量の多い順で並べ替えるプログラム である。
名前の辞書順に並べ替える場合は,java.util.Arrays.sort(Object[])を使用す る。
積 雪 量 の 多 い 順 に 並 べ 替 え る 場 合 は ,java.util.Arrays.sort(Object[], java.util.Comparator)を 使 用 す る 。 こ の メ ソ ッ ド は , 引 数 で 与 え ら れ た Comparatorのインスタンスのメソッドcompareを呼び出し,配列中の要素を比較し て 並 べ 替 え る 。 こ こ で は , イ ン タ フ ェ ー ス Comparator を 実 装 す る ク ラ ス SkiComparatorを定義する。
(1) クラスSkiComparator
コンストラクタの引数で与えられたスキー場と積雪量からマップを作成する。積雪 量を取得するメソッド getSnowryou と,積雪量の降順でスキー場を並べ替えるメ ソッドcompareをオーバライドする。
(2) クラスTestSort
スキー場の名前を文字列配列で,それに対応する積雪量を数値配列で作成する。最 初 に , ス キ ー 場 の 辞 書 順 に 並 べ 替 え , 次 に , ス キ ー 場 と 積 雪 量 か ら ク ラ ス
SkiComparatorのインスタンスを作成して,積雪量の多い順に並べ替える。
このプログラムの実行結果を以下に示す。ただし,%はシステムのコマンドプロンプ トである。
%java TestSort
SORT SKIAREA_NAME ASC
[Biwako, Hakuba, Nozawa, Shigakougen, Zaou]
SORT SNOW_RYOU DESC
[Hakuba, Zaou, Shigakougen, Biwako, Nozawa]
[150, 120, 100, 100, 30]
〔プログラム〕
import java.util.*;
public class TestSort {
public static void main(String[] args) {
String[] skiarea = {
"Zaou", "Shigakougen", "Nozawa", "Hakuba", "Biwako"
};
int[] snowryou = {120, 100, 30, 150, 100};
String[] skiarea2 = a ;
Arrays.sort(skiarea);
System.out.println("SORT SKIAREA_NAME ASC");
System.out.println(Arrays.toString(skiarea) + "¥n");
SkiComparator skicomparator =
new SkiComparator(skiarea2, snowryou);
Arrays.sort( b );
System.out.println("SORT SNOW_RYOU DESC");
System.out.println(Arrays.toString(skiarea2));
System.out.println("[" +
skicomparator.getSnowryou(skiarea2) + "]");
} }
class SkiComparator implements c {
private Map<String, Integer> map = new HashMap<String, Integer>();
SkiComparator(String[] skiarea, int[] snowryou) { for (int i = 0; i < skiarea.length; i++) { map.put(skiarea[i], snowryou[i]);
} }
public String getSnowryou(String[] skiarea2) { String snowstring = "";
int i = 0;
for ( ; i < d ; i++) {
snowstring += map.get(skiarea2[i]);
snowstring += ", ";
}
snowstring += map.get(skiarea2[i]);
return snowstring;
}
public int compare(String skiplace1, String skiplace2) { return e ;
} }
[設問41]プログラム中の a に入れる適切な字句を,解答群の中から選べ。
解答群
ア "" イ null
ウ skiarea エ skiarea.clone()
[設問42]プログラム中の b に入れる適切な字句を,解答群の中から選べ。
解答群
ア skiarea イ skiarea, skicomparator
ウ skiarea2 エ skiarea2, skicomparator
[設問43]プログラム中の c に入れる適切な字句を,解答群の中から選べ。
解答群
ア Comparator<int> イ Comparator<Integer>
ウ Comparator<String> エ Comparator<Object>
[設問44]プログラム中の d に入れる適切な字句を,解答群の中から選べ。
解答群
ア map.size() イ map.size() ‐ 1 ウ map.size() + 1 エ map.size() ‐ 2
[設問45]プログラム中の e に入れる適切な字句を,解答群の中から選べ。
解答群
ア map.get(skiplace1) ‐ map.get(skiplace2) イ map.get(skiplace2) ‐ map.get(skiplace1) ウ skiplace1.length() ‐ skiplace2.length() エ skiplace2.length() ‐ skiplace1.length()
問10 次のアセンブラプログラムの説明及びプログラムを読んで, 設問
46~50に答えよ。
〔プログラムの説明〕
コンマによって区切られた数値(以下,CSV形式のデータという)を集計する副プ ログラムCSVSUMである。
(1) 副プログラムCSVSUM は,GR1にCSV 形式のデータの先頭アドレスが設定されて 主プログラムから呼び出される。
(2) 副プログラムCSVSUM は,GR0にCSV 形式のデータ中の各数値の和を集計して主 プログラムに戻る。
(3) CSV形式のデータの仕様は,次のとおりである。
① 数値は,符号なし整数又は符号付き整数のいずれかである。
② コンマによって区切られた文字列の長さが0の(コンマが連続する)場合,そ の値は0とする。
③ データの末尾には,#0000が格納されている。
④ CSV 形式のデータの例を図に示す。この例では,1,-12,0,+123 の 4 個 の数値が格納されている。
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10
(GR1) 1 , ‐ 1 2 , , + 1 2 3 Nl
注記“
Nl”は,#0000を表す。図
CSV形式のデータの例
(4) CSV形式のデータは,仕様どおりに格納されているものとする。
(5) 和を求める計算において,けたあふれは発生しないものとする。
(6) 副プログラムから戻るとき,汎用レジスタGR1~GR7の内容は元に戻す。
〔プログラム〕
CSVSUM START
RPUSH
LAD GR0,0 ; 集計値を初期化
NEXT LAD GR2,0 ; CSV値を初期化
LAD GR3,0 ; 符号フラグを初期化
LOOP LD GR4,0,GR1
JZE LAST
CPL GR4,=',' ; 区切り文字か
JZE SUM
CPL GR4,='+' ; 正符号か
JNZ PASS1
a
JUMP LOOP
PASS1 CPL GR4,='‐' ; 負符号か
JNZ PASS2
LAD GR1,1,GR1
b
JUMP LOOP
PASS2 c
SLA GR2,3
SLA GR5,1
d
AND GR4,=#000F ; 数値抽出
ADDA GR2,GR4
LAD GR1,1,GR1
JUMP LOOP
SUM CALL ADVAL
LAD GR1,1,GR1
JUMP NEXT
LAST CALL ADVAL
FIN RPOP
RET
ADVAL e
JZE RTN
XOR GR2,GR3
LAD GR2,1,GR2
RTN ADDA GR0,GR2
RET
END
[設問46]プログラム中の a に入れる適切な字句を,解答群の中から選べ。
解答群
ア LAD GR1,1,GR1 イ LAD GR2,1,GR2
ウ LAD GR3,0 エ LAD GR3,1,GR3
[設問47]プログラム中の b に入れる適切な字句を,解答群の中から選べ。
解答群
ア LAD GR2,0 イ LAD GR3,0
ウ LAD GR3,#FFFF エ LAD GR4,#FFFF
[設問48]プログラム中の c に入れる適切な字句を,解答群の中から選べ。
解答群
ア LD GR2,GR3 イ LD GR2,GR5
ウ LD GR5,GR2 エ SUBA GR5,GR2
[設問49]プログラム中の d に入れる適切な字句を,解答群の中から選べ。
解答群
ア ADDA GR2,GR5 イ ADDA GR5,GR2
ウ SUBA GR2,GR5 エ SUBA GR5,GR2
[設問50]プログラム中の e に入れる適切な字句を,解答群の中から選べ。
解答群
ア CPA GR2,=0 イ CPA GR3,=0
ウ CPA GR3,=#FFFF エ CPA GR4,=#0000
問11 次の表計算,ワークシートの説明及びマクロの説明を読んで,設問51~55 に答えよ。
〔表計算の説明〕
家電製品を販売しているU社では,前年度の売上実績を基にして,主力商品の売上分 析を行うことになった。
(1) 売上分析の方法は,次のとおりである。
① 売上金額を,商品別月別に集計(以下,商品別月別売上金額という)する。
② 商品別月別売上金額を,年単位で集計する(以下,商品別前年度売上金額という)。
③ 売上金額による重点管理を行うため,商品別前年度売上金額の降順に整列する。
④ 全商品の売上合計に対する比率を商品ごとに求める(以下,売上構成比率という)。
⑤ 売上金額の上位から順に売上金額を累計し,全商品の売上合計に対する,1 位か ら当該商品までの合計の比率(以下,累計構成比率という)を求める。
⑥ 累計構成比率を基に,ABC分析を行い,商品をA群,B群及びC群に分類する。
(2) 各ワークシートの内容は,次のとおりである。
① ワークシート“前年度売上集計”の内容は,次のとおりである。
・対象とする主力商品について,商品別,月別に売上金額を入力する。
・商品ごとに,期首から期末までの12か月分の売上金額を合計する。
・売上金額の合計による降順順位を求める。
・ワークシート“ABC分析”に順位順に整列して表示するため,次に示す算出式に より“一意値”を求める。さらに,一意値の昇順順位を求めて,“位置”に表示す ることにより,当該行のワークシート“ABC分析”での表示位置を定める。なお,
商品番号は3けたの数値であり,商品番号同士が重複することはない。
一意値 = 順位 × 1000 + 商品番号
② ワークシート“ABC分析”の内容は,次のとおりである。
・ワークシート“前年度売上集計”を基に,ワークシート“ABC分析”の明細行の
“番号(№)”と一致する“位置”を探索し,該当する商品番号及び売上金額合 計を表示する。
・売上金額の合計を求め,売上金額の合計に対する構成比率を商品ごとに求める。
・先頭行からの構成比率の累計(以下,累計構成比率という)を求めて表示する。
・商品の累計構成比率と群境界0.7との差の絶対値が最小になるまでをA群,累計 構成比率と群境界0.9との差の絶対値が最小になるまでをB群,残りをC群の商 品とする。例えば,ワークシート“ABC 分析”で,商品 X,商品 Y の順に連続 して並んでいるとし,その累計構成比率がそれぞれ0.69(群境界0.7との差の絶 対値0.01),0.72(群境界0.7との差の絶対値0.02)の場合,商品Xは A群,
商品YはB群となる。なお,これらの値が同じ場合は,ともにA群とする。
〔ワークシート:前年度売上集計〕
ワークシート“前年度売上集計”を作成した。作成したワークシートの例を,図1 に 示す。
A B C … M N O P Q 1 前年度売上集計
2 商品番号 4月 5月 … 3月 合計 順位 一意値 位置 3 101 105,756 127,521 161,750 1,679,603 25 25,101 25 4 102 124,148 168,612 183,638 1,674,987 27 27,102 27
・ ・
・
・ ・
・
・ ・
・
・ ・
・
・・
・
・・
・
・・
・
・・
・
・ ・
・
・・
・
30 128 135,623 158,553 185,641 1,732,641 22 22,128 22 31 129 105,626 189,729 122,621 1,641,018 30 30,129 30 32 130 150,615 161,965 193,122 1,826,780 14 14,130 14
図1 ワークシート“前年度売上集計”
(1) 図1中の各項目の説明は,次のとおりである。
① 売上金額の合計を表示するため,セルN3に次の計算式を入力し,セルN4~N32 に複写する。
合計(B3~M3)
② 売上金額の合計による降順順位を表示するため,セルO3に次の計算式を入力し,
セルO4~O32に複写する。
順位(N3,N$3~N$32, a )
③ 一意値を表示するため,セルP3に次の計算式を入力し,セルP4~P32に複写す る。
O3*1000+A3
④ 位置を表示するため,セル Q3に次の計算式を入力し,セル Q4~Q32に複写す る。
順位(P3,$P$3~$P$32, b )
〔ワークシート:ABC分析〕
(1) ワークシート“前年度売上集計”を基に,ワークシート“ABC分析”を作成した。
作成したワークシートの例を,図2に示す。
A B C D E F G H
1 ABC分析 群境界 0.7 0.9
2 № 商品 番号
売上 金額
構成 比率
累計構 成比率
絶対値
(A群)
絶対値
(B群) 群 3 1 123 2,054,879 0.0381 0.0381 0.6619 0.8619 A群 4 2 122 1,984,546 0.0368 0.0749 0.6251 0.8251 A群
・ ・
・
・ ・
・
・ ・
・
・ ・
・
・・
・
・・
・
・・
・
・ ・
・
・ ・
・
31 29 112 1,647,145 0.0306 0.9696 0.2696 0.0696 C群 32 30 129 1,641,018 0.0304 1.0000 0.3000 0.1000 C群
33 合計 53,896,316
図2 ワークシート“ABC分析”