0

フィールドに対して Mod 式を実行しようとすると問題が発生します。「文字列は数値ではありません」というエラーが表示され続け、これまでのところ ToNumber を取得してフィールドを正しくフォーマットできませんでした。フィールドは、静的な値とパディングされた 3 つのフィールドを追加することによって生成されています。どんな助けでも大歓迎です。


フィールドとパッドを組み合わせる

StringVar strMICR;
StringVar strMICRLINE;


strMICRLINE := Chr(13) & "0603250694";
strMICRLINE := strMICRLINE & Right("000000" & Trim(Split({CUST.C_ID_ALPHA},"-")[1]),6);
strMICRLINE := strMICRLINE & Right("00000000" & ToText({STMT.STMT_NUMBER},0,""),8);
strMICRLINE := strMICRLINE & Right("0000000000" & Replace(ToText({@Total},2,""),".",""),10);


//Uncomment below to test Mod10 Check-digit
//strMICR := mod10("0603250694084469108961440000127874");

//IF NumericText (strMICRLINE) 
//THEN ToNumber (strMICRLINE);

Mod10 (strMICRLINE);

MOD10 関数

Function (StringVar input_number)

input_number := replace(input_number, " ", "");

numbervar i := length(input_number);
numbervar sum_val := 0;

stringvar position := "odd";

do (
    if position = "odd" then (
        sum_val := sum_val + 3*tonumber(input_number[i]);
        position := "even" )
    else (
        sum_val := sum_val + tonumber(input_number[i]);
        position := "odd" )
    ;

    i := i-1
)  while i > 0;

numbervar remainder_val := Remainder(sum_val, 10);

numbervar check_digit := if remainder_val = 0 then 0 else (10-remainder_val) ;

input_number + ToText(check_digit, 0)
4

1 に答える 1