伝票番号の自動発生には、コントロール・レコードを作成して、これから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
***************** データの終り ***************************