一部の C プログラムを呼び出してテキスト編集を行う perl アプリケーションの問題をデバッグしようとしています。
BATCH_JV_CSH_MAX は、金額フィールドの最大値をテストするために使用されます。現在、金額が 99,999,999.99 を超えるとエラーが表示されます。999,999,999.99 までの値を受け入れることになっています。とにかく、それはドキュメントに記載されていることです。
これはインクルードファイルにあります:
#define PROJ_SZ 6
#define REF_SZ 9
#define DESC_SZ 22
#define TRAN_AMT_MAX 9999999999e0
#define BATCH_AMT_MAX 9999999999e0
#define BATCH_JV_CSH_MAX 99999999999e0
#define BATCH_CNT_MAX 99999
プログラムがどのように機能するかはまだわかりません。おそらく、数値以外の値を取り除き、文字を連結します。続行する前に、金額の末尾にある「e0」の意味を知りたいです。このグループに質問する前に、Safari でいくつかの C プログラミングの本をテキスト検索しました。
この値はエラー メッセージに出力されるため、'999999999' は 1e9 よりも意味があります。
値は次のように使用されます。
/* Batch total amount 1 - debit dollars */
/* Check for overflow */
if (fabs(get_tot_amt1()) > BATCH_JV_CSH_MAX)
{
fprintf(stderr, "\n*** Error: Transaction debit amount overflow\n");
fprintf(stderr, "\n*** Maximum expected: %.0f\n",
BATCH_JV_CSH_MAX);
return (FALSE);
}
sprintf(in_batch_sum.batch_debit_amt, "%011.0f", get_tot_amt1());
get_tot_amt1() は、別の C プログラムで計算された値 tot_amt1 を取得します。「スタティックダブル」です。
うん、やるべき仕事がたくさんある。これは、スペースで区切られたレコードを読み取り、固定形式のレコードを書き出すプロセスの一部です。
ありがとう。キャシー