平成11年秋
問12 次のCOBOLプログラムの説明及びプログラムを読んで、設問1、2に答えよ。
〔プログラムの説明〕
ある学校の第2外国語選択科目別人数を棒グラフで出力する。
(1) 選択科目別人数は、呼ばれるプログラムKEISANによって得ることができ、
次の順にSENTAKU-Tに格納される。
フランス語(F)、ドイツ語(G)、中国語(C)、ロシア語(R)、スペイン語(S)
(2) 棒グラフの印字様式は、次のとおりである。
@縦軸に科目、横軸に選択人数をとる。
A選択人数の範囲は 0〜30 人であり、一人につき、“*”一つで表す。
Bフランス語 30 人、ドイツ語 15 人、中国語 20 人、ロシア語 0 人、
スペイン語 5 人の場合の出力例を図に示す。
〔プログラム〕←クリック
FILE SECTION. FD PRINT-F. 01 PRINT-R. 03 PIC X(2). 03 KOMOKU PIC ZZ9. 03 JIKU PIC X. 03 BO OCCURS 5. 05 PIC X(2). 05 KAZU PIC X(3). 03 PIC X(2). WORKING-STORAGE SECTION. 01 YOKOJIKU. 03 PIC X(6) VALUE " ---+". 03 PIC X(27) VALUE ALL "-". 01 MEMORI PIC X(33) VALUE " F G C R S ". 01 SENTAKU-T. 03 NINZU OCCURS 5 PIC 9(2). 01 S PIC 99. 01 T PIC 99. 01 K PIC 99.
表 手続き部修正内容( 27 行目から 35 行目を置換)
文 | |
a |
PERFORM VARYING S FROM 1 BY 1 UNTIL S > 30 MOVE SPACE TO PRINT-R MOVE ":" TO JIKU PERFORM VARYING T FROM 1 BY 1 UNTIL T > 5 IF S <= NINZU(T) THEN MOVE "***" TO KAZU(T) END-IF END-PERFORM WRITE PRINT-R END-PERFORM. |
b |
PERFORM VARYING S FROM 1 BY 1 UNTIL S > 30 MOVE SPACE TO PRINT-R COMPUTE K = 30 - S IF K = 10 OR 20 OR 30 THEN MOVE K TO KOMOKU END-IF MOVE ":" TO JIKU PERFORM VARYING T FROM 1 BY 1 UNTIL T > 5 IF K <= NINZU(T) THEN MOVE "***" TO KAZU(T) END-IF END-PERFORM WRITE PRINT-R END-PERFORM. |
c |
PERFORM VARYING S FROM 30 BY -1 UNTIL S < 1 MOVE SPACE TO PRINT-R IF S = 10 OR 20 OR 30 THEN MOVE S TO KOMOKU END-IF MOVE ":" TO JIKU PERFORM VARYING T FROM 1 BY 1 UNTIL T > 5 IF S <= NINZU(T) THEN MOVE "***" TO KAZU(T) END-IF END-PERFORM WRITE PRINT-R END-PERFORM. |
【設問1】
表中ので 囲まれた
IF 文を“10 の倍数のとき”となるように変更する場合、正しい答えを解答群の中から選べ。
解答群
ア COMPUTE K = S / 10 IF K = 0 THEN MOVE S TO KOMOKU END-IF イ COMPUTE K = S / 10 IF S = K * 10 THEN MOVE S TO KOMOKU END-IF ウ COMPUTE K = S / 10 COMPUTE K = S / K IF K = 10 THEN MOVE S TO KOMOKU END-IF エ COMPUTE K = S / 10 COMPUTE K = K * 10 MOVE K TO KOMOKU
【設問2】
a、b、c それぞれで修正した結果、印字されるグラフはどうなるか、解答群の中から選べ。ここで、選択人数はプログラムの説明(2)の出力例と同じとする。
解答群