新規投稿 記事一覧 ホーム
●ご利用方法,ご利用に際しての規約はこちらをお読みください。
こちらからの投稿は、先頭に表示されているコメントへの返信になります。
RE:CLプログラムでのデータ転送 kazu さん [ 12月17日(月) 12時58分 ]

    > ユーザー名をメンバーとするファイルであっても
    > OVRDBF すれば可能ですが、それよりも
    > CLP でデータ転送とありますが CLP で
    > ダウンロードするという意味でしょうか ?
    > それとも別のSystem i に転送するということでしょうか ?

    説明不足で申し訳ありません。
    下記の通りにデータ転送(AS→PC)を行いますが、
    転送前にTTOファイルの内容(転送元ファイルのメンバー)を
    変更することは出来ないのでしょうか?


    PGM
      STRPCO
      MONMSG MSGID(IWS4010)
     
      STRPCCMD   PCCMD('PCSFT5.EXE "C:\PROGRAM FILES\PERSONAL +
                        COMMUNICATIONS\PRIVATE\ABCD.TTO"') +
                        PAUSE(*NO)
    ENDPGM

    RE:CLプログラムでのデータ転送 IKD さん [ 12月17日(月) 15時11分 ]

      直接的にはできません。

      このプログラムはSystem i サーバー側で実行され、
      ABCD.TTO は PCクライアント側にあるわけですから
      このプログラム(CLP)で ABCD.TTO を変更することはできません。
      やるとすれば、ABCD.TTO 自体を System i 側でユーザーー名を
      含んだ形のものを自動生成してから ABCD.TTO をダウンロードして
      から ABCD.TTO を指定したダウンロードを行うことになります。

      しかし、この方法はかなり面倒なので
      System i 側でメンバー別のファイルを別の QTEMP上のファイルに
      コピーしてからダウンロードするようにすれば
      ABCD.TTO には依存する必要がなりなりますので
      ご希望の機能を簡単に実現することができます。
      例えば このCLP内で、

        CPYF MYLIB/MYFILE TOFILE(QTEMP/MYFILE) FROMMBR(USER) MBROPT(*REPLACE) CRTFILE(*YES)

      とすれば、QTEMP 上にメンバーが異なっても同じファイル QTEMP/MYFILE が
      生成されます。
      この QTEMP/MYFILE をダウンロードする .TTO を指定するようにすればよいでしょう。

      RE:CLプログラムでのデータ転送 kazu さん [ 12月17日(月) 15時33分 ]

        > 直接的にはできません。
        > 
        > このプログラムはSystem i サーバー側で実行され、
        > ABCD.TTO は PCクライアント側にあるわけですから
        > このプログラム(CLP)で ABCD.TTO を変更することはできません。
        > やるとすれば、ABCD.TTO 自体を System i 側でユーザーー名を
        > 含んだ形のものを自動生成してから ABCD.TTO をダウンロードして
        > から ABCD.TTO を指定したダウンロードを行うことになります。
        > 
        > しかし、この方法はかなり面倒なので
        > System i 側でメンバー別のファイルを別の QTEMP上のファイルに
        > コピーしてからダウンロードするようにすれば
        > ABCD.TTO には依存する必要がなりなりますので
        > ご希望の機能を簡単に実現することができます。
        > 例えば このCLP内で、
        > 
        >   CPYF MYLIB/MYFILE TOFILE(QTEMP/MYFILE) FROMMBR(USER) MBROPT(*REPLACE) CRTFILE
        (*YES)
        > 
        > とすれば、QTEMP 上にメンバーが異なっても同じファイル QTEMP/MYFILE が
        > 生成されます。
        > この QTEMP/MYFILE をダウンロードする .TTO を指定するようにすればよいでしょう。
        > 

        ご返答ありがとうございます。

        QTEMPのファイルがデータ転送出来ない事と、
        転送先のファイル(.xls)を変更後にAS/400へ取り込む時もメンバー指定出来れば
        排他制御を考えなくていい事が理由で、前述の通りの処理を試みています。

        ABCD.TTOの中身を別のアプリケーションで変更するしかないでしょうかね。

        RE:CLプログラムでのデータ転送 IKD さん [ 12月17日(月) 17時15分 ]

          QGPL や QGPLTEMP を使って、ただし複数のほかのユーザーと
          バッティングしないように ALCOBJ *EXCLUDE で他のユーザーからの
          使用を一時的に排他制御してはどうでしょうか ?。

    TTO を 作成 FG さん [ 12月17日(月) 22時35分 ]

      動的ダウロードと呼ばれてる。
      TTO を PC側で作る。
      その為に必要な情報は、ASが提示する。
      ライブラリー名 ファイル名 メンバー名。

      EXEは必要です。
      PC側のプログラムができないと無理です。

      RE:TTO を 作成 kazu さん [ 12月18日(火) 23時5分 ]

        > 動的ダウロードと呼ばれてる。
        > TTO を PC側で作る。
        > その為に必要な情報は、ASが提示する。
        > ライブラリー名 ファイル名 メンバー名。
        > 
        > EXEは必要です。
        > PC側のプログラムができないと無理です。
        > 

        ご返信ありがとうございます。

        データ転送(PCSFT5)で.TTOを作成後、
        .TTOの内容を変更する.BATを作成し、
        CLで.BATを実行する時に変数(&USER)を渡して処理する事にしました。

        RE:TTO を 作成 FG さん [ 12月20日(木) 13時46分 ]

          DELPHI での 例。
           OUTLABEL := DriveName + ':' + DirName + '\XXXX00.TTO'  ;
                   ASSIGNFILE(OUTPUT ,OUTLABEL ) ;
                   REWRITE (OUTPUT) ;
                   WRITELN (OUTPUT , '[Profile]' ) ;
                   WRITELN (OUTPUT , 'TRTOPC' ) ;
                   WRITELN (OUTPUT , 'Description=' ) ;
                   WRITELN (OUTPUT , 'FROM        ' + PARAM01 + '/'  + PARAM02 ) ;
                   WRITELN (OUTPUT , 'SELECT      *' ) ;
                   WRITELN (OUTPUT , 'WHERE' ) ;
                   WRITELN (OUTPUT , 'ORDER BY' ) ; 

お名前
パスワード
e-mailアドレス
タイトル
ホームページ
アドレス