過去の桐井戸端BBS (桐ver.9) |
26630 | 桐のデータを固定長ファイルに出力したい | 脱初級! | 2004/06/08-11:19 |
桐データを固定長のファイルに出力する方法について教えて下さい。 桐では、項目を選んでK3形式のファイルに出力し、可変長のファイルに出力するのは簡単なのですが、 固定長に出力する場合、項目によってゼロ埋めしたい場合と半角スペースを埋めたい場合があり、 うまく方法が思いつきません。 例えば、下記のような表の場合、どうやって固定長ファイルを作成すればよいでしょうか? ご教授よろしくお願い申し上げます。 桐表: 項目名 桁数 データ型 固定長での0の扱い コード 9桁 文字列 0埋めする 枝番 1桁 文字列 半角空白 DBコード 12桁 文字列 0埋めする 価格 9桁 文字列 0埋めする 符合 1桁 文字列 半角空白 ※レコード長は、9+1+12+9+1=32byte(半角英数字)で、テキストデータで出力します。 データの例 S100100011____________000050000_ →アンダースコアの部分は半角空白の意味です。 よろしくお願い申し上げます。 | |||
26631 | Re:固定長ファイルに出力したい | 宮城 | 2004/06/08-12:04 |
記事番号26630へのコメント 脱初級!さん、こんにちは。 「半角空白(埋め?)ってのがこの例では1桁ずつしか登場しない のがなんか変ですが、要は32桁のテキストなり CSVを作ればいいだけのこと。 数値なら「#文字列」で事足りますが、たぶん英数まじりということでしょうから、 任意桁数の[コード]を0埋めした9桁にする関数書いときます。 #複写("0",9-#文字数([コード]))+[コード] [コード]がもし数値なら#文字列で変換します。半角空白埋めは"0"を" "に変えるだけ。 | |||
26633 | Re:固定長ファイルに出力したい | 脱初級! | 2004/06/08-12:27 |
記事番号26631へのコメント 早速のレス、ありがとうございます。 >数値なら「#文字列」で事足りますが、たぶん英数まじりというこ >とでしょうから、任意桁数の[コード]を0埋めした9桁にする関数 >書いときます。 > >#複写("0",9-#文字数([コード]))+[コード] > >[コード]がもし数値なら#文字列で変換します。半角空白埋めは >"0"を" "に変えるだけ。 この場合、やはり別途項目を作成して、上記の計算式を入れて文字列データを作り、出力する、という流れになりますでしょうか? | |||
26635 | Re:固定長ファイルに出力したい | ONnoji | 2004/06/08-12:36 |
記事番号26630へのコメント 脱初級!さん、こんにちは。 印字コマンドで固定長ファイルは簡単に作れますよ。 一応変数に入れるとして、 &code = #右側文字列( #複写( "0", 9 ) + #trim( [コード], 3 ),-9 ) &db = #右側文字列( #複写( "_", 12 ) + #trim( [DBコード], 3 ),-12 ) &price = #右側文字列( #複写( "0", 9 ) + #trim( [価格], 3 ),-9 ) で、印字コマンドで 印字 &code," ",&db,&price," ",_13,_10, という感じです。 もう少し具体的には… *-------------------* 変数宣言 文字列{&code, &db, &price } 印字開始 "○×△.txt" 表 "○×△.tbl" ジャンプ 行番号 = 先頭 繰り返し ( .not #終端行 ) &code = #右側文字列( #複写( "0", 9 ) + #trim([コード], 3 ),-9 ) &db = #右側文字列( #複写( "_", 12 ) + #trim( [DBコード], 3),-12 ) &price = #右側文字列( #複写( "0", 9 ) + #trim([価格],3 ),-9 ) 印字 &code," ",&db,&price," ",_13,_10, ジャンプ 行番号 = 次行 繰り返し終了 印字終了 *-------------------* こんな感じでしょうか。 外していたらすいません。 | |||
26636 | Re:固定長ファイルに出力したい | うにん | 2004/06/08-12:36 |
記事番号26633へのコメント >この場合、やはり別途項目を作成して、上記の計算式を入れて文字列データ >を作り、出力する、という流れになりますでしょうか? 改行なしの固定長ならどっちみち加工が必要になるので、全部印字コマンドでやってしまう手もあります。それなら項目追加はいりません。 | |||
26637 | Re:固定長ファイルに出力したい | 脱初級! | 2004/06/08-12:54 |
記事番号26635へのコメント ONnoji様、大変丁寧に解説をいただき、ありがとうございました。 大変、参考になりました。 印字コマンドでやってみます。 ありがとうございました。 |