過去の桐井戸端BBS (桐ver.7)
25223 桐ver7.1の一括処理で[日記表題].txtとなるように1レコードづつ書き出したい かずえもん 2004/03/04-10:31
桐ver7.1を使っています。
行き詰まっております、どなたかお教え下さい。
[日記表題]という項目名で入力した文字、
例えば、「山」・「湖」・「川」・「花」などを、
「書き出し テキスト」コマンドで「山.txt」「湖.txt」「川.txt」「花.txt」というように、
つまり、[日記表題].txtとなるように、
一括処理で、1レコードづつ書き出したいのですが可能でしょうか?
宜しくお願いします。
25226 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが 宮城 2004/03/04-14:33
記事番号25223へのコメント
かずえもんさん、こんにちは。

表に限らずファイル名は変数で扱うことができます。
それから、全行について処理させるには、先頭行に位置させ、書き出しのような処理をさせた後、
次の行に移る。
これを最終行まで繰り返せばいいわけです。

ということでこんなかんじ。

ジャンプ 行番号=先頭行
繰り返し(.not #終端行)
 &ファイル名=[日記表題]+".txt"
 書き出し テキスト,&ファイル名,(・・・この行以下略)
 ジャンプ 行番号=次行
繰り返し終了

表を開いておくことと、変数を定義しておくのが前提です。

25228 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが かずえもん 2004/03/04-17:21
記事番号25226へのコメント
宮城様 こんにちは。
出来ました! 早速のご教授ありがとうございます。
なにぶん超初心者に近い状態なもので悪戦苦闘しておりまして、
大変助かりました。
甘えついでに、もう一つお教え頂きたいのですが…。

>書き出し テキスト,&ファイル名,(・・・この行以下略)
の箇所で、

他のドライブのフォルダ、
例えば、Dドライブの中のaaaというフォルダの中に書き出したいのですが、
(当方の桐はCドライブにあります)方法はありますでしょうか?
ちなみに、
書き出し テキスト,"D:\aaa\&日記表題" としましたら
Dドライブのaaaフォルダに、 &日記表題.txtというファイルが一つ出来ただけで大失敗でした。
(これでは多分ダメだろうと思っていましたが)
申し訳ありません、お手数おかけしますが宜しくお願いします。
25233 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが 佐田 守弘 2004/03/04-18:13
記事番号25223へのコメント
かずえもんさん
[日記表題]の値がユニーク値であるとの前提で話を進めます。
もし同じ値がある場合には、ちょっと処理が面倒になるので、後ろに枝番を漬けるなりしておいて下さい。

表 日記
繰り返し (.not #終端行)
 印字開始 [印字表題]+".txt"
  印字 [記事]      ← 日記本文の項目
 印字終了
 ジャンプ 行番号=+1
繰り返し終了

なお、動作テストはしておりません。

佐田守弘(KS-00119)
25235 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが 宮城 2004/03/04-18:23
記事番号25228へのコメント
>書き出し テキスト,"D:\aaa\&日記表題" としましたら
>Dドライブのaaaフォルダに、 &日記表題.txtというファイルが一つ出来ただけで大失

"D:\aaa\&日記表題"の部分にはファイル名を記述します。
この場合テキスト書き出しですので、桐が勝手に「.txt」を補ってファイルがひとつ書き出されたというわけです。
パス部分も変数に入れてしまえばいいので、

&ファイル名="D:\aaa\&日記表題\"+[日記表題]+".txt"

こう書けばいいはずです。

25243 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが かずえもん 2004/03/04-22:17
記事番号25235へのコメント
宮城様。こんばんは、何度もありがとうございます。

>&ファイル名="D:\aaa\&日記表題\"+[日記表題]+".txt"
↑(KD1103:ファイル名の形式に誤りがあります)というエラーが出まして、
&ファイル名="D:\aaa\"+[日記表題]+".txt"
としましたら、
D:\aaa\「山.txt」 D:\aaa\「湖.txt」と、
エラーが出ずファイル名の書き出しは一応うまくいきましたが、
「山.txt」・「湖.txt」の各ファイルの中身は、
「山」のデータと「湖」のデータが二つ入っておりました。
つまり、データの1行ごとの書き出していないようです。
-----------------------------------------------------------
ジャンプ 行番号=先頭行
繰り返し(.not #終端行)
 &ファイル名=[日記表題]+".txt"
 書き出し テキスト,&ファイル名
 ジャンプ 行番号=次行
繰り返し終了
-----------------------------------------------------------
お教え頂きました↑は、うまくいきましたが…。

↓は、どこか不具合があるのでしょうか?
-----------------------------------------------------------
ジャンプ 行番号=先頭行
繰り返し(.not #終端行)
 &ファイル名="D:\aaa\"+[日記表題]+".txt"
 書き出し テキスト,&ファイル名
 ジャンプ 行番号=次行
繰り返し終了
-----------------------------------------------------------
私の書き間違い・操作間違いも充分あると思いますが、
何度も誠に申し訳ありません、宜しくお願いします。

追伸:
佐田様がお書きなったコマンドで全てうまくいきましたが、
宮城様のお書きなったコマンドでも、もう少し勉強したいと思いますので
どうぞ宜しくお願いします。


25244 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが かずえもん 2004/03/04-22:33
記事番号25233へのコメント
佐田様。こんばんは。
お陰様で一気に解決しました。ありがとうございます。

宮城様の「変数」とか、佐田様の「印字」とか、
思考がすべてストップして、頭のなかが真っ白になっています。
(順に勉強していこうと思っています)

余談になりますが、
大きな本屋さんに行っても「桐」の本は本当にないですね。
「桐井戸端BBS」があり大変助かりました。
また、何かありましたらどうぞ宜しくお願いします。

25246 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが 宮城 2004/03/05-00:13
記事番号25243へのコメント
ちょっと軽率だったようです。
あれではファイル名の違った、全レコードを含むテキストをせっせと吐き出してしまう。たはは・・・。

>>&ファイル名="D:\aaa\&日記表題\"+[日記表題]+".txt"
>↑(KD1103:ファイル名の形式に誤りがあります)というエラーが出まして、

これは「aaa」に「日記表題」というフォルダがないよということです。さて、

>ジャンプ 行番号=先頭行
>繰り返し(.not #終端行)
> &ファイル名="D:\aaa\"+[日記表題]+".txt"
> 書き出し テキスト,&ファイル名
> ジャンプ 行番号=次行
>繰り返し終了

をどう直すかですが、1レコードごとにそのレコードだけに絞り込み、絞り込み解除したとき、
元のレコード位置をどう維持するかがポイントになります。

# 絞り込み解除後、あはれ処理対象業は先頭レコードに戻ってしまうので。

オールドファッション(時代遅れともいう)風にいくと、レコード位置制御用テーブルを書き出してしまいます。

書き出し 表,"control.tbl",{[日記表題]}
表 "control.tbl"
ジャンプ 行番号=先頭行
繰り返し(.not #終端行)
 &ファイル名="D:\aaa\"+[日記表題]+".txt"
 &日記表題=[日記表題]
 編集表 (親玉の表)
 絞り込み [日記表題]{&日記表題}
 書き出し テキスト,&ファイル名,(・・・この行以下略)
 絞り込み解除
 編集表 "control.tbl"
 ジャンプ 行番号=次行
繰り返し終了

表を随時使い分けながら作業するとできることは飛躍的に拡がりますので、
あえて書いてみました。[日記表題]の値にだぶりがないことが条件ですが、
テストまではしていません。

「行マーク」なんてのがありますから、今時なら本命はこっちかな。

ジャンプ 行番号=先頭行
繰り返し(.not #終端行)
 &ファイル名="D:\aaa\"+[日記表題]+".txt"
 行マーク定義 1
 絞り込み [日記表題]{&日記表題}
 書き出し テキスト,&ファイル名,(・・・この行以下略)
 絞り込み解除
 ジャンプ 行マーク=1
 行マーク解除 1
 ジャンプ 行番号=次行
繰り返し終了

これもテストはしていません。

25280 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが かずえもん 2004/03/06-00:02
記事番号25246へのコメント
宮城様 こんばんは。

>「行マーク」なんてのがありますから、今時なら本命はこっちかな。
>
>ジャンプ 行番号=先頭行
>繰り返し(.not #終端行)
> &ファイル名="D:\aaa\"+[日記表題]+".txt"
> 行マーク定義 1
> 絞り込み [日記表題]{&日記表題}
> 書き出し テキスト,&ファイル名,(・・・この行以下略)
> 絞り込み解除
> ジャンプ 行マーク=1
> 行マーク解除 1
> ジャンプ 行番号=次行
>繰り返し終了

こちらの方が、スッキリしていて、私なりに理解が出来、好きです。
いまさらなんですが、
人により、プログラム?というのは、
書き方が結構違うというのを再認識しました。(偉そうですみません)

実を言いますと、この続きになりますが、また悩んでおります。
自分なりに色々考えており、悪戦苦闘しております。
近々になるかもしれませんが、
どうしてもという時には又ご教授宜しくお願いします。

本当にありがとうございました。

25281 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが かずえもん 2004/03/06-02:35
記事番号25223へのコメント
申し訳ありません、やはりお教え下さい。
一括処理の本を読んでいたのですがやはりダメでした。

↓で、今やっております。
--------------------------------------------------------------
繰り返し (.not #終端行)
 印字開始 "D:\日記保存\"+[日記表題]+".txt"
  印字 [記事]
 印字終了
 ジャンプ 行番号=+1
繰り返し終了
--------------------------------------------------------------
各地で撮った色々な画像がありまして、
「D:\日記保存」内が、それらのファイルでごちゃごちゃになってしまいました。

「D:\日記保存」内に、例えば、「1」「2」「3」というフォルダをまた作成し、
「D:\日記保存\1」表の1行目のテキストが入る
「D:\日記保存\2」表の2行目のテキストが入る
「D:\日記保存\3」表の3行目のテキストが入る
というような具合にしたいのですが、可能でしょうか?

何度もあつかましくすみません。
宜しくお願いします。

25337 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが かずえもん 2004/03/09-20:53
記事番号25281へのコメント
--------------------------------------------------------------
繰り返し (.not #終端行)
 印字開始 "D:\日記保存\"+[日記表題]+".txt"
  印字 [記事]
 印字終了
 ジャンプ 行番号=+1
繰り返し終了
--------------------------------------------------------------
>印字開始 "D:\日記保存\"+[日記表題]+".txt"
の「"D:\日記保存\"」のところを、
表で「パス名」という項目を新たに加え、
印字開始 [パス名]+[日記表題]+".txt"
としましたら、出来ました。
難点は、最初からフォルダを作っておかなくてはいけない点でした。
(100行のデータがあれば100のフォルダを作る)
でもこれで随分楽になりました。
これから、日記の整理にかかります。
ありがとうございました。
25339 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが 悲しげ 2004/03/09-22:20
記事番号25337へのコメント
どもっ、かずえもんさん、1点だけコメントします。

>難点は、最初からフォルダを作っておかなくてはいけない点でした。
>(100行のデータがあれば100のフォルダを作る)

「フォルダ作成」と云うコマンドが、確かVer.7にもあったと思います。
これを利用できるかもしれませんよ。
例えば「印字開始」コマンドの直前辺りに。(挙動未確認ですが)

25398 Re:桐ver7.1の一括処理で、[日記表題].txtとなるように1レコードづつ書き出したいのですが かずえもん 2004/03/11-19:46
記事番号25339へのコメント
こんばんは、悲しげ様。

今、大感激しております。
ヒントとゆうか、お知恵を頂き、出来ました!
大変感謝しております。
お教え頂きました、「フォルダ作成」と、
新たに「データパス名」コマンドを使いました。
「フォルダ作成」はそのフォルダの下のフォルダまでは作成されなくて、
「データパス名」でそのフォルダで作業をするようにしました。
(他に方法があると思いますが)

またお世話になるかもしれませんが、その時は宜しくお願いします。
ありがとうございました。

戻る