伝票番号の自動発生には、コントロール・レコードを作成して、これから1つづつ
連続番号をカウントアップする方法が見受けられる。
しかし、複数のユーザーの同時入力や、入力プログラムが途中でダウンしたような場合は、
コントロールの手修正が必要となる。
どのような不足の事態が発生しても、確実に次の番号を発生させる手段はないだろうか?
ここで紹介するサブルーチンは、データベースから最後の番号を読み取ってカウントアップする方法である。
0001.00 +C*( DENNO の自動発生 ) 0002.00 C EXSR HASEI 0003.00 +C*( CF12 )- 前画面 0004.00 C *IN12 IFEQ '1' CF12 0005.00 C SETOF 12 0006.00 C* 未使用の DMY-RECORD を削除 0007.00 C EXSR DMYDEL 0008.00 C GOTO START 0009.00 C END CF12 0010.00 C****************************************************** 0011.00 C HASEI BEGSR 0012.00 C****************************************************** 0013.00 C*( 伝票番号の自動発生 ) 0014.00 C*----------------------------------------------------* 0015.00 C*( ?FIELD : : 自動発生 | 0016.00 C*----------------------------------------------------* 0017.00 CSR DENNO IFEQ *BLANKS 0018.00 CSR DENNO OREQ *ZEROS 0019.00 CSR *HIVAL SETGTFILE 0020.00 CSR SETOF 50 0021.00 CSR READPFILE 50 0022.00 CSR 50 Z-ADD1 NXTNO 80 0023.00 CSRN50 MOVE DENNO NXTNO 0024.00 CSRN50 ADD 1 NXTNO 0025.00 CSR MOVE NXTNO DENNO 0026.00 C*( 複数同時入力用 DUMMY-RECORD 出力 ) 0027.00 C* 他の W/S から入力されると次の番号が与えられるように 0028.00 CSR MOVE *ZEROS GYO 0029.00 CSR *NOKEY CLEARFFILRCD 0030.00 C*----------------------------------------------------* 0031.00 C WRITEFILRCD | 0032.00 C*----------------------------------------------------* 0033.00 CSR END 0034.00 C* 0035.00 CSR HASEND ENDSR 0036.00 C****************************************************** 0037.00 C DMYDEL BEGSR 0038.00 C****************************************************** 0039.00 C*( 複数同時入力用 DUMMY-RECORD 削除 ) 0040.00 CSR MOVE DENNO DMY001 0041.00 CSR *LIKE DEFN DENNO DMY001 0042.00 CSR MOVE *ZEROS GYO 0043.00 CSR CLEARFILRCD 0044.00 CSR MOVE DMY001 DENNO 0045.00 C*----------------------------------------------------+ 0046.00 C DMYEQL KLIST | 0047.00 C KFLD DENNO | 0048.00 C KFLD GYO | 0049.00 C*----------------------------------------------------+ 0050.00 CSR DMTEQL SETLLFILE 0051.00 CSR DO *HIVAL 0052.00 CSR SETOF 50 0053.00 CSR DMYEQL READEFILE 50 0054.00 CSR 50 GOTO DELEND 0055.00 C*----------------------------------------------------* 0056.00 C DELETFILRCD | 0057.00 C*----------------------------------------------------* 0058.00 CSR END 0059.00 CSR DELEND TAG 0060.00 CSR MOVE DMY001 DENNO 0061.00 CSR ENDSR 0062.00 C***************************************************** 0063.00 C LRRTN BEGSR 0064.00 C***************************************************** 0065.00 C* 0066.00 CSR EXSR DMYDEL 0067.00 CSR LREND ENDSR ***************** データの終り ***************************