一括処理部品集2‖dostenti.html                            《戻る 《玄関へ
 《 転置集計&項目集計による度数処理 》

【内容】
  高校入試用の度数処理です。
 受検中学校単位で処理し、全受検校を一覧表にします。
  「度数処理をおこなう1,2」の方法に比べて、約3分の1の
 処理時間で済みます。

【用例】
 名札 転置度数
  表
  表  &入試N,表番号=1
  置換 [作業用]=#INT(#項目属性(&項,0)/&階級幅)*&階級幅   @
  並べ替え {[作業用]降順,[TC]昇順}
  絞り込み [作業用]<>#未定義
  転置集計 {[作業用]},[TC],[受検番号],集計種別=件数 \       A
        ,転置項目名並べ替え=昇順,表番号=2
  書き出し 表,"全中度数.TBL",*
  表
  表 "全中度数.TBL",表番号=2
  &項数=#項目数                                B
   繰り返し &計数=2,&項数
    絞り込み &計数=0
    置換 &計数=#未定義
    絞り込み解除
   繰り返し終了
  項目属性変更2 変更,[作業用],{"階級値"}
  項目属性変更2 変更,[件数],{"度数合計"}               C
  項目属性変更2 挿入,[階級値],{"階級","文字列",4}
  置換 [階級]=#全角(#STR([階級値]))
  ジャンプ 行番号=終端
  行挿入 [階級]="人 数"                          D
  行挿入 [階級]="得点合計"
  行挿入 [階級]="平均点"
  行挿入 [階級]="最高点"
  行挿入 [階級]="最低点"
  手続き実行 連続集計
 手続き終了

 名札 連続集計
  手続き実行 TC校                             E
  表
  表  &入試N,表番号=1
  表 "全中度数.TBL",表番号=2
  &計数=1
  繰り返し &計数=1,&実校数
   &TCG=#数値(#対応文字列(&受検校,&計数))           H
   編集表 1
   条件 (#絞り込み状態>0) 絞り込み解除 *
   絞り込み [TC]=&TCG
   条件 (&選択件数>0) 手続き実行 平均他入力          I
  繰り返し終了
  手続き実行 平均他全入力                        L
  項目属性変更2 削除,[階級値]                      N
  表形式編集
 手続き終了

 名札 TC校
   &受検校="",&KEN="",&選択件数="",&受検中名="",&中名="",&先名=""
  表  &入試N,表番号=1
  並べ替え {[TC]昇順}
  絞り込み [TC]{>0}
  条件 (&選択件数<1) 確認 #連結(&システム名,"レコードがありません。作業を中止します。")
  条件 (&選択件数<1) 分岐 度数一覧表
  絞り込み 単一化={[TC]}                          E
  代入 &実校数=&選択件数
  ジャンプ 行番号=先頭
  &計数=1
  繰り返し &計数=1,&実校数
   代入 &先名=#STR([TC])
   代入 &中名=[中学名]
   &受検校=#文字置換(&受検校,&計数,&先名)           F
   &受検中名=#文字置換(&受検中名,&計数,&中名)        G
   ジャンプ 行番号=+1
  繰り返し終了
  条件 (#絞り込み状態>0) 絞り込み解除 *
  代入 &選択件数=""
 手続き終了

 名札 平均他入力
   &有効件数="",&平均値="",&最大値="",&最小値="",&合計値=""
  項目集計 &項                               I
  編集表 2
   &M=&計数+2                               J
  ジャンプ 行番号=最終
   行訂正 &M=&最小値
  ジャンプ 行番号=-1
   行訂正 &M=&最大値
  ジャンプ 行番号=-1
   行訂正 &M=#四捨五入(&平均値,1)
  ジャンプ 行番号=-1
   行訂正 &M=&合計値
  ジャンプ 行番号=-1
   行訂正 &M=&有効件数
  &中学校=#対応文字列(&受検中名,&計数)              K
  &項名2=#項目属性(&M,1)
  項目属性変更2 変更,&項名2,{&中学校}
 手続き終了

 名札 平均他全入力
   &有効件数="",&平均値="",&最大値="",&最小値="",&合計値=""
  編集表 1
  条件 (#絞り込み状態>0) 絞り込み解除 *
  絞り込み [TC]>0                              L
  項目集計 &項
  編集表 2
  ジャンプ 行番号=最終                           M
   行訂正 [度数合計]=&最小値
  ジャンプ 行番号=-1
   行訂正 [度数合計]=&最大値
  ジャンプ 行番号=-1
   行訂正 [度数合計]=#四捨五入(&平均値,1)
  ジャンプ 行番号=-1
   行訂正 [度数合計]=&合計値
  ジャンプ 行番号=-1
   行訂正 [度数合計]=&有効件数
 手続き終了

【解説】
 @ 度数処理対象表(&入試N)の対象項目(項目番号:&項)の値を階級幅
   に応じて前処理をして[作業用]の項目に入れます。階級幅が5点なら、
   素点93点は90点に、素点49点は45点になります。
   [作業用]と中学校コード[TC]を使って並べ替えます。
 A グループ項目を[作業用](縦の集計条件)、転置項目を[TC](横の集計条件)にして
   件数を求めます。これで中学校別に各階級の件数(度数分布)が得られます。
 B 度数表の項目数を知り、度数が0(ゼロ)を消去します。
 C 度数表の項目名を変更したり、項目を挿入します。
 D 文字型として挿入した[階級]を使って平均点などを入力する行を挿入しておきます。
 E 度数処理対象表を使い、受検した中学校の数を知ります。
 F 受検した中学校のコードのリストを用意します。
 G 受検した中学校名のリストも用意しておきます。
   (度数表の項目名を、中学校コードから中学校名の表示に変えるため)
 H Fで用意した中学校のコードのリストから順次コードを取り出し、
   
中学校別に該当のレコードを選択します。
 I 度数処理対象表の対象項目について項目集計をおこないます。
 J 編集対象表を度数表に移し、集計値を入力する項目番号を指定します。
   この段階では先頭に[階級],[階級値]の2つの項目があるので、集計値を入れる
   先頭項目の番号は2を加えた値になります。

   
集計値は度数表の最終行の"最低点"から順次1行づつ上へ入力しています。
 K
 Gで用意した中学校名のリストから順次中学校名を取り出し、
   中学校コードで表示されていた項目名を対応する中学校名に変更します。
   (中学校コード[TC]を使って転置集計しているので、項目名が数字であった。)
 L 編集対象表を度数処理対象表に再び移し、受検した全中学校を処理対象に
   し、対象項目について項目集計をおこないます。
 M 編集対象表を度数表に移し、Jと同様に集計値は度数表の最終行の
   "最低点"から順次1行づつ上へ入力しています。

 N [階級値]の項目(数値型)を削除します。
   (Cあたりはもう少しすっきりできそうです)
   完成した度数表を表示します。

【参考】

 中学校コードと中学校名(データはダミーです。以下同様)


 入試処理システムのサブメニュー コマンドボタンに割り付けた変数(&SM)により、項目番号などを
 決めています。14)K国語をクリックすると、&SM=14を返し、処理対象表の23番目の項目を対象にします。
 〔例〕&項=#CASE(&SM,7,22,9,11,13,14,15,16,17,18,19,20,21,23,24,25,26,27)


 処理対象表の一部 @処理をおこなった状態


 転置集計表の一部 A処理をおこなった状態


 度数表の一部 B〜D処理をおこなった状態


 度数表の一部 処理完了

                      END of FILE  戻る 玄関へ