過去の桐井戸端BBS (桐ver.8)
13712 一括処理で任意のファイルをコピーしたい。 YATA 2001/10/26-10:39
今、コンピュータのドライブ上にある画像ファイルを任意に選んだ物のみFDに書き出そうと、あれこれやってますが、うまくできません。
どうかご指導下さいますようお願いします。

項目は全部で10項目あります。( C1〜C10 )この中は、常に全ての項目が入っているわけではありません。
つまり任意の(毎回違う)項目のみ山田011025.BMPのように・・・)ファイル名が入っていて、それ意外は空白になっています。
それを(任意の画像ファイルを)一括処理でFDにコピーを書き出したいのですが、
複写どころかFDのランプすら光りません。一生懸命考えたものが以下のものです。 
(おそまつですが・・・)

変数宣言 固有,整数 { &回数FD }
変数宣言 固有,文字列 { &ファイル名[10] = {[C1],[C2],[C3],[C4],[C5],[C6],[C7],[C8],[C9],[C10]}}

表 "データ取依頼.tbl"
 繰り返し &回数FD = 1,10
条件 (#L( ( &ファイル名[&回数FD]) ) = 0 ) ジャンプ 行番号 7
  ファイル複写 "C:\My Documents\DATA取依頼物件\波形画像データ\&ファイル名[&回数FD]" , "A:\"
メッセージボックス &ファイル名[&回数FD]
繰り返し終了

かなり手探りです。ベテランの方には理解できない考え方かもしれません。
ちなみに条件行は、各項目C1〜C10まで順番にチェックを入れて「""」空白だったら、ファイル複写を飛ばせるかな〜と思って入れてみました。
(行番号7はメッセージボックスのラインです。)
又、メッセージボックスは具体的な意味はないのですが、一連のルーチンの中で、
本当に文字列変数のファイル名が随時変わり正しくなっているかドライブ内の画像ファイル名と比較するために、その時点での表示をしています。
この一括処理がokとなれば消すつもりです。
ただ、メッセージボックスでokボタン待ちなのでクリックするのですが、
FDのアクセスランプが全く点灯しないので「ファイル複写」の行は全く無視されている印象があります。

13713 Re:任意ファイルのコピー操作について教えてください。 toshi-chan 2001/10/26-13:07
記事番号13712へのコメント
YATA さん、こんにちは。

ファイル複写コマンドでは、終了状態を変数に取得できます。
エラー番号が変数に代入されるわけです。
正常終了した場合は「0」が代入されます。
一括処理にこのパラメータを追加して、変数値をチェックして対策を考えてください。

私の場合、複写元ファイル名の記述がまずいため、
  「桐がそのファイルを探しに行っても見つからない」
というケースがよくあります。この場合のエラー番号は「102」です。
桐はファイル複写コマンドを実行しているのですが、ファィルが見つからないために、
  「フロッピーディスクへファイルを複写する動作そのもの」
は行われていないのでしょう。それでアクセスランプが点かず、コマンドが無視されているように見えるわけです。
13714 Re:任意ファイルのコピー操作について教えてください。 アックン 2001/10/26-15:49
記事番号13712へのコメント
YATAさん、こんにちは。
一括処理をこんなふうにされてはどうでしょう。
ちょっと項目名を小文字に変えて書いてます。

**----------
表 "データ取依頼.tbl" /* 実際にはこの行が変数宣言より先にあるはずです。 */
変数宣言 固有,整数 { &回数FD }
変数宣言 固有,文字列{ &ファイル名[10]=\
             { [C1],[C2],[C3],[C4],[C5],[C6],[C7],[C8],[C9],[C10] } }
繰り返し &回数FD=1,10
   条件( &ファイル名[&回数FD] ) ファイル複写 \
  "C:\My Documents\DATA取依頼物件\波形画像データ\"+&ファイル名[&回数FD] ,\
  "A:\"
   メッセージボックス "C"+#str(&回数FD) , &ファイル名[&回数FD]
繰り返し終了
**----------

ファイルコピーできない原因は、ファイル複写コマンドの<複写元ファイル名>のミスです。
上記のように、文字列と変数名を連結すればいいですよ。

アックン(=^・^=)
13715 有難うございました.もう一つ教えてください。 YATA 2001/10/26-16:35
記事番号13714へのコメント
toshi-chanさん有難うございました.終了状態を表示したら言われた通り102のエラーが返ってました・・・・
アックンさん有難うございました。上記102エラーはアックンさんの内容に変更することでクリヤーされました。
お涙頂戴物です トホホ・・・
すいません。もう一つ教えていただけないでしょうか・・・・この一括処理はアクティブになっている行に対して行われますが、
これを選択されている行全てに対して行うにはどのような命令を加えたらよろしいのでしょうか・・・

YATA

13716 Re:有難うございました.もう一つ教えてください。 アックン 2001/10/26-20:23
記事番号13715へのコメント
こんばんは。
通常、一括処理では変数宣言を先頭でしますが、YATAさんの変数宣言をそのまま使うとしたら、以下のように途中で使ってもいいと思います。

表を1行ジャンプする度に、その行の項目値[C1]〜[C10]を変数にいっきに代入してます。


表 "・・・.tbl"
変数宣言 固有,整数 { &回数FD }
絞り込み 会話,指定行,終了状態=&秒 /* ←この行は会話で絞り込みます。 絞り込んだ瞬間に処理行が先頭行になります。*/
繰り返し ( .not#EOF )
   繰り返し &回数FD=1,10
      変数宣言 固有,文字列{ &ファイル名[10]={[C1],[C2],[C3],[C4],[C5],[C6],[C7],[C8],[C9],[C10] } }
      条件( &ファイル名[&回数FD] ) ファイル複写 "・・・\"+&ファイル名[&回数FD] , "・・・"
      メッセージボックス "C"+#str(&回数FD) , &ファイル名[&回数FD]
   繰り返し終了
   ジャンプ 行番号=+1
繰り返し終了

説明:終端行になるまで処理行を1行ずつジャンプする仕組みをどうやって実現するかというと。
「ジャンプ 行番号=+1」(または「ジャンプ 行番号=次行」)で、表の処理行を次の行にジャンプさせます。
「繰り返し ( .not#EOF )」で、終端行になるまで繰り返します。(#EOFは#終端行のことです。)

アックン(=^・^=)
13719 Re:もう一つ アックン 2001/10/27-08:52
記事番号13716へのコメント
もうひとつ、変数宣言と代入の一般的な使い方を。
以下、前回紹介の一括処理に変更を加えます。

表を開く前に変数宣言しておきます。

変数宣言 固有,文字列{ &ファイル名[10] }
>表 "・・・.tbl"
 : 

>   繰り返し &回数FD=1,10
>      変数宣言 固有,文字列{ &ファイル名[10]={[C1],[C2],[C3],[C4],[C5],[C6],[C7],[C8],[C9],[C10] } }

この変数宣言の行を次のように変えます。
                   &ファイル名 = { [C1],[C2],[C3],[C4],[C5],[C6],[C7],[C8],[C9],[C10] }


すでにこうしてるかもしれませんね。(^^;
私はYATAさんの配列変数をいっきに使う大胆な発想と、細緻な使い方もできる柔軟性に好感を持ちました。
繰り返しなどの実行制御は、必要に応じてひとつひとつ覚えていけるものです。
がんばってください。

アックン(=^・^=)
13731 Re:もう一つ YATA 2001/10/28-18:31
記事番号13719へのコメント
アックンさん本当に有難うございました。
桐は会社でつかっているのですが、その昔DOS時代は私たち地方の営業所ではスタンダードだったのに
今では本屋へいって「データベース」の欄にいっても「アクセス」ばかり・・・・(^_^;)
その当時は、あまり触っておらず。
実はわたしも、最近まで「アクセス」を少しだけ、かじったのですが集計はエクセル
データベースは「アクセス」と色分けがはっきりしている中
「桐」は、その中間をよい形で動いているように思えます。
今回、「桐」を購入してその優位性を一人アピールしている人間です。
がんばります。

戻る