No.130-1 |
貸与期間の変更に伴う、貸与計画表を作成したい |
回答者 内海 孝 |
2002年03月 242号 P.18 |
図1.
基本台帳は、一名分だけ提示されましたが、左図のようなイメージの名簿を作成しました。レコードマークをシステムカラムに書き込んで、ブロック毎、検索できます。
|
1 <TAIYO1>
2 /*********************************************************************************/
3 /* V10=社員コード:V1,Z1=基本台帳の最古始期:Z2=2004年までの貸与予定年用列数: */
4 /* Z3,X3=全列数:V2=作業服Aの貸与始期:V3=Bの貸与始期:V4=Cの貸与始期: */
5 /* X1〜X6=FOR NEXT:V7,X7=現在貸与期間:V8=貸与予定表の先頭年号:V9,X9=改正貸与期間 */
6 /*********************************************************************************/
7 FOR X1=1 TO BINDER("基本台帳");
8 G;基本台帳/%X1;
9 FOR X2=H TO T;
10 G;基本台帳/%X1; LET V10=[%X2,1];IF V10="" THEN CONTINUE;
11 CS;基本台帳/%X1;@No =%V10;;;AAA/D;
12 SORT;M;4;A/N;;;LET V1=[H,4];LET Z1=VAL(V1);
13 G;AAA/%X1;DR;2/T;;
14 LET Z2=2004-Z1+1;LET Z3=Z2+4;IC;D;N;6*%Z2;ESC;NUM;;R;2;7;%Z1;;
15 LET V2=[4 ,4];LET V3=[5,4];LET V4=[6,4];
16 LET [4 ,@%V2 ]="◎";LET [5 ,@%V3 ]="◎";LET [6 ,@%V4 ]="◎";
17 FOR X3=7 TO %Z3; /*初期値5は、貸与予定年の先頭列の列番*/
18 FOR X4=H TO T;
19 LET V7=[X4,5];LET X7=VAL(V7);
20 IF [X4,X3]="○" & X3=(CN("@2002")) THEN CONTINUE;
21 IF [X4,X3]<>"" THEN LET [X4,X3+X7]="○";
22 NEXT;
23 NEXT;
24 DC;7,%(CN("@2000"));;IC;D;N;6*6;ESC; /*%(CN("@2000"))=項目名2000の列番*/
25 LET V8=[2,7];NUM;;R;2;7;%V8;;
26 FOR X5=%(CN("@2002")) TO 12; /*初期値は%(CN("@2002"))=基準年の列番8*/
27 FOR X6=H TO T;
28 LET V9=[X6,6];LET X9=VAL(V9);
29 IF [X6,X5]<>"" THEN LET [X6,X5+X9]="●"
30 NEXT;
31 NEXT;CT;No1 2002年貸与予定表;P;2002年貸与予定表/N;
32 NEXT;
33 NEXT;
34 STOP
35 <TAIYO2>
36 FOR X1=1 TO BINDER("2002年貸与予定表");
37 G;2002年貸与予定表/%X1;DC;7,10;;
38 LET V1=[2,7];IC;D;N;6*4;ESC;NUM;;R;2;7;%V1;;
39 FOR X2=7 TO 12;
40 FOR X3=H TO T;
41 LET V4=[X3,6];LET X4=VAL(V4);
42 IF [X3,X2]<>"" THEN LET [X3,X2+X4]="●"
43 NEXT;
44 NEXT;CT;No2 2006年貸与予定表;P;2006年貸与予定表/N;
45 NEXT;
46 STOP
以下、太字の数字はプログラムの行番です。
<TAIYO1>
(7〜16)
基本台帳から最初の1001を検索し、作業バインダーAAAに保存、貸与始期列をA/N順にSORT、最古年V1求め、再度AAAを呼び出し、最終予定年を2004年とし、予定年列数Z2、全列数Z3を算出。2図のような頭部(6列目まで)を作成、1993年から2004年までの列を追加、FOR NEXTで始期年該当列に◎印を付けた基本表を(2図)を作成。
2図
(17〜23)
この表に、現在の貸与期間毎に、FOR NEXTで○印を付け、社員Aの基本表完成。プログラムの20行で項目名2002の列に○があるときは、以後に○を付けません。
(24〜33)
基本表の7列から項目名2000の列番[%(CN("@2000"))]までを削除し、最終列に6桁4列を追加、先頭予定列項目名(2001)からナンバリング。%(CN("@2000"))は、最古始期年が1993の時、14列ですが、最古始期年が変われば、変わります。
FOR NEXTで、項目名2002の列番[%(CN("@2002"))=14に○のある列をチェックし、あれば(スペースでなければ)、改正貸与期間毎に●印を付けます。
3図
2002年貸与予定表バインダーに逐次ページ毎に、保存します。
3図 2002年貸与予定表
4図 2006年 貸与予定表
<TAIYO2>
(36〜45)
FOR NEXT で2002年 貸与予定表から2002年貸与予定表を呼び出し、トップの年号を記憶し、7列から10列までを削除、新たに6桁、4列を追加、年号を記入、FOR NEXTで●をチェックし、あれば改正貸与期間後に●を記入し、2006年貸与予定表バインダーに逐次、登録します。
<TAIYO3> 2002の個人別貸与予定表
1 <TAIYO3>
2 FOR X1=1 TO BINDER("2002年貸与予定表");
3 G;2002年貸与予定表/%X1;DC;5,6/15,T;;DRL;A;
4 IF 1=%X1MOD6 THEN GOTO $NP;GOTO $GO;
5 $NP: P;2002個人別貸与予定表/N;CONTINUE;
6 $GO: S;G;2002個人別貸与予定表/E;CPR;S1,E;E+1;P;*;
7 NEXT;
8 STOP
2002年貸与予定表1ページを呼び出し、不要列を削除、全罫線を引いて2002年個人別貸与予定表バインダーに保存、次のページも同様に加工して、前表の下に追加します。1ページの下に6名分の予定表を追加します。5図
5図 2002年 個人別貸与予定表
<TAIYO3>の2002を全部2006に書き換えれば、下図の表を作成するプログラムが出来ます。
6図 2006年 個人別貸与予定表
<TAIYO3>の2002を全部2006に書き換えれば使えます。
□
|
|
|