【 質問箱 No.73 回答 】その2. ⇒⇒⇒⇒ 質問箱 No.73(98年3月号)の趣旨 質問者:西 村 重 幸 <職員の履歴管理表に行を追加したい の再質問> 回答者:高 橋 周 助 1 /* 第2案 シーケンシャルファイル処理風に */ 2 /* 西村さんは、こちらの方がお好みかもしれません */ 3 4 LET X1=9; LET X2=12; LET X3=8; /* 適用日 */ 5 LET X4=X1; LET X5= 4; LET X6=1; /* 対象期間の初日 */ 6 /***** B.『級号』欄にデータがある行のみを検索する。********************/ 7 CS;DATA;@級号 ="=*?";;;WK/D; IF RESULT(1)=0 THEN GOTO $終; 8 /***** C. 対象期間かどうか判断 **************************************/ 9 CLEAR V10,16; 10 FOR X11=BINDER("WK") TO 1 STEP -1; 11 G;WK/%X11; 12 FOR X12=T TO H STEP -1; 13 /****** C-A. 判断 *******************************************/ 14 LET V13=[X12,@級号 ]; IF V13="" THEN CONTINUE; 15 LET V14=[X12,@年 ]; LET V15=[X12,@月 ]; LET V16=[X12,@日 ]; 16 LET V10="期間前"; 17 IF VAL(V14)=X4 & VAL(V15)=X5 & VAL(V16)=X6 THEN LET V10="初日"; 18 IF VAL(V14)=X4 & VAL(V15)=X5 & VAL(V16)>X6 THEN LET V10="期間中"; 19 IF VAL(V14)=X4 & VAL(V15)>X5 THEN LET V10="期間中"; 20 IF VAL(V14)>X4 THEN LET V10="期間後"; 21 LET [X12,@事項 ]=V10; 22 IF V10="初日" THEN BREAK; 23 IF V10<>"期間前" THEN CONTINUE; 24 /****** C-B. 初日データの行がないので、作る。******************/ 25 LET [X12,@年 ]=NUM$(X4); LET [X12,@月 ]=NUM$(X5); 26 LET [X12,@日 ]=NUM$(X6); LET [X12,@事項 ]="初日"; BREAK; 27 NEXT; 28 P;WK/%X11; 29 IF V10="初日" OR V10="期間前" THEN BREAK; 30 NEXT; 31 /***** D. 新月額を書き込む。*****************************************/ 32 CS;WK;@事項 ="初日" OR "期間中";;;WK2/D; 33 IF RESULT(1)=0 THEN GOTO $終; 34 MPU;WK2;PAY9;@級号 ;;@級号 ;;S@月額 =@月額 ;E;Y; 35 /***** E. 事項・年・月・日 欄を書き替え。*******************************/ 36 FOR X11=1 TO BINDER("WK2"); 37 G;WK2/%X11; 38 FOR X12=H TO T; 39 LET V21=[X12,@年 ]+"年"+[X12,@月 ]+"月"+[X12,@日 ]+"日"; 40 LET [X12,@事項 ]="給与条例改定(平成"+V21+"から適用)"; 41 LET [X12,@年 ]=NUM$(X1); LET [X12,@月 ]=NUM$(X2); 42 LET [X12,@日 ]=NUM$(X3); 43 NEXT; 44 P;WK2/%X11; 45 NEXT; 46 /***** F. 元バインダへ アペンド ***************************************/ 47 APD;WK2;DATA;Y; 48 /***** Z. 終わり ****************************************************/ 49 $終:STOP;