質問箱 No.68: 職員の履歴管理表に行を追加したい

      ◇ 回答箱 No.68-1    高橋 周助   1998年02月 193号 P.20
          ◇ 質問箱 目次へ
No.68   職員の履歴管理表に行を追加したい の再質問 質問者
  西村 重幸
1998年01月
192号 P.18
 職員の給与改定が4月に遡り実施されました。
 そこで、表1の最終行に表2の行を追加するオートを作りたいと思います。
 また、追加するデータが2頁にまたがる事も考えられます。
 何かよい処理をご指導下さい。
    (背景)
  • 公務員給与改定の実施が議会で議決されると、4月1日に遡って支給されます。
    4月に支給した給料と12月に改訂になった給料とでは、給料の級号は同じでも月額が異なりますので、その都度記録していかなければなりません。
    現在約200名分の改訂記入をオートで処理していましたが、今回入力行が2頁にわたる職員が発生したのを機会に、1名1頁を1名1バインダーに変更しようと考えております。
    簡単に’MT/B’コマンドでは処理できないと思いますので、良い方法を教えて頂けたら幸いと思います(私のTESTプログラムを紹介します)。

    (条件)
  • 1. 記入日  平成9年12月8日
  • 2. 遡り日  平成9年4月1日
  • 3. 月額は、級号からインデックスで処理します。
  • 4. 給与改定が毎年実施されるとは限りません。
  • 5. 昇給は年1回あるとは限りません。


 月額表(PAY9)[インデックスファイル]
  級号     月額     表示    改定率 
10308 239,600 3級 8号 1.4%
10309 246,200 3級 9号 1.4%
10310 252,700 3級10号 1.4%
10311 259,100 3級11号 1.4%

プログラム
 1 /*=========================================================*/
 2 /*= データを遡りする方法であるが、                          =*/
 3 /*= この方法では挿入行数が、頁の最大行を超える時は使用できない=*/ 
 4 /*= Program name :[TEST]                                 =*/
 5 /*= DATA頁    :DATA/1                                  =*/
 6 /*= INDEX頁   :INDEX/月額表(PAY9)                      =*/
 7 /*=========================================================*/
 8
 9 <TEST>
10 $初期設定: DISP OPEN,[24,3],"給与改定額の自動記入",COLOR(G),"(サンプルAUTO)";
11       LET X1=9; LET X2=12; LET X3=8;                         /*議決年月日*/
12       LET X4=X1;LET X5=4;  LET X6=1;                         /*適用年月日*/
13               DISP COLOR(W),[27,14],"初期数値は入力してあります。"COLOR(Y);
14 $初期入力画面:
15               DISP [20,6],"議決年月日  平成  年  月  日",COLOR(W);
16                    INPUT [39,6]X1,U(NN/RY);
17                    INPUT [45,6]X2,U(NN/RY);
18                    INPUT [51,6]X3,U(NN/RY);
19               DISP [20,8],"適用年月日  平成  年  月  日",COLOR(W);
20                    INPUT [39,8]X4,U(NN/RY);
21                    INPUT [45,8]X5,U(NN/RY);
22                    INPUT [51,8]X6,U(NN/RY);
23 $START:    G;DATA/1;LET X10=T;CLEAR V40;
24              CLOSE;
25              FOR X11=X10 TO H STEP -1;CLEAR V1,5;               /*該当月の検索*/ 
26                   LET V1=[X11,@級号 ];IF LEN(V1)=0 THEN CONTINUE;
27                   LET V2=[X11,@年 ];
28                   LET V3=[X11,@月 ];
29                   COL;Y;%X11;A;                              /*TESTのための色づけ*/
30 $年内遡り:      IF IVAL(V2)=X4 AND IVAL(V3)<X5 THEN LET V3=NUM$(X5);
31                                                                /*遡りの最終行*/
32 $前年遡り:      IF IVAL(V2)=X1 THEN LET V3=NUM$(X5);
33                  LET X23=IVAL(V3);
34 $該当行:       RINDEX "PAY9",V1,V5=@月額;   
35                     IF ERR(0)=34 THEN GOTO $ERR;
36                     IF X23<10 THEN LET V3=" "+V3;                   /*桁数合わせ*/
37                  LET V4="給与条例改正(平成"+NUM$(X4)+"年"+V3+"月";
38                  LET V4=V4+NUM$(X6)+"日から適用)";
39                     IF V40="S" THEN GOTO $挿入行;          /*書込が複数のとき*/
40 $書込行:       MT;%X1;%X2;%X3;%X4;%V1;%V5;ESC;
41                  LET X40=T;GOTO $CHECK;                        /*X40=挿入行番号*/
42 $挿入行:       IR;S;%X40;1;
43                  W;%X40;;%X1;%X2;%X3;%X4;%V1;%V5;ESC;GOTO $CHECK;
44 $CHECK:         IF X23=X5 THEN brEAK;                              /*書込終わり*/
45                  LET V40="S";                                      /*挿入行指示*/
46             NEXT;
47 $ERR: STOP;


このページのTOPへ戻る