一括処理部品集5‖yakin.html                            《戻る》 《玄関へ
 《 「勤務表作成」”夜勤”を必要人数分だけ割り当てる 》

【内容】
  「勤務表作成」(4週8休制用)で、勤務種類を自動入力する
 一例です。対象者をでたらめに並べ替えておき、先頭行から
 順次勤務の種類を必要人数分だけ入力していきます。
 既に何かのデータが入力されてあればスキップします。

【用例】
 ・・・・・・・・
 名札 夜勤千鳥
    項目集計 [番号]
    &全行数=&有効件数
    手続き実行 入力対象
    &N=1,&KOU=&N+3                         @
   繰り返し &N=1,28                           A
      手続き実行 表初期化
      &項目名1=#CASE(&N,"1","2","3","4","5","6","7","8","9","10" \
             ,"11","12","13","14","15","16","17","18","19","20" \
             ,"21","22","23","24","25","26","27","28")
      &選択件数=0
      検索条件登録 条件名="夜勤",{[番号]>0,[番号]=<&LL,&項目名1=40}
      絞り込み 条件名="夜勤"
      &YAKIN=&選択件数
      &YA[&N]=&YAKIN
   繰り返し終了
    手続き実行 表初期化
    手続き実行 乱数順
    絞り込み [番号]{>0,<=&LL}
    &N=1,&KOU=&N+3
   繰り返し  &N=1,28
      &項目名1=#CASE(&N,"1","2","3","4","5","6","7","8","9","10" \
             ,"11","12","13","14","15","16","17","18","19","20" \
             ,"21","22","23","24","25","26","27","28")
       &M=&N+1,&KOU=&N+3,&JIKOU=&KOU+1,&JIJI=&KOU+2
      &項目名2=#CASE(&M,"1","2","3","4","5","6","7","8","9","10" \
             ,"11","12","13","14","15","16","17","18","19","20" \
             ,"21","22","23","24","25","26","27","28","次月")
       条件 (&N>1 .and &行番号=1) ジャンプ 行番号=先頭
       条件 (&N>1 .and &行番号=0) ジャンプ 行マーク=1
       &FG=&YA[&N]
       繰り返し (&FG<2)                      B
         ケース開始
          ケース (#終端行=0 .AND #項目属性(&KOU,0)=0 .and #項目属性(&JIKOU,0)=0)    C
                条件 (&N=<27 .and #項目属性(&JIJI,0)=0) 行訂正 &KOU=40,&JIKOU=41,&JIJI=50
                条件 (&N=28 .and #項目属性(&JIJI,0)=0) 行訂正 &KOU=40,&JIKOU=41
                条件 (&N=<28 .and #項目属性(&JIJI,0)<>0) 行訂正 &KOU=40,&JIKOU=41
                ジャンプ 行番号=+1
                &FG=&FG+1                 D
          ケース (#終端行=1)
                ジャンプ 行番号=先頭
          ケース (#終端行=0 .AND #項目属性(&KOU,0)<>0)
                ジャンプ 行番号=+1
          ケース (#終端行=0 .AND #項目属性(&JIKOU,0)<>0)
                ジャンプ 行番号=+1
          ケース その他
                ジャンプ 行番号=+1
         ケース終了
       繰り返し終了
          条件 (#終端行=1) &行番号=1
          条件 (#終端行=0) &行番号=0
          条件 (#終端行=0) 行マーク定義 1
   繰り返し終了
   手続き実行 表初期化
   表形式編集 ガイド="終了:/Q"
 手続き終了
 ・・・・・・・・
【解説】
 @ 入力する項目は使用表の4番目からです。
 A 既に入力されている1日における夜勤(数値データ:40)の数を4週間にわたり
   予めチェックし、配列変数に入れておきます。
 B ここでは1日の夜勤の必要人数は2名としています。
 C 夜勤(40)に当たると明くる日は「あけ」(41)、さらにその翌日は「公休」(50)
   という設定条件がある例です。
 D 夜勤を入力すると残りの入力数を減らします。

【参考】
 「製品案内」→「勤務表作成補佐」→から処理画面がご覧になれます。

                      END of FILE  戻る 玄関へ