平成7年度 春期 第二種 午後 問8

                        [更新日]1995.05.22
問8 次のCOBOLプログラムの説明及びプログラムを読んで、設問に答えよ。 [プログラムの説明] 支店別月別売上ファイルを読み、昨年の各月の支店別売上高の対 前年(一昨年)同月比を百分率で印字する。 (1) 売上ファイルのレコード様式は、次のとおりである。 ┌───────┬───┬───┬────────┐ │  支店名  │ 年 │ 月 │  売上高   │ │  20けた │2けた│2けた│  10けた  │ └───────┴───┴───┴────────┘ (2) 売上ファイルは、支店名、年及び月で昇順に整列されている。 (3) 印字方法は、次のとおりとする。 ┌───────────────────────────────┐ │shiten   Jan.Feb.Mar.Apr.May……………………………Nov.Dec. │ │xxxxxx…x zz9 zz9 zz9 zz9 zz9…………………………… zz9 zz9   │ │xxxxxx…x zz9 zz9 zz9 zz9 zz9…………………………… zz9 zz9   │ │ : : : : : :             : :        │ │ : : : : : :             : :        │ │xxxxxx…x zz9 zz9 zz9 zz9 zz9…………………………… zz9 zz9   │ └───────────────────────────────┘ その月の売上高又は前年同月の売上高が存在しないか0円の場 合には、前年同月比に“---”を印字する。前年同月の売上高に 比べて10倍以上の売上高の場合には、前年同月比に“***”を印 字する。 (4) プログラムの実行日(今日)の年を求め、それから1を引いた 年が昨年となる。 ただし、このプログラムでは年は西暦下2けたで扱っているので、 00年の1年前は99年になることに注意する。 [プログラム] data division. file section. fd u-file. 01 u-rec. 05 u-shiten pic x(20). 05 u-yy pic 9(2). 05 u-mm pic 9(2). 05 u-daka pic s9(10). fd p-file. 01 p-rec pic x(68). working-storage section. 01 header. 05 pic x(20) value "shiten". 05 pic x(48) value "Jan.Feb.Mar.Apr.May Jun.Jul.Aug.Sep.Oct.Nov.Dec.". 01 meisai. 05 m-shiten pic x(20). 05 occurs 12. 10 pic x. 10 m-hiritsu pic zz9. 10 m-hiritsu-x redefines m-hiritsu pic x(3). 01 uriage-rec. 05 w-daka pic s9(10) occurs 24. 01 w-hiritsu pic 9v99. 01 w-shiten pic x(20). 01 eof-ind pic x value low-value. 01 today. 05 t-yy pic 99. 05 t-mm pic 99. 05 t-dd pic 99. 01 sakunen pic 99. 01 issakunen pic 99. 01 j pic 99. procedure division. m1. open input u-file output p-file. initialize uriage-rec. write p-rec from header after page. read u-file at end move high-value to eof-ind end-read. [ a ] evaluate t-yy when 0 [ b ] move 98 to issakunen when 1 move 0 to sakunen move 99 to issakunen when other compute sakunen = t-yy - 1 compute issakunen = t-yy - 2 end-evaluate. perform until eof-ind = high-value move u-shiten to w-shiten if u-yy = sakunen [ c ] else if u-yy = issakunen move u-daka to w-daka (u-mm) end-if end-if read u-file at end perform s2 move high-value to eof-ind not at end if u-shiten not = w-shiten perform s2 [ d ] end-if end-read end-perform. close u-file p-file. stop run. s2. move space to meisai. move w-shiten to m-shiten. perform varying j from 1 by 1 until j > 12 if w-daka (j) <= 0 or w-daka (j + 12) <= 0 move "---" to m-hiritsu-x (j) else [ e ] on size error move "***" to m-hiritsu-x (j) not on size error compute m-hiritsu (j) = w-hiritsu * 100 end-compute end-if end-perform. write p-rec from meisai after 1. 設問 プログラム中の[ ]に入れる正しい答えを、解答群の中から 選べ。 aに関する解答群 ア accept today from date イ accept today from time ウ initialize meisai エ move space to p-rec オ move zero to uriage-rec bに関する解答群 ア compute sakunen = t-yy - 1 イ compute sakunen = t-yy + 1 ウ move -1 to sakunen エ move 99 to sakunen オ move t-yy to sakunen cに関する解答群 ア move u-daka to m-hiritsu (u-mm) イ move u-daka to w-daka (j) ウ move u-daka to w-daka (j + 12) エ move u-daka to w-daka (u-mm) オ move u-daka to w-daka (u-mm + 12) dに関する解答群 ア initialize uriage-rec イ move high-value to eof-ind ウ move low-value to eof-ind エ move u-shiten to w-shiten オ move w-shiten to u-shiten eに関する解答群 ア compute m-hiritsu (j) = w-daka (j) / w-daka (j + 12) * 100 イ compute m-hiritsu (j) = w-daka (j + 12) / w-daka (j) ウ compute w-hiritsu = w-daka (j) / w-daka (j + 12) エ compute w-hiritsu = w-daka (j + 12) / w-daka (j) オ compute w-hiritsu = w-daka (j + 12) / w-daka (j) * 100
戻る 次頁:問9