sub Benri.NulltoZero(__tbl, __vars) //左右の無駄なスペース除去 let __vars = Trim('$(__vars)'); //スペースを1つにする let __x = Index('$(__vars)', ' ') ; do while __x > 0 let __x = Index('$(__vars)', ' ') ; let __vars = Replace('$(__vars)', ' ', ' '); loop set __x=; //変数の個数をスペースの個数を基に数える let __nVar = len('$(__vars)') - len(Replace('$(__vars)', ' ', '')) + 1 ; //処理用の各種文章 let __s1 = ''; let __s2 = ''; let __s3 = ''; let __s4 = ''; for __i=1 to $(__nVar) let __v = SubField('$(__vars)', ' ', $(__i)); let __s1 = '$(__s1), if(IsNull($(__v)), 0, $(__v)) as __$(__v)' ; //欠損値をゼロに埋めるための文章 let __s2 = '$(__s2), $(__v)' ; //ドロップ用 let __s3 = '$(__s3), __$(__v) as $(__v)' ; //一時名から元の名前にリネーム用の文章 let __s4 = '$(__s4), __$(__v)' ; //ドロップ用 next __i set __v=; //最初の不要なカンマを取る for __i=1 to 4 let __s$(__i) = mid('$(__s$(__i))', 2) ; next __i set __i=; set __nVar=; //欠損ゼロ埋め __temp: NoConcatenate load * , $(__s1) Resident $(__tbl) ; drop table $(__tbl); //元の変数削除 drop Fields $(__s2) from __temp ; //リネームして変数名を戻す $(__tbl): NoConcatenate load * , $(__s3) Resident __temp ; drop table __temp ; drop Fields $(__s4) from $(__tbl) ; set __s1=; set __s2=; set __s3=; set __s4=; end sub sub Benri.MyStore(__tbl) let __aaa = Left(DocumentName(), len(DocumentName())-4) ; store $(__tbl) into [c:\temp\$(__aaa)_$(__tbl).qvd](qvd) ; drop Table $(__tbl) ; set __aaa=; end sub sub Benri.MyLoad (__tbl) let __aaa = Left(DocumentName(), len(DocumentName())-4) ; $(__tbl): NoConcatenate load * from [c:\temp\$(__aaa)_$(__tbl).qvd](qvd) ; set __aaa=; end sub