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

    ユーザーIDをメンバーとしたファイルのデータをCLプログラムでメンバー指定で(処理してい
    るユーザーID分のみ)データ転送したいのですが、可能でしょうか?

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

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

      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アドレス
タイトル
ホームページ
アドレス