新規投稿 記事一覧 ホーム
●ご利用方法,ご利用に際しての規約はこちらをお読みください。
こちらからの投稿は、先頭に表示されているコメントへの返信になります。
さん [ 1月1日(木) 9時0分 ]

    コマンド作成について ゆた さん [ 11月25日(金) 10時8分 ]

      コマンドについて質問です。
      PDMの画面からタイプCMDのソースを14で
      コンパイルをしようとすると、ソースファイル・ライブラリー等
      がプロテクトされていて、入力が出来ないですよね。
      自分で作成したコマンドに同じように、初期値をセットして
      プロテクトさせて入力が出来ない制御をしたいのですが、、、、

      RE:コマンド・プロンプト要求の方法について IKD さん [ 11月26日(土) 10時25分 ]

        例えば CRTRPGPGM というコマンドを使用する場合、
        コマンド入力画面で次の操作を行ってみてください。

        1. 全体のプロンプト要求
         ?CRTRPGPGM + [実行]  ===> コマンド全体のプロンプト画面が表示されます。

        2. パラメータのプロンプト要求
           CRTRPGPGM ??PGM(QTEMP/MYPGM) ??SRCFILE(QTRSRC/QRPGSRC) + [実行]
           ====> 指定パラメータがプロンプト表示されてパラメータ値を変更することができます。

        3.パラメータのプロンプト表示
          CRTRPGPGM ?*PGM(QTEMP/MYPGM) ?*SRCFILE(QTRSRC/QRPGSRC) + [実行]
           ====> 指定パラメータがプロンプト表示されますがパラメータ値は変更することはできません。
             つまり、これが求めておられる機能です。パラメータの直前に文字列「?*」を指定すれば
             ご希望の機能を実現することができます。

    正確なライブラリーサイズ きんこんかん さん [ 12月5日(月) 10時36分 ]

      全ライブラリーの正確なサイズは、どうすれば EXCELに取り込めますか?

      DSPOBJD タイプ=*LIB は FILEに落とせますが、登録簿サイズです。
      DSPLIB *ALL は 帳票で、OUTFILE指定が出来ません。

      RE:DSPLIB *PRINT を指定します。 IKD さん [ 12月5日(月) 10時43分 ]

        DSPLIB で出力に *PRINT を指定してください。
        スプールの最後に表示される「合計サイズ」が
        正確なライブラリーのサイズです。

        RE:DSPLIB *PRINT を指定します。 きんこんかん さん [ 12月5日(月) 15時45分 ]

          早速のご返事 ありがとうございました。

          > DSPLIB で出力に *PRINT を指定してください。
          やはり いきなりFILE には落とせないですね。

          全ライブラリーのサイズを知りたいので、*PRINTを指定し一旦帳票出力した後、FILEに落として Excelに
          取り込み、地道にコピー&ペーストします。
          結構 根気が要ります。

          RE:Spoolライター試供版 IKD さん [ 12月7日(水) 15時15分 ]

            Spoolライターの試供版を導入してスプールをExcelに変換すれば
            簡単にできると思いますが。

            ありがとうございます きんこんかん さん [ 12月9日(金) 14時12分 ]

              > Spoolライターの試供版を導入してスプールをExcelに変換すれば
              > 簡単にできると思いますが。

              帳票を簡単にExcelに落とせるなんて、便利な機能があるんですね。
               
              open系が華やかで、最近肩身の狭いAS/400担当者です。
              安定稼動には定評があるので、バリアフリーにpc側と行き来出来れば、もっと人気が出るのでしょうか?

    Queryで 『’』の抽出について Fay さん [ 12月8日(木) 14時53分 ]

      皆さん始めまして

      Queryで文字フィールドからLIKEで抽出したいのですけど
      半角で『'』を抽出する場合(文字列の最後尾に付く『'』だけ)

      を抽出する場合
      LIKE   '%' %'  でやると
      「 値が正しくない−カーソルはエラーを検査する位置にある。 」と表示されて抽出できません。
      この場合に上記条件で抽出するのは不可能なのでしょうか?

      ご存知の方いらっしゃいましたら教えて下さい。
      何分、この掲示板に初書き込みですので情報が不足して意味が不明でしたら御指摘お願い致します。



      RE:Queryで 『’』の抽出について あきぼー さん [ 12月8日(木) 15時56分 ]

        はじめまして。

        アポストロフィー(')を指定する場合、二つ続けて入力すればいいですよ。

         例 『'』を検索する場合→『LIKE '%''%'』
           『''』を検索する場合→『LIKE '%''''%'』

        Queryに限らず『'』を固定値として定義する場合、ほとんどこのルールが適用されてます。



        > 皆さん始めまして
        > 
        > Queryで文字フィールドからLIKEで抽出したいのですけど
        > 半角で『'』を抽出する場合(文字列の最後尾に付く『'』だけ)
        > 
        > を抽出する場合
        > LIKE   '%' %'  でやると
        > 「 値が正しくない−カーソルはエラーを検査する位置にある。 」と表示されて抽出できませ
        ん。
        > この場合に上記条件で抽出するのは不可能なのでしょうか?
        > 
        > ご存知の方いらっしゃいましたら教えて下さい。
        > 何分、この掲示板に初書き込みですので情報が不足して意味が不明でしたら御指摘お願い致しま
        す。
        > 
        > 
        > 
        > 

        ありがとうございます。 Fay さん [ 12月12日(月) 8時51分 ]

          あきぼー さん 
          金曜日出張の為レス遅くなりすみませんでした。
          >  例 『'』を検索する場合→『LIKE '%''%'』
          なるほどこうやって記述すれば良いのですね。
          これで仕事が片付きそうです。
          ありがとうございます。


          > はじめまして。
          > 
          > アポストロフィー(')を指定する場合、二つ続けて入力すればいいですよ。
          > 
          >  例 『'』を検索する場合→『LIKE '%''%'』
          >    『''』を検索する場合→『LIKE '%''''%'』
          > 
          > Queryに限らず『'』を固定値として定義する場合、ほとんどこのルールが適用されてます。
          > 
          > 

    PCOMMのカナ入力について。 はっち さん [ 12月15日(木) 11時19分 ]

      いつも大変参考にさせていただいてます。

      PCOMMの5.0を使用していますが カナ入力専用項目で
      自動的にカナ文字入力できるように変わらなくなりました。
      1文字動かすとカナ入力に自動的になります。

      以前も同じ現象が有り 前任者が直したと言うのですが 対応した人間は
      辞めてしまっていて 困っています。
      よろしくお願い致します。

    FTPにてソースをダウンロードについて MM さん [ 12月19日(月) 0時4分 ]

      御世話になります。
      いつも拝見させて勉強させてもらっています。
      FTPにてGETコマンドを利用してRPG等のソースをTXTで書き出す方式がトピックにありますが
      漢字やひらがなの記述は文字化けしてTXTで落ちるのですが、コメント等で書いたひらがな等を
      ダウンロードするのは無理なのでしょうか?
      また、一括してライブラリにあるソースをダウンロードしたいのですが何かコマンドはありますでしょうか?
      宜しくお願い致します。

    教えてください 住谷 正樹 さん [ 1月19日(木) 15時55分 ]

      AS400でソースの変更履歴を表示するプログラムを作成したいのですが、そのような情報を持っ
      ているファイルなどはあるのですか?作成日,変更日,時間,作成・変更者などが落ちているファイ
      ルもしありましたら教えて頂きたいのですが宜しく御願い致します。

    教えてください 住谷 正樹 さん [ 1月19日(木) 15時57分 ]

      AS400でソースの変更履歴を表示するプログラムを作成したいのですが、そのような情報を持っ
      ているファイルなどはあるのですか?作成日,変更日,時間,作成・変更者などが落ちているファイ
      ルもしありましたら教えて頂きたいのですが宜しく御願い致します。

      RE:メンバー・リストを出力します。 IKD さん [ 1月19日(木) 17時12分 ]

        DSPFD を使って、

        DSPFD FILE(MYSRCLIB/QRPGLESRC) TYPE(*MBRLIST) OUTPUT(*OUTFILE) OUTFILE(QTEMP/MBRLIST)

        のように実行すると ファイル QTEMP/MBRLIST が作成されます。
        このファイルの 「最終変更日付」と「最終変更時刻」を読むことによって
        ご希望の機能を実現することができます。
        小職もずいぶん以前に SAVCHGSRC というコマンドを作成したことがあります。
        SAVCHGOBJ と同じ機能ですが客先などで作業した後で
        SAVCHGSRC を使って自分の会社へ変更ソース・メンバーだけを
        送信するような仕組みでした。

        ありがとうございます 住谷 正樹 さん [ 1月20日(金) 9時23分 ]

          ありがとうございます。早速試してみます。また、御質問を行うかも知れませんが宜しく御願いしま
          す。

    iseriesナビゲータ terukinskywalker さん [ 1月20日(金) 16時31分 ]

      (内容)
      [OS/400のVER]:V5R3

      iSeries Access for Windows
      バージョン 5 リリース 3 モディフィケーション・レベル 0

      Windows(XP SP2)のクライアント端末からiseriesナビゲータを起動すると
      画面が表示されすぐに消えてしまいます。特にエラーになることもありません。
      何度か繰り返して行っていると、画面が表示され使用可能になるのですが…。

      このような現象が起きるのは、設定等の問題なのでしょうか?

      ご存知の方がいらっしゃいましたら、ご教授願います。m(__)m

    NetServer接続の自動認証 terukinskywalker さん [ 1月20日(金) 16時32分 ]

      (内容)
      [OS/400のVER]:V5R3

      Windows(XPsp2)クライアントからiSeries NetServerのファイル共用へアクセスした際に、
      WindowsのユーザーIDとiseriesのユーザーIDが別々だった場合、自動でログインさせる
      事は可能なのでしょうか?


      WindowsのエクスプローラでNetserverにアクセスした場合、
      最初の一度目はログイン画面が表示され認証が必要となる。
      これを自動化したい。

      ご存知の方がいらっしゃいましたら、ご教授願います。m(__)m


      ※シングルユーザーサインオンでは可能のようですが…
      参考リンク [http://www.uken.or.jp/cgi-bin/chiemon/c-board.cgi?cmd=ntr;tree=472;id=3020] 

    C/400での高速化 KS さん [ 1月23日(月) 11時0分 ]

      こちらのC/400での読み取り高速化テクニックの調査の為、70万件のレコードを全件
      読み込みして時間を計測する実験を行いました。

      1)C/400で _Rreadnのレコード読み取りバッファにNULL
       1分10秒
      2)C/400で _Rreadnのレコード読み取りバッファを指定
        1分10秒
      3)ILE-RPG
       1分08秒

      で、RPGが一番早いという結果が出ました。1)が一番早いと聞いていたのですが、何か方法
      があるのでしょうか?

      ちなみに1)のソース(抜粋)は以下です。

      fp = _Ropen("XXXXXXXX/XXXXXXXX", "rr");                    
      if (fp == NULL) {                                         
          printf("Open failed for open filen");                
      }                                                         
      memset(buff, 0, sizeof(buff));                            
      while(1) {                                                
          iofb = _Rreadn(fp,NULL, MAX_LEN, __DFT);              
          if (iofb->num_bytes == EOF) break;                    
          memcpy(buff, (char*)(*(fp->in_buf)), fp->buf_length); 
          buff[fp->buf_length] = 0x00;                          
      }                                                         
      _Rclose(fp);                                              
                                                                
      よろしくお願いします。

      RE:C/400での高速化 IKD さん [ 1月23日(月) 12時9分 ]

        鋭いご指摘です。
        MAX_LEN をレコード長に一致させても改善されないかどうか
        お試しください。
        結果をお知らせ頂ければ幸いです。

      RE:C/400での高速化 KS さん [ 1月23日(月) 12時31分 ]

        MAX_LENをレコード長に一致させてみましたが、改善されませんでした。
        以下は、結果です。

        1)C/400で _Rreadnのレコード読み取りバッファにNULL
        1回目 1分15秒
        2回目 1分13秒

        2)ILE-RPG
        1回目 1分02秒
        2回目 0分57秒

        こちらの実験結果では、C/400での高速化を計る要因は別にありそうな
        気がします。
        よろしくお願いします。

    円マーク付のフィールド名の参照 ゆーこ さん [ 1月23日(月) 12時50分 ]

      質問です。
      javaで、フィールド名の末尾に¥がついたSELECT文を作成しています。

      SELECT VAJKCD,VAUKO\\ FROM TESCCD.RCCMVA とした場合、

      string :java.sql.SQLException: [SQL0104] トークン\は正しくない。有効なトークンは+ - AS 
      <IDENTIFIER>です。

      となり、SELECT VAJKCD,\"VAUKO\\\" FROM TESCCD.RCCMVA とした場合、
      そんなフィールド名はありませんと出ます。

      何とか参照する方法はないでしょうか?

      RE:通貨記号 \ IKD さん [ 1月23日(月) 13時55分 ]

        通貨記号「\」の使用は特殊であり「#」とともにお勧めできませんが
        「\」は ASCII などでは 「$」に変換されてしまいます。
        そこで「\」の代わりに「$」を指定してみてください。

    RE:通貨記号 \ のまのま さん [ 5月25日(木) 21時1分 ]

      AS400→PCのファイル転送中に悲しくも切断されてしまいます。
      以下 PCからAS400に対して ftpを実施したら・・・。
      ------------------------------------------------------------------------------  
      ftp> quote type c 932
      200 REPRESENTATION TYPE IS CCSID 932.
      ftp> get MYLIB/MYFILE c:\temp\test.txt
      200 PORT SUBCOMMAND REQUEST SUCCESSFUL.
      150 RETRIEVING MEMBER MTFBCHIN IN FILE MTFBCHIN IN LIBRARY TKAMI.
      Connection closed by remote host.
      ------------------------------------------------------------------------------  

      そして、AS400側にあがったメッセージが以下です・・・

      ------------------------------------------------------------------------------  
                                    追加のメッセージ情報                               
                                                                                      
       メッセージ ID  . . . . :   CPI93B9       重大度 . . . . . . . . :   50         
       メッセージ・タイプ . . :    情報                                               
        送信日付  . . . . . . :   06/05/25       送信時刻  . . . . . . :   09:37:00   
                                                                                      
        メッセージ . . :   QTMFSRVR の ソフトウェア の問題 データ が記録された。詳細説明は    
         ヘルプ・テキスト を参照。                                                           
        原因−−ソフトウェアが生成した問題判別データが,問題ログに記録されました。問  
          題 ID は 0614458642 です。              ります。

      RE:ftp中に切断!? IKD さん [ 5月28日(日) 12時9分 ]

        対象となるデータ・ベースの情報がありませんので
        原因は不明ですが
        対象データ・ベースにPACK数字が存在しているか
        不正なフィールド値が存在しているかを
        調査してみてください。
        PCOMM などで同じファイルをダウンロードすると
        より原因が明確になるのではないかと思います。

    英小文字の入力 ADV さん [ 6月23日(土) 10時15分 ]

      画面入力プログラム(RPGV)で英小文字(abcde....)の入力をしたいのですが大文字(ABCDE...)に
      なってしまいます!
      Pcommのホスト・コード・ページ=939(日本語英数小文字拡張)に変更してあります。
      画面ソース(DSPF)の入力項目のデータタイプは"O"(DBCS 混用)を指定してあります。
      ちなみに、DFU(データ・ファイル・ユーティリティー)をしようすれば英小文字の入力は可能です。
      どの様にすれば可能なのかお教え下さい。

      RE:英小文字の入力 IKD さん [ 6月24日(日) 23時6分 ]

        ソースファルは CCSID = 65535 で作成しておきます。
        次に SEU を起動したら、F13 = セッション省略時の値の変更 を
        選択してください。
        「大文字入力専用」が Y になっていたら N に変更して
        実行キーを押して戻ってください。
        これで英小文字の入力が可能となります。
        Ctrl + F3 で入力モードを変更することができます。

    CGIを使用したファイルのダウンロード 伊集院博 さん [ 7月2日(月) 13時14分 ]

      お世話になります。

      AS/400のCGIでフロント・エンドをウェブ化する作業を行っています。
      HTTPサーバーはAS/400(v5.3)のApacheを使用しています。ローカルで使用しています。
      質問ですが、グループウェアなどでクライアントから文章をダウンロードできる仕組みがあります
      が、
      「ファイルのダウンロード」というサブウインドウが表示され、「保存」のボタンを押すとクライ
      アントの
      どこのフォルダーにダウンロードするか指定できて、ローカルに保存できる仕組みです。
      この機能は、HTTPサーバーの機能でできるのでしょうか?どのようにしたら可能になるでしょう
      か?
      的外れな質問でしたらお許しを。

      RE:CGIを使用したファイルのダウンロード IKD さん [ 7月2日(月) 17時10分 ]

        結論から申し上げますとダウンロードだけであれば何もしないでも可能となります。

        このサイトでも[Source]ボタンを押すとブラウザにソースが
        表示されますが、これは HTTPサーバーから
        Content-Type が、テキスト・ファイルとしてブラウザに戻されていますので
        ブラウザは警告なしに表示しているだけです。
        しかし、HTML, TXT 以外のその他の Content-Type のファイルの取得を
        ブラウザから要求すると、例の保存ダイアログが表示されるのですが
        これはブラウザの機能です。
        従って、何も設定する必要はありません。
        ( アクセス許可の設定は当然、必要ですが)
        ただしファイルを変換するのか、あるいは無変換でバイナリで
        ダウンロードするのかは HTTP構成ファイルで設定する必要があります。

        よくオープン・ソースでオブジェクトをクリックすると保存ダイアログが
        表示されてダウンロードが開始される機能を見かけますが
        大抵のオープン・ソースなどでは HTTP構成で、ディレクトリーの表示を許可しているだけの
        簡単なもので、配布者は何も設定も行っていません。

        最後にもし、CGI を利用してという話であれば、
        CGI で、IFS のどこかにファイルを出力しておいてから
        CGI からは、ブラウザへ、そのファイルへのリダイレクトを戻せば
        CGI によるダウンロード機能をご希望のとおり作成することができます。
        リダイレクトのサンプルは、このサイトの

        http://www.as400-net.com/cl.html

        の「26. すべてのOS/400 Ver で印刷スプールを PDF 化するには」
        に、あります。

        RE:CGIを使用したファイルのダウンロード 伊集院博 さん [ 7月3日(火) 10時16分 ]

          IKDさん回答ありがとうございます。
          特に何も設定が必要なくブラウザの機能という事で
          HTMLの中に以下のリンク先を書き出してみました。
          <a href="HTTP://172.19.XX.XX/RH220.XLS">ダウンロード</a>
          RH220.XLSは、IFS環境にCSV形式でRPGによって書き出したデータです。
          実行してリンク先をクリックするとブラウザの中にExcelにデータが
          表示されました。
          私のイメージでは、ファイル保存(もしくは、表示or保存のダイアログ表示後)の
          ダイアログが表示される様にしたいのですが、何か指定が間違っているのでしょうか
          私のイメージの方法ができないのであれば、最悪データを表示した後、
          ファイルに保存させようかと妥協案を考えています。

          RE:CGIを使用したファイルのダウンロード IKD さん [ 7月3日(火) 18時21分 ]

            恐らくは設定の問題です。
            初めてダウンロードする拡張子のダウンロードで最初はダイアログによる警告が
            出力されますが、そのダイアログで「警告をする」のチェックをはずして
            ダウンロードすると次回以降は警告が表示されません。
            また、拡張子 CSV に Excel を関連App と設定しているかも知れません。
            あるいはサーバー側で CSV に対して mx-excel を応答するように
            HTTP構成を変更されている可能性もあります。
            どのような変更が行われたのかは予想できません。

            いずれの場合にしても PC の設定が変更されていることに起因している可能性が大です。
            開発用PC の設定はよほど PCに精通していない限り、省略値を変更されないほうが
            よいでしょう。

            RE:CGIを使用したファイルのダウンロード 伊集院博 さん [ 7月4日(水) 10時30分 ]

              IKDさん丁寧な対応ありがとうございます。
              拡張子を色々変えてテストした所、.ZIPだと警告ダイヤログのポップアップが表示されました。
              .DAT、.XLS、.CSV...などを指定するとExcelやメモ帳が立ち上がってデータが表示されてしまいま
              す。IKDさんがおっしゃる通りPCの設定のような気がします。
              原因(設定方法)が分からないので、運用としてはデータを表示させた後、各自のPCで保存して
              もらう事で対応します。
              ちなみに御社のソースダウンロードも全てメモ帳でソースが表示されてしまいます。

              RE:CGIを使用したファイルのダウンロード IKD さん [ 7月5日(木) 9時5分 ]

                Windows エクスプローラを起動して[ツール] - [フォルダ・オプション]を
                選択して「ファイルタイプ」のタブを選択してください。
                この例えば、サイトのソースは拡張子 .mbr で表示されていますので
                .mbr の実行App としてメモ帖が指定されているはずです。
                Window のファイルを「アプリケーションから開く」を使って
                開くときに「ファイルを開くアプリケーションの選択」のダイアログが
                表示されますが、このダイアログの最下部には
                「これらのファイルを開くときは、いつもこのアプリケーションを使う」
                にチェックが入っているはずです。
                このチェックをはずさないままで、起動すると次回以降は
                その App が拡張子と関連づけられてしまいます。
                過去に .mbr をメモ帖でこのようにして開いたことがあるかも知れません。
                Windows を使うときは Microsoft が省略値として設定している値も
                十分に考慮する必要があります。
                上記の「Appから開く」ではチェックをはずしてから開くことが
                一般に推薦される操作です。
                すべてのフォルダ・オプションをチェックしてみてください。

    ウインドウ画面の最下部 ちいボス さん [ 7月3日(火) 16時42分 ]

      ウインドウ画面を表示した際に最下部にも文字を表示したいのですが
      通常はエラーとなってしまいできません。以前に解消法として
      何かのキーワード(ファイルレベルかレコードレベルか忘れてしまいましたが)
      を指定したら、うまく表示できました。
      今回いろいろ試しているのですができません。
      どなかたお分かりなら教えていただけないでしょうか?

    ウインドウ枠にタイトル表示したい ちいボス さん [ 7月3日(火) 16時44分 ]

      ウインドウ画面のウインドウ枠上に文字(タイトル)を表示したいのですが
      できません。どなたかお分かりなら教えてください。

      RE:ウインドウ枠にタイトル表示したい IKD さん [ 7月3日(火) 18時36分 ]

        ご質問の意図が不明です。
        貴兄がどのような開発言語で何をしているのか
        全く不明です。ご質問に際しては第三者にも理解できるよう
        詳細を記述してください。

        RE:ウインドウ枠にタイトル表示したい ちいボス さん [ 7月3日(火) 19時18分 ]

          > ご質問の意図が不明です。
          > 貴兄がどのような開発言語で何をしているのか
          > 全く不明です。ご質問に際しては第三者にも理解できるよう
          > 詳細を記述してください。

          RE:ウインドウ枠にタイトル表示したい ちいボス さん [ 7月3日(火) 19時30分 ]

            申し訳ありませんでした。
            AS400 RPGにおいてウインドウ画面を表示しようとしております。
            画面DDSの定義では"WINDOW"を使用しています。実際のウインドウ画面大きさ
            を次のように指定しています。
            WINDOW(2 3 17 44) (2行目3桁から下に17行、横に44桁の大きさの
            ウインドウ画面)
            そこで、ウインドウ枠上(この場合、2行目)にコメント表示したいのですが
            入りません。何か手段はありますでしょう
            か?                                                   
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    
                                                                    



            RE:ウインドウ枠にタイトル表示したい IKD さん [ 7月4日(水) 9時27分 ]

              WDWTITLE キーワードによってタイトルを表示することができます。
              下記はその例です。
              詳細は DDSマニュアルをご欄ください。


              |...+....1....+....2....+....3....+....4....+....5....+....6....+....7....+....8
                   A
                   A          R RECORD1                   WINDOW(6 15 9 30)
                   A N01                                  WDWTITLE((*TEXT &TTL1) (*COLOR GRN))
                   A  01                                  WDWTITLE((*TEXT &TTL1) (*COLOR RED))
                   A            FIELD1         5A  B  2  2
                   A            FIELD2        20A  B  8  5
                   A            TTL1          10A  P
                   A
                   A          R RECORD2                   WINDOW(8 20 9 30)
                   A                                      WDWTITLE((*TEXT &TTL2) +
                   A                                               (*COLOR YLW) +
                   A                                               (*DSPATR RI))
                   A            FIELD3         5A  B  2  2
                   A            FIELD4        20A  B  8  5
                   A            TTL2          10A  P
                   A

    IPDS化したスプールの画面表示について たぬ さん [ 7月6日(金) 10時1分 ]

      現在InfoPrint40+IPDSオプションを使用して、文字のサイズやフォントなどを変更して出力していま
      す。しかし、このスプールを画面上で表示させると文字化け+印字位置などが正常には表示できませ
      ん。PDF化のオプションもでているようですが、導入しておりません。このような状態で印刷せずに
      中身の確認が出来る方法があればお教えください。ASのバージョンは5.1です。

      RE:IPDS化したスプールの画面表示について IKD さん [ 7月6日(金) 14時24分 ]

        WRKOUTQ での「5= 表示」 の表示を言及しておられるものと推測しますが
        そうであればできません。
        WRKOUTQ で 表示ができるのは *SCS 印刷ストリームだけです。
        PDF化されるのであれば「Spoolライター」であれば *SCS をSystem i5 の
        中だけで PDF化することができます。
        試供版もありますのでお試しください。

      RE:IPDS化したスプールの画面表示について たぬ さん [ 7月20日(金) 14時33分 ]

        お礼が遅くなりました。
        ありがとうございました。

    タブ区切り結合データの再分割 どん さん [ 7月25日(水) 16時45分 ]

      50の項目をX'05'のタブでCAT:0にて結合して1レコードにて作成しています。
      これを項目単位にて再分割したいと考えています。
      データはシングルバイト、ダブルバイトが混じっており、
      テーブルにてDO分にて比較しようにもレコードが長く移すことが出来ません。
      LOKUPを使用してタブの位置を取得出来たりすれば何とかなるのではとも考えたのですが。

      何か良い方法をご存知でしたらご教授ください。
      回答するのに情報が足りない等ありましたらご指摘ください。

      宜しくお願いいたします。

      RE:タブ区切り結合データの再分割 伊集院博 さん [ 7月26日(木) 8時57分 ]

        CPYFRMIMPFコマンドでパラメータにFLDDLM(*TAB)を指定したら良いのではないでしょうか。
        または、どんさんのおっしゃているように配列にデータをセットしてDO文で回して
        1項目づつ取り出すのが良いのかと。
        でもレコードが長すぎとあるのでもしかしたらレコード長が9999バイト超えているという事かな。
        そうなるとレコードを分割しながら、ちょっと工夫がいりますね。
        アドバイスにならなくてすみません。

      RE:タブ区切り結合データの再分割 IKD さん [ 7月26日(木) 10時2分 ]

        RPG であればレコードを外部定義として配列でオーバーレイ定義して
        LOOKUP で分割を繰り返すことができます。
        以下はテストはしていませんがサンプルとして作成したソースです。
        また C/400 であれば、strtok いう分割用の関数がありますので
        もっと簡単になります。
        RPG から分割対象のフィールドのポインターをパラメータとして
        渡せば、この C/400 を使って項目を取り出すことができます。

        【PPG サンプル: TESTTOK 】
        http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QRPGLESC.FILE/TESTTOK.MBR
        ------------------------------------------------------------------------------------------
        -----
        0001.00 H DFTNAME(TESTTOK) DATEDIT(*YMD/)                                       
        0002.00 F******** 項目の分割 ************************************************** 
        0003.00 FDATAFL    IF   E           K DISK                                      
        0004.00 F********************************************************************** 
        0005.00 D DDS001        E DS                  EXTNAME(DATAFL)                   
        0006.00 D  VAR                    1   1024                                      
        0007.00 D                                     DIM(1024)                         
        0008.00 D CRLF            S              1B 0 INZ(X'00')                        
        0009.00 D LEN             S              4S 0                                   
        0010.00 C                   Z-ADD     1             M                 4 0       
        0011.00 C                   DO        *HIVAL                                    
        0012.00 C     CRLF          LOOKUP    VAR(N)                                 50 
        0013.00 C     *IN50         IFEQ      *ON                                       
        0014.00 C                   SUB       1             N                           
        0015.00 C                   EVAL      LEN = N - M + 1                           
        0016.00 C     LEN           SUBST     DDS01:M       ITEM            256         
        0017.00 C     N             ADD       2             M                           
        0018.00 C                   ELSE                                                
        0019.00 C                   LEAVE                                               
        0020.00 C                   END                                                 
        0021.00 C                   END
        ------------------------------------------------------------------------------------------
        -----
        【C/400 サンプル: TESTTOK】
        http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QCSRC.FILE/TESTTOK.MBR
        ------------------------------------------------------------------------------------------
        -----
        0001.00 #include <stdio.h>                              
        0002.00 #include <stdlib.h>                             
        0003.00 #include <string.h>                             
        0004.00                                                 
        0005.00 #define TRUE         0                          
        0006.00 #define FALSE       -1                          
        0007.00                                                 
        0008.00 int  main(int argc, char *argv[]){              
        0009.00    char* str;                                   
        0010.00    char* tokenPtr;                              
        0011.00                                                 
        0012.00    memcpy(str, argv[1], 16);                    
        0013.00    tokenPtr = strtok(str, 0x05);                
        0014.00    while(tokenPtr != NULL){/*while*/            
        0015.00      printf("tokenPtr = %sn", tokenPtr);       
        0016.00      tokenPtr = strtok(NULL, 0x05);             
        0017.00    }/*while*/                                   
        0018.00 }                                               
        ------------------------------------------------------------------------------------------
        -----

      RE:タブ区切り結合データの再分割 どん さん [ 7月26日(木) 11時30分 ]

        伊集院博さん、IKDさん御回答ありがとうございます。
        早速、御教授いただいた方法にて検証してみます。

        レコード長は800〜2000程度です。複数同様のファイルがあります。
        MOVEAにてテーブルに移す際に、256以上は移せず、
        ダブルバイトがある為、256ずつに区切る事が出来ませんでした。
        開発はRPGで行っております。
        >IKDさん:RPGで付けていただいているリンクが残念ながら開けません。

        RE:タブ区切り結合データの再分割 どん さん [ 8月15日(水) 11時23分 ]

          伊集院博さん、IKDさん御回答ありがとうございます。

          遅くなりましたがご教授いただいた内容で解決できました。
          ありがとうございました。 

    CHGFMTのRTVFDCLについて教えてください さん [ 8月2日(木) 17時21分 ]

      RTVFDCLのコンパイルをするとエラーになります。
      理由は、「DCLF FILE(DSPFD)」 が存在しない事と
      「RCVF RCDFMT(QWHFDMBR)」 が存在しないためです。
      この2つのファイルは、どこに存在するのか どなたか わかれば
      教えてください。

    CHGFMTのRTVFDCLについて教えてください さん [ 8月2日(木) 17時23分 ]

      RTVFDCLのコンパイルをするとエラーになります。
      理由は、「DCLF FILE(DSPFD)」 が存在しない事と
      「RCVF RCDFMT(QWHFDMBR)」 が存在しないためです。
      この2つのファイルは、どこに存在するのか どなたか わかれば
      教えてください。

      RE:CHGFMTのRTVFDCLについて教えてください IKD さん [ 8月2日(木) 18時12分 ]

        DSPFD というファイルは、

        DSPFD      FILE(&FILLIB/&FILE) TYPE(*MBR) +       
                     OUTPUT(*OUTFILE) OUTFILE(QTEMP/DSPFD)

        によって生成される作業ファイルです。
        従ってどのようなファイルでも構いませんので

        DSPFD FILE(MYLIB/MYFILE) TYPE(*MBR) OUTPUT(*OUTFILE) OUTFILE(QTEMP/DSPFD)

        のように実行すればファイル QTEMP/DSPFD が作成されます。
        その後、コンパイルしてください。

    Ajax 高内 正幸 さん [ 8月3日(金) 18時19分 ]

      質問ではないのですが、
      iMagazineの「Ajaxが変える」を拝見し「目からうろこが...」という気持ちですので、
      一言御礼を。

      Ajax ってGoogle Map を利用したりとか、
      Yahoo のサービスを利用したりとか、
      そんなイメージで見ていたんですけど、
      今回、i5のデータベースの検索に利用できることを知ることができ、
      早速、Ajaxの入門書を買ってきて「Ajaxが変える」を参考にしてやってみました。
      これまで、コード番号を入れて取引先名を表示するといった「当たり前」のことが、
      ページの再表示でしか実現できていなかったのですが、
      簡単な、プログラムとJavaScript でページを更新することなく実現できました。
      弊社の業務システムの改善に非常に役立つと思います。
      今後も期待しています。
      ありがとうございました。

      Ajax のその後について IKD さん [ 8月4日(土) 9時55分 ]

        Ajax の記事をご評価頂きましてありがとうございます。
        早速、開発を試みられるとはサスガですね。
        Ajax のその後について、いくつかご紹介しましょう。

        @図面情報を Google Maps のように
          Ajax のライブラリーを使って図面情報をマウスのトラックポインタで
         拡大/縮小することができます。

        APOPUP-WINDOW のブラウザ表示について
          ご存知のように i5 で私達がよく行う方法としての
          親PGM から子PGM を CALL して POPUP を表示する方法は
          従来の手法では 親画面が消滅して POPUPだけが表示されてしまう結果と
         なります。
         Ajax を使えば初期(Onload) で window.open する親画面を送信してから
         データ部分だけを Ajax によって表示することができます。

        B妥当性検査について
          オープン・フィールドの入力で漢字や半角文字が混在されて入力される場合は
         シフト文字を附加して初めて桁数オーバーを検出できるのですが
         Ajax で入力値を i5に送信して、小さな CGI で簡単に検査することができます。
         JavaScript でも可能ですが、かなりの量になってしまいます。

        C5250タブ移動や FieldExit キーの再現について
         十字キーの動きや FieldExit キーで右寄せや後続文字の消去を再現しようとすると
          JavaScript でも可能ですが Script の量が大変、多くなるばかりでなく
         動作が緩慢になってしまいます。
         Ajax によって i5側の CGI であれば簡単に実現でき、パフォーマンスにも優れている
         だけでなく、目の前で数値の編集も行うことができます。
         これこそが今、流行のユーザビリティであり、米国雑誌で最初に Ajax + RPG の
         手法が紹介されたのは、このようなフィールド個別の検査の部分でした。

        --- 上記のように Ajax を使えば、今まで不可能と思われてきた機能が次々と可能となり
          ユーザー・フレンドリーに寄与することになってくることがわかってきました。
          これらの手法の詳細は追って順次、ライブラリーとして公開していく予定でおります。
          お役に立てれば幸いです。ありがとうございました。


    画面の数字項目設定について tomo さん [ 8月6日(月) 11時57分 ]

      初歩的な質問ですいません。
      画面から数字の入出力項目として設定していてます。
      例えば、5桁の数字項目に"10 10"と入力すると、
      プログラムで受け取る項目の結果は、"10010"となります。
      しかし、このような場合は、入力エラーとしたいのです。
      なんとか画面でチェックする事はできないでしょうか?

      やはり、画面では文字項目として扱い、
      プログラムにて、ブランクが入ってないかどうか
      チェックするしかないのでしょうか?

      何かいい方法がないか悩んでます。
      どうぞご指導ください。

      RE:タイプ D を使用してください。 IKD さん [ 8月8日(水) 9時37分 ]

        なるほどご指摘のとおり通常、使用されることに多いタイプ Y では
        「1  102」 のように入力できてしまいます。
        結果として 100102 になってしまいます。
        タイプ N も試してみましたが、やはりブランクが入力することが
        できました。
        調べた結果、タイプ D であれば、数字以外は入力することはできないようで
        ご希望の機能に叶うのではないかと思いますので、お試しください。
        タイプ D でもブランク右寄せも可能です。
        ただし 「1  102」 とタイプミスするのは操作員にも問題があるように
        思えますが ... 。

         A            JUCNO          5D 0B  2 12TEXT(' 受注a@') 

        RE:タイプ D を使用してください。 tomo さん [ 8月8日(水) 18時7分 ]

          IKDさん、お返事ありがとうございます! 
          早速タイプDを使ってみました。

          しかし、タイプDを使うと編集キーワードのEDTCDEが使えないようです。
          今回のチェックは、個数や金額を扱う項目にかける予定ですので、
          編集キーワードのゼロバランスは、どうしても使いたいのです。
          よって、とても残念ですが 今回はタイプDは使えません(T-T)
          いろいろ試してくださったのに、すいません。。。

          確かに、「13 10」というような入力は、操作員のミスです。
          既に入力済みの項目を参照し、「10」を「13」と変更したかったようですが
          変更前の「10」が残った状態で修正をしてしまったのです。
          今回のこのミスは大騒ぎとなり、
          ”特定の入力項目に対しては何らかの対応をしなくてはいけない”
          という事になりました。

          画面でのチェックができるのであれば、修正作業も比較的少なくて済むので
          一番いいと思っていたのですが。。。 
          なかなか難しいものですね。

          IKDさん、ありがとうございました! 

          RE:タイプN AK77 さん [ 8月9日(木) 16時53分 ]

            タイプN
            文字で取り込んでRPGで検査。
            RPGで文字から数値に変換。
            裏技でやると、後で困る。

            RE:プログラムにて項目のチェックを行うことにします。 tomo さん [ 8月10日(金) 9時23分 ]

              AK77さん、ご指導ありがとうございます。

              目先の楽チンさに飛びついて 無理やり何とか対応できたとしても、
              後でまた問題になることありますよね。
              わかりやすく、プログラム内で項目のチェックを行う事にします。
              それが一番カタイ方法ですし。
              修正対象とするプログラム本数がちょっと多いですが
              がんばって対応します。

              ありがとうございました。m(__)m

    メンバのタイムスタンプについて あきぼ さん [ 8月17日(金) 9時31分 ]

      お世話になります。
      開発管理の一環で、ソースメンバの移行処理を行おうとしています。
      その際にメンバ属性のタイムスタンプが問題となっています。

      例えば『SRCF1』の『MBR1』を『SRCF2』に移行したときに、作成日時
      および変更日時をそのまま移行することはできるでしょうか?

      よろしくお願いいたします。

      RE:メンバのタイムスタンプについて IKD さん [ 8月17日(金) 11時54分 ]

        「移行」とは、どのような操作を想定しておられるのでしょうか ?
        CPYF や CPYSRCF ではメンバーそのものの変更日付は
        当然、CPYF, CPYSRCF を行ったときの日付/時刻に変更されてしまいます。
        ただしソース・メンバー内のレコードの変更日付/時刻は元のソース・メンバーの
        ままで維持されています。
        一方、SAVLIB, SAVOBJ --> RSTLIB, RSTOBJ であってもファイルそのものの
        変更日付/時刻は復元されたときの日付/時刻が更新されてしまいます。
        ただしメンバーの変更日付/時刻は、元のとおりに維持されます。
        このあたりは簡単にテストができますのでお試しください。

        また、ソースの保守を検討されるのであれば、このサイトの
        「Tools」 にある「CHGOBJSRC」 が参考になります。
        コマンド CHGOBJSRC は変更のあったソース・メンバーだけを抽出するコマンドです。
        たとえばあるユーザーの現地で開発を行って、帰社するときに
        変更のあったソースを抽出することができます。
         
        ソースを二元性に保守することは危険を伴いますが
        どうしてもというのであれば、CHGOBJSRC のようにできるだけプログラムなどによって
        人的判断が加わらないようにして検索する手段を採る必要があると思われます。

        少し余談になりますが弊社では累積PTF を作成するのには
        プログラムによって日付を指定して、その日付以降に変更のあったオブジェクトを
        機械的に抽出するようにしています。
        人的判断が加わらないようにしておかないと、人手による操作ではどうしても
        漏れやミスがつきものになってしまうからです。

        RE:メンバのタイムスタンプについて あきぼ さん [ 8月17日(金) 16時53分 ]

          現在の考えではCPYSRCFコマンドを用いて移行しようとしています。
          ただしこれではメンバの属性にある『メンバ作成日』と『最終変更日時』が
          コピーを行った時刻になってしまいます。

          そこでSAVOBJ-->RSTOBJを試みようと思ったのですが、こちらでは復元コマンド
          に対して制限が掛かっているために試すことができなかったのです。
          それで他に手がないかと思い相談させていただきました。

          目的をお伝えしたほうがよろしいですね。
          まず環境といたしましては本番と開発とがあります。
          なにか問題があったときに本番から開発にコピーをしてきて、開発環境で
          修正を行い、多々の書類を提出した上で開発環境で修正したソース、オブジェクト
          を本番に移行するという手順となっています。
          この際に、オブジェクトで保守している情報とソースメンバの情報が完全合致して
          いなければならないというのが条件となっています。

          これを合致させたまま本番に移行する手立てはないのか模索している状況です。
          本番移行の審査が通ったあとに、オブジェクトの情報とソースメンバの情報が不一致
          となってしまうと、この運用自体に矛盾が生じることとなってしまいます。

          よろしくお願いいたします。

          RE:メンバのタイムスタンプについて AK77 さん [ 8月20日(月) 11時13分 ]

            『メンバ作成日』と『最終変更日時』
            これは、システムが勝手に変えるので、使ってはいけません。

             

            RE:メンバのタイムスタンプについて あきぼ さん [ 8月20日(月) 12時49分 ]

              AK77さん
              ご意見ありがとうございます。

              『メンバ作成日』と『最終変更日時』
              これを基準に保守方法を考えるのであれば、有効と思うのですが。
              今回のユーザは、保守方法ありきでこれをどうにかしようとしていることに
              問題があるのではないかと私も感じています。
              ところが、その方法を変えることが非常に困難な状況にあるのです。
              それでこのような投稿をさせていただいた次第でございます。

              ちなみに保管→復元をユーザでテストしていただいたところ、
              狙い通りの結果となったようです。
              ただし条件があるようで、原始ファイルのオブジェクトのレベルが、
              復元先と保管元と同じでなくてはならないそうです。
              現在の状態を聞いたところ、開発と本番の原始ファイルは、どうやら
              それぞれの環境でCRTSRCPFコマンドで作成したようでシステムが違うもの
              と判断してうまく機能しなかったとのことでした。

              このような状態では、やはり無理があるのでしょうか。
              よろしくお願いいたします。

              RE:メンバのタイムスタンプについて AK77 さん [ 8月20日(月) 16時35分 ]

                SAVLIB RSTLIB 以外はシステムは違う物として認識している。
                ムリクリ、同じにするのは、誤魔化しであり、やってはならない。
                -------------------------------------------------------
                メールが改竄されてない事を証明するのと、同じ手続きを使う。
                暗号化。認証。など

    AS/400システムからのODBC経由でのデータ移行 uec さん [ 8月27日(月) 10時52分 ]

      はじめまして。uecと申します。
      現在プロジェクトにて、AS400システムのリプレースを
      行っていますが、現状のデータ移行のところで行き詰まっています。

      ≪旧システム≫
      AS/400 (バージョンはわかりません)
      ウィンドウズ端末が複数台あり、
      パーソナルコミュニケーションを使用して
      通信しています。 パーソナルコミュニケーションのバージョン→5.7

      ≪新システム≫
      Oracle10gR2
      リッチクライアント

      AS/400のシステムが使用できる端末に
      AS/400用のODBCドライバが入っていなかったので
      IBMのUSサイトより「IBM iSeries Access for Windows」をDownloadし、
      インストールしたのちパーソナルコミュニケーションズのツールの
      データベースアクセスにてODBC接続しようとすると
      『Error occurred while retrieving usage 
      information for (ユーザー名) on XXXX.XXXX.XXXX.XXXX』※XXXXはAS400のIPアドレス
      と表示され接続できません。

      データ件数があまり多くないので、ODBCにて一度アクセスなり、Excelにデータを
      はき出して、Oracleに登録しようと考えていますが、上記のような状態で
      どうにも前に進みません。
      長文になり恐縮ですが、良案をご教授願えますようお願いいたします。

      RE:AS/400システムからのODBC経由でのデータ移行 IKD さん [ 8月28日(火) 13時33分 ]

        ODBCドライバーのサーバー・デーモンも SBS: QSYSWRK の配下に
        いるはずですから、ひとつひとつWRKACTJOB で調べて
        「5=処理」で「10. ジョブ・ログの表示」で F10キーを押して
        ローレベル・メッセージを調べれば真のエラー原因が特定できると
        思います。
        しかし単に Excel にデータをダウンロードされたいのであれば
        Chicago の試供版を導入すれば無償で 14日間使用することが
        できます。
        PCOMM や C/A でも Excel に BIFFファイルとしてダウンロードすることは
        できますが 15000件の制限があります。

      RE:AS/400システムからのODBC経由でのデータ移行 uec さん [ 8月28日(火) 15時31分 ]

        IKD さん 

        早速の返信ありがとうございます。ご指示のとおり、JOBを調べてみたのですが、
        「QSYSのサブシステムQUSRWRKのジョブ214398/QUSER/QZRCSRVSがXXXXに開始された。ジョブXXXXに
        システムにいられました。
        クライアントからのユーザーQSECOFRがサーバに接続された。スレッド X'0000000000000001’のASP
        グループは*NONEに設定されました。」

        というメッセージが表示されました。
        当方には全く意味がわかりません。。。そもそもAS400はODBCでの接続をできる
        端末をサーバ側で制御しているのでしょうか?そのあたりが確認できればと考えております。

    MSGWについて あきぼ さん [ 8月31日(金) 15時26分 ]

      お世話になっております。

      MESSAGE/400などで行っている処理についてですが、
      MSGW状態として、MSGQにメッセージが届いたときにプログラムを
      実行する(?)という処理を作成したいのですが、どのように制御
      しているのか分かりません。

      どのような命令を使用すればこのような制御ができるのでしょうか。

      よろしくお願いいたします。

      RE:MSGWについて IKD さん [ 9月2日(日) 12時32分 ]

        そんなに難しい仕組みではないと思います。
        まだ最初に、RCVMSG コマンドは自分のメッセージだけでなく
        他の任意のメッセージ待ち行列を監視することができます。
        次にすべてのメッセージ待ち行列は ライブラリー QSYS に
        配置されています。
        このことからすべてのメッセージ待ち行列の中で
        活動中のものを LOOP で検索して 待機時間*MAX で RCVMSG によって監視する
        CLP を次々とバッチ投入すれば目的の処理は可能です。
        ただソフトウェア製品となると、ひとつのプログラムの中で
        マルチスレッドで監視用スレッドを立ち上げるようにしないと
        不細工であり、管理が面倒になります。

        簡単な例で考えるとバッチ投入した JOB を別の対話式JOB で
        RCVMSG *MAX で監視するプログラムなら簡単に作れます。
        これの複数のケースですから、これくらいの監視システムなら
        簡単に自作できると思います。
        例えば MSGW になったJOB が発生した場合、あなたの PCに
        Windows ダイアログのメッセージを送るようにすれば
        明確に目立った処置となります。

      RE:MSGWについて あきぼ さん [ 9月3日(月) 13時16分 ]

        IKDさん 

        RCVMSGを使用すればよろしいのですね。
        早速試させていただきます。

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

    ADO接続で、「実行時エラー 429」が発生する HWT さん [ 9月29日(土) 8時53分 ]

      Excel2000から、ADO接続でAS/400のデータベースに接続するプログラムを組ん
      でいます。
      接続は出来ているようなのですが、データを取り込む際に、「実行時エラー 4
      29 ActiveXコンポーネントはオブジェクトを作成できません。」というエラー
      が出てしまいます。(特定の端末のみ)

      色々と調査してみた結果、マイクロソフトのHPで、Officeの再インストール
      が有効だという情報しか得られませんでした。

      これ以外に対処方法はないものでしょうか?

      <動作環境>
       Windows2000
       Office2000(Excel2000)
       VB6ランタイム適用済み

      <ソース内容(抜粋)>----------------------------------------
        Public dbCon As New ADODB.Connection
        Public dbRes As New ADODB.Recordset

        Public Const strProvider As String = "Provider=IBMDA400;Data Sourc
      e=xxx.xxx.x.x;"
        Public Const strUser As String = "AAAAAAA"
        Public Const strPassword As String = "AAAAAAA"
        Public Const strASLib As String = "BBBBBBB"

         (中略)

          dbCon.Open strProvider, strUser, strPassword
          strSQL1 = "SELECT * FROM " & strASLib & ".XXXXXXX"
      →  dbRes.Open strSQL1, dbCon, adOpenKeyset, adLockReadOnly
      -------------------------------------------------------------
      上記ソースの→の部分でエラーになります。

      RE:ADO接続で、「実行時エラー 429」が発生する IKD さん [ 9月29日(土) 14時6分 ]

        「ActiveXコンポーネントはオブジェクトを作成できません」という
        エラー・メッセージは,そのメソッドの基となる OLEコントロールが
        存在していない、つまりはレジストリに正しく登録されていないことを
        意味しています。
        エラー行のOLEコントロールがそのPC に正しく登録されているか
        ご確認ください。
        極端な場合ですが、OLEコントロールを使用するモジュール(EXE, LIB, OCX, ...)
        をインストーラを使わずにファイル・コピーだけで導入した場合はレジストリへの登録が
        行われませんので、このようなエラーが発生します。
        インストーラは OLEコントロールをレジストリに登録も行いますので
        インストーラによる正しい導入が必要となります。
        Windows  がOLEコントロールをレジストリに探しに行ったところ
        登録が見つからないので上記のエラーとなっています。
        Office の再導入によって解決するとは断定することはできません。
        エラー行で指定している OLEコントロール(ActiveX など) を
        お調べください。

      RE:ADO接続で、「実行時エラー 429」が発生する HWT さん [ 9月29日(土) 14時50分 ]

        IKDさん、レスありがとうございます。

        >エラー行で指定している OLEコントロール(ActiveX など)

        というのは、今回の場合だと、“ADODB.Recordset”になるのでしょうか?

        ちなみに、このことを指しているのだとすると、レジストリ内を検索した結果が以下のようになると解釈し
        てもよろしいのでしょうか?

         ・正常に動作する端末 … 参照設定で指定したVersionのものが見つかる
         ・エラーになる端末  … 見つからない(若しくは違うVersionのは見つかる)

        また、MDACの最新版のインストールで解決する可能性があるのではないかと思ったのですが、可能性はない
        でしょうか?

        何れにしても、エラーが発生しているのは客先の端末ですので、調査は月曜日になるのですが…。

        RE:ADO接続で、「実行時エラー 429」が発生する IKD さん [ 9月29日(土) 15時14分 ]

          そのとおりです。
          参照設定の一覧には見つからないと思われます。

          RE:ADO接続で、「実行時エラー 429」が発生する HWT さん [ 9月29日(土) 15時31分 ]

            IKDさん、ありがとうございます。
            これで調査対象がハッキリしました。

            ところで、“インストーラによる正しい導入”とは、今回のADOの場合ですと、MDACが該当するのでしょう
            か?

            幼稚な質問ばかりで申し訳ありませんが、教えてください。

            RE:ADO接続で、「実行時エラー 429」が発生する HWT さん [ 10月1日(月) 10時4分 ]

              MDAC 2.8の導入により、解決しました。

              レジストリ内には、"ADODB.Recordset"が存在しており、そのVersionはExcelで指定しているものと同じ
              でしたので、関係ないかもと思いつつ導入して参照設定も変更してみたところ、動作するようになりまし
              た。

              IKDさん、ありがとうございました。

    HTMLからPCのコマンドを実行する方法 初心者A さん [ 11月21日(水) 16時23分 ]

      お世話になります。
      教えていただき遺体のはEnterpriseServerのHTMLからPCのコマンドを実行したいと考えておりま
      す。
      PCコマンドを実行する方法はありますか?
      よろしくお願いします。

      RE:HTMLからPCのコマンドを実行する方法 IKD さん [ 11月22日(木) 11時43分 ]

        EnterpriseServer に限らず Webサーバー側から
        WinPCコマンドを実行できるコマンドはありません。
        もし、それが一般的に可能であったとするとWindows の
        セキュリティ・ホールとなってしまうからです。

        ■ STRPCCMD について
           STRPCCMD は 5250エミュレータのクライアント・モジュール上で
           C/Sモデルとして実行されていますので、一般のWebでは使用することは
         できません。

        ■ RUNRMTCMD について
           STRPCCMD に代わるコマンドとして RUNRMTCMD がありますが
           RUNRMTCMD は、

           ・WinPCのユーザー,パスワードを必要とするが、Windows のユーザー,
           パスワードは HTTPプロコルでは取得できない。

           ・RUNRMTCMD のユーザー名は 10バイト以下の制限がある。

          の理由により実用的ではありません。

        ■その他の解決方法について
         しかしWeb化にあたり、STRPCCMD が業務に組み込まれているユーザー様が 
         あるのも事実です。ActiveXコントロール(OCX) を使えば容易に実現できますが
          この場合、ActiveX のダウンロードを促すダイアログが表示されてしまいます。
         Webでダイアログによる判定が必要となると多くのユーザーは不安を感じますので
         別の方法を現在、調査しいております。
         しばらくお待ちくださいますようお願い申し上げます。

        RE:STRPCCMD を実現しました。 IKD さん [ 11月30日(金) 17時30分 ]

          弊社サイト http://www.officequattro.com  にて先日、公示致しましたように
          STRPCCMD を Web上で実行できる機能を EnterpriseServer Ver5.0 に
          追加しました。
          STRPCCMD を Web上で実行できる機能は初めてであると思います。
          STRPCCMD は PCOMM や ClientAccess に依存しているわけではない、との
          BBS への書き込みが米国サイトに見つかり、これがヒントとなり、
          開発を行いました。
          従来の 5250エミュレータで使用されていた STRPCCMD は、全く変更して
          頂く必要はありません。
          そのままで STRPCCMD を Web上でも実行できるようになりました。

          ■ その他の Ver5.0 での追加機能の詳細は弊社サイト
             http://www.officequattro.com  をご参照ください。

            製品 EnterpriseServer Ver5.0 の紹介サイトも近日中に公開を
             予定しております。

    Excel2007でAS400からのデータ転送 担当 さん [ 11月22日(木) 16時48分 ]

      はじめまして。初心者ですがよろしくお願いします。
      Excel2007で、CliantAccessをアドイン設定してAS/400よりデータダウンロードしようとするとEXCEL
      がエラーを起し終了してしまいます。EXCEL2003では問題なく稼動しておりましたので設定方法等で
      問題があるのか解りません。
      動作環境
      クライアントOS:WinXP SP2 AS400:バージョン 5.0.0
      です。単純にバージョンが古い為でしょうか?
      よろしくお願いします。

      RE:Excel2007でAS400からのデータ転送 IKD さん [ 11月23日(金) 11時44分 ]

        どのような障害の解決においてもエラーになるというだけでは、
        原因を特定することはできません。
        エラー・ダイアログが表示されているのであれば
        ディバッグ・ボタンを押せば原因の追求の手助けになりますが
        どのような操作をして、どのようなエラーになるのか
        詳細をお知らせください。

        また、Excelへのダウンロードであれば Chicago が非常に
        操作も簡単です。弊社の立場としまして Chicago の無償試供版を
        お試しになることをお勧め致します。

        http://www.officequattro.com/jpn/chicago.html

    処理遅延の対策 会社員 さん [ 12月26日(水) 7時10分 ]

      iseriesV.5にて、JAVAで作成しているバッチ処理(JAVAからSQLを実行)が
      しばしば超スローになります。
      ところが、強制終了した後、再実行すると通常のスピードで処理完了します。
      特定の処理、タイミングというわけではなく、ランダムに発生します。
      バッチ実行時の環境もあると思うのですが、解決策が見つかっておりません。
      同様のケースにおける解決策(アドバイスでも)をお持ちの方、いらっしゃいませんでしょうか。

    USRPRFのコピー方法を教えてください IT統制 さん [ 1月15日(火) 11時29分 ]

      WRKUSRPRFのOPTION=3でユーザープロフィールのコピーが出来ますが、
      これと同じ事をCLで実現できないでしょうか?
      CL変数でコピー元とコピー先のユーザープロフィール名を指定すると
      コピーが出来るとか・・・

      RE:できません。 IKD さん [ 1月17日(木) 9時42分 ]

        結論から申しますとありません。
         WRKUSRPRF の 「3=コピー」を選択しても「ユーザーのコピー」という表題には
        コマンド名が示されていないことから、この機能はコマンドではないことがわかります。
        次に CRTDUPOBJ でもオブジェクト・タイプ *USRPRF は許可されていません。
        OS400 V5R4M0 API にも SECURITY の領域にはユーザー・プロフィールのコピーという
        機能は見つかりませんでした。
        また米国サイトの質問コーナーにも、これに関する質問やテクニックは
        見つかりませんでした。
        機能を限定するのであれば API を使ってコピー元のユーザー・プロフィールの設定値を
        検索して CRTUSRPRF を内部で実行するような CLP を作成することは可能ですが
        大量でなければWRKUSRPRF のコピー機能を使われたほうが早いのではないかと思います。

    全角スペースへの変換 どん さん [ 2月4日(月) 18時55分 ]

      AS400で作成したデータをFTP(LTYPE C 932)にてCSVへ変換してPCに出力しています。
      AS400で作成されたデータの中に、
       山 川 
      04600460
      E55FE57F
      の様なデータがあると変換でエラーとなってしまいます。
      エラーになるのは山川の間の【0F、0E】部分です。
      この処理をAS400でデータを作成する際に、
      含まれていたら全角スペースへ変換したいというのが質問です。
       山 川 
      04644460
      E550057F
      よろしくお願いいたします。

      RE:全角スペースへの変換 IKD さん [ 2月6日(水) 10時14分 ]

        一旦、作業ファイルへ出力するようにして、そのときに
        0F0E が見つかればスペースに変換するようにしてはいかがでしょうか ?
        例えば、次のような記述となります。

        -----------------------------------------------------------------------------
        D AR              S              1    DIM(80)                           
                                                                                
        C     X'0F0E'       SCAN      DATA:1        N                 4 0    50 
        C     *IN50         IFEQ      *ON                                       
        C                   MOVEA     DATA          AR                          
        C                   MOVEA     '  '          AR(N)                       
        C                   MOVEA     AR            DATA                        
        C                   END                                                 
        -----------------------------------------------------------------------------

    ネットーワークパスワードの設定方法 伊集院博 さん [ 2月5日(火) 12時45分 ]

      アパッチを立ててRPG-CGIでWeb用のシステムをイントラネット
      で使用しています。EnterpriseServerのAutoWebのように
      AS/400へ接続する際、「ネットーワークパスワード」の入力を
      させてから(サーバにログインさせてから)業務アプリを使用させたいのですが
      可能でしょうか?可能であればその設定方法を教えて下さい。

      RE:ネットーワークパスワードの設定方法 IKD さん [ 2月6日(水) 11時18分 ]

        IBM HTTP Server powerd by Apache にネットワークだけの
        接続でログイン = Basic認証 を実現するのは難しいと
        思います。

        Basic認証とは HTTPサーバーがブラウザの要求に対して

        HTTP/1.1 401 Authorization Requird 

        という応答を返すことによって
        ブラウザがログイン・ダイアログを表示するという仕組みです。
        ログインを使えば、サイン・オンの代わりとして
        そのユーザー・プロフィールで CGI を開始することができ、
        オブジェクトへのアクセス権限も 5250エミュレータのときと
        同じユーザー環境で動作させることができるからです。
        この仕組みのためにはログインしたユーザー・プロフィールによって
        仮想的なユーザー環境をユーザーAPIによって生成する必要が
        ありますが、残念ながら IBM Apache には、そこまでの
        機能はないと予想されます。
        これは HTTP Server powerd by Apache が単に Apache を
        OS400 に PORTING しただけに過ぎないからです。
        弊社 HTTP サーバー : Alaska のように、Basic認証によって
        仮想ユーザー環境を生成しようとすると、HTTPサーバー開発者が
        相当、OS400 に精通していなければできません。
         
        一般の Apache では独自のパスワード・ファイルを作成することによって
        Basic認証が可能となります。
        ご存知のように IBM Apache では *ADMIN の接続であれば
        Basic認証のログイン・ダイアログが表示されます。
        ご質問を受けて IFS の権限を変更することによって
        Basic認証させることが可能かどうか実験してみましたが
        IFS に権限を設定しても、ほとんどが無視されてしまい
        *EXCLUDE が効いていないことがわかりました。
        これは不思議であるとともに非常に危険な状態であると思います。
        ローカル・アクセスでは IFS の機密保護は効果を発揮しますが
        肝心の Webアクセスでは *EXCLUDE でもアクセスできてしまい、
        これは Alaska でも同じ現象でした。

        Alaska では至急に *PUBLIC *EXCLUDE の場合は
        IFS の権限ユーザーのみのアクセスに制限し、
        Basic認証を要求するように改訂致します。
        このようにすればIFSを設定するだけで、任意の静的な IFS を
        ホーム・ページとしてアクセスするだけで
        ログインが使用可能になるからです。

        IBM Apache に関しては新たな情報がわかれば
        お知らせ致します。
         




        RE:ネットーワークパスワードの設定方法 伊集院博 さん [ 2月6日(水) 11時37分 ]

          Apacheを*ADMINで接続しにいくとネットワークアドレスを求めてきたので、
          簡単な設定で可能かと思い質問させていただきました。
          難しそうなので、ログイン/パスワード画面を設けて対応したいと思います。
          お忙しい所、ありがとうございました。

        RE:ネットーワークパスワードの設定方法 伊集院博 さん [ 2月6日(水) 12時7分 ]

          Apacheを*ADMINで接続しにいくとネットワークアドレスを求めてきたので、
          簡単な設定で可能かと思い質問させていただきました。
          難しそうなので、ログイン/パスワード画面を設けて対応したいと思います。
          お忙しい所、ありがとうございました。

    CGIでデータのダウンロード 伊集院博 さん [ 2月14日(木) 8時57分 ]

      CGIで以下の方法でデータのダウンロードを考えています。
      第一画面でデータの抽出条件を指定し、
      第二画面で条件にヒットしたデータの一覧を表示します。
      この第二画面に「ダウンロード」ボタンを設けて
      クリックッされたら、CSV形式のファイルを作成して
      ブラウザより保存ダイヤログを表示させてダウンロード
      をさせたいと考えています。

      上記の方法が分からず、取り合えず、
      @ボタンがプッシュされたら
      Aサーバ側で抽出条件にヒットしたワークファイルを作成
      BCPYFRMIMPFでCSVファイルを作成し、
      Cストリーム環境へコピー
      Dそのリンク先をCGI画面に戻して(表示させて)
      Eユーザは、再度、そのリンク先をクリックして
       ダウンロードをおこなう
      という感じであまりスマートではないやり方をしています。
      もっとスマートな方法は無いでしょうか?
      ちなみにEPSでおこなった場合、良い仕組みは有るのでしょうか?

      RE:CGIでデータのダウンロード IKD さん [ 2月15日(金) 9時39分 ]

        なるほど、CGI での CSVをダウンロードさせようとすると
        そのような手順になると思います。
        EnterpriseServer であれば、SENDSTMF というプロシージャーが
        用意されていますので、CGI のレスボンスとして

         CHARSET("Shift_JIS")
         CONTENT_TYPE("CSV")
         SENDSTMF("MYFILE")  <---(保管したCSVを直接、送信)

         という手順で、ユーザーがダウンロードのために
         クリックする手順を無くすことができます。
         ただし現状では CPYFRMIMPF を行うプロシージャーは用意されて
         いませんので、CPYFRMIMPF も行うプロシージャーとして

         DWNLOAD プロシージャーなるものを Ver5.0 に追加しておきたいと
         思います。
         良いヒントをありがとうございました。

        RE:CGIでデータのダウンロード 伊集院博 さん [ 2月15日(金) 12時30分 ]

          アパッチではやはり無理ですか。
          このような処理ってBtoBなら必ずありますよね。
          なにか仕掛けを用意してくれると良いのですが。
          そろそろEPSに切り替えないと厳しいかな。

    AS400間のデータ転送の長所・短所 iku さん [ 2月16日(土) 22時42分 ]

      本社のAS400に他拠点のAS400から定期的にデータを受信する仕組みを考えています。

      方法として以下2つを考えています。
      1.DDMファイルを作成して、他拠点の更新状態を常に本社側に反映されるようにする。
      2.FTPで本社からGETもしくはPUTする。

      そこで質問ですが、以上2点の長所・短所を教えて下さい。
      比較項目は以下の点でお願いします。

      ・受信速度
      ・トラブル時のリカバリー(ログが取れる等)
      ・信頼性

      また、その他にも方法があれば教えて下さい。
      よろしくお願いします。

      RE:AS400間のデータ転送の長所・短所 IKD さん [ 2月20日(水) 9時36分 ]


                            |    DDM ファイル          |         FTP
        =========================================================================================
         受信速度               | 速い                      |   速い
         ログ                   | ジャーナル                | ジャーナルまたは出口プログラム
         信頼性                 | 高い                      | 高いとは言えない場合もある
        -----------------------------------------------------------------------------------------

         速度はいずれもベースとなる通信に依存することになります。
         また対象となる D/B が数多くある場合は DDM を常駐させておくと
         D/B への入出力のパフォーマンスが低下する要因となります。
         (その都度、DDMを作成するのであれば、この問題はありません。)
         FTP では、文字コードが正しく伝わるか疑問がある場合も考えられます。
         BACKUP や同期を取りたいのであれば DDM が非常に簡単で信頼性も高く、お勧めすることが
         できます。

    ブラウザからAS/400にファイルをアップする事は可能ですか 伊集院博 さん [ 2月25日(月) 11時14分 ]

      いつもお世話になっています。
      仕入先との間で、RPG-CGIを使用したBtoBの資材調達システムを
      検討中です。見積依頼→単価・納期回答→注文・注文書発行・納品書・現品票...
      とインターネットを使用してリアルタイムにおこなおうとしています。
      システムが注文書や納品書、現品票をIFSに置いて仕入先が
      そのドキュメントを取りにいく事は、容易にできると思いますが、
      仕入先からの詳細な見積書や設計書等のドキュメントをAS/400(IFS)に対して
      ドキュメントをアップする事は可能なのでしょうか?
      (イメージとしては、簡単なグループウェア等に有る機能で、
      ドキュメントを相互にU/LしたりD/Lしたりする機能です。)
      ご教示下さい。

      RE:ブラウザからAS/400にファイルをアップする事は可能ですか IKD さん [ 2月26日(火) 9時24分 ]

        現存するすべての HTTPサーバーには、ダウンロードの機能は
        ありますが、アップロードの機能はありません。
        HTTPサーバーが簡単にアップロードをサポートしているとなると
        それは重大なセキュリティ・ホールとなってしまうからです。
        原理的には,専用の CGI を開発すればアップロードに
        耐用することもできますが、HTTPプロトコルを理解した上で
        CGI 側での工夫が必要となります。
        Alaska 自身もやはりアップロードの機能はありませんが
        別製品、HitPack によってアップロードが可能となります。

    34. プログラム・コール・スタックの検索サンプルPGMについて black さん [ 2月29日(金) 17時7分 ]

      こちらで公開されているプログラム・コール・スタックの検索サンプルPGMですが、
      若干修正して、プログラム名をパラメータで受取り、該当のプログラムがスタックに存在するか調べ、
      存在した場合は、スタック中の位置を返すというサブプログラムを作ろうとしています。

      一応完成し、使用してみたのですが、QWVRCSTK APIの結果を見ると、OPMのみの場合は良いのです
      が、ILEの場合は一つのプログラムに対して、モジュールとプログラムの2つのエントリーが帰って
      きてしまいます。QWVRCSTKの戻り値で、ILEかOPMかを判断したいのですが、どの項目を使えば良いの
      かよく解かりません。

      どの項目を使ったら正しく判断できますか?

      RE:34. プログラム・コール・スタックの検索サンプルPGMについて IKD さん [ 3月5日(水) 9時10分 ]

        ILE の場合は関数(プロシージャー) も、スタックのひとつになります。
        スタック上、プログラムとスタックの区別はありません。
        従ってILE の場合は、すべてのスタックを検索する必要があります。

        RE:34. プログラム・コール・スタックの検索サンプルPGMについて black さん [ 3月5日(水) 12時57分 ]

          質問の意図を読み取って頂けなかったようですので、詳細に書きます。

          プログラムA,B,Cがあり、それぞれがA,B,Cを呼び出す場合、自分より上位に位置するプログラムがス
          タックに存在する場合、再帰呼び出しでエラーになります。
          そのため、スタックを検索し、
          1)該当のプログラムがスタック中に存在するかどうかを調べ
          2)存在する場合、スタック中の位置を返す
          というサブプログラムを作り、これから実行しようとするプログラムを調べ、
          スタックに存在する場合は、CALLせずに終了して上位に戻そうと考えました。

          しかし、ILEの場合、プログラムとプロシジャと複数出来てしまうので、全てカウントしてしまうと
          位置情報が正しくなくなるのです。

          スタックが以下の時、
          OPM
          PGMa
          PGMb
          PGMc

          ILE
          PGMa
          PGMa(プロシジャ)
          PGMb
          PGMb(プロシジャ)
          PGMc
          PGMc(プロシジャ)

          PGMcからPGMaを呼び出す時、既にスタックに居るのでCallできません。
          よって、PGMc→PGMb→PGMaと戻らなければなりません。
          各プログラムのパラメータにリターンコードを設け、ゼロ以外が戻された
          場合、戻りたい階層を示すようにしました。
          呼出し後、リターンコードを-1しても整数の場合、自分より上位に戻りたいことが解かります。
          スタックを検索して、PGMaは3番目である事を戻したいのですが、OPMなら
          正しいですが、ILEの場合、6になってしまいます。

          スタックを検索する時に、モジュールをカウントさせたくないのですが、
          ILEのプログラムとモジュールを区別するには、APIの戻り値上、どこを見て
          判断したらよいでしょうか?

          RPGではTFRCTLできないので、上記のような仕組みにしようとしています。

    自動実行したジョブの実行結果のみを表示する方法について tec-mast さん [ 3月7日(金) 11時48分 ]

      WRKJOBSCDE等のコマンドにより作成した複数の自動実行ジョブの実行結果(正常に終了したか、異
      常終了したか)を一覧で表示する方法はありませんか、またその方法があればどのようなとこまで
      の情報が拾えるのでしょうか。できればCL等で簡単に実行できる方法が良いです。

    端末ID(ワークステーションID)情報を知るには なつ さん [ 3月7日(金) 13時19分 ]

      プログラム内で実行中の端末ID情報を知るには?

      RE:端末ID(ワークステーションID)情報を知るには SolidBalloon さん [ 3月10日(月) 16時39分 ]

        > プログラム内で実行中の端末ID情報を知るには?

        RPG/ILEでは
        DNAME+++++++++++ETDSFROM+++TO/L+++IDC.KEYWORDS++++
        D                SDS                              
        D  PGMNAME          *PROC
        D  WSID                 244    253
        D  USER                 254    263
        D  JOBNBR               264    269

        CLでは
        DCL        VAR(&WSID)   TYPE(*CHAR) LEN(10)
        DCL        VAR(&USER)   TYPE(*CHAR) LEN(10)
        DCL        VAR(&JOBNBR) TYPE(*CHAR) LEN(6) 
        RTVJOBA    JOB(&WSID)   USER(&USER) NBR(&JOBNBR)

        RE:端末ID(ワークステーションID)情報を知るには なつ さん [ 3月10日(月) 21時17分 ]

          > > プログラム内で実行中の端末ID情報を知るには?
          > 
          > RPG/ILEでは
          > DNAME+++++++++++ETDSFROM+++TO/L+++IDC.KEYWORDS++++
          > D                SDS                         
               
          > D  PGMNAME          *PROC
          > D  WSID                 244    253
          > D  USER                 254    263
          > D  JOBNBR               264    269
          > 
          > CLでは
          > DCL        VAR(&WSID)   TYPE(*CHAR) LEN(10)
          > DCL        VAR(&USER)   TYPE(*CHAR) LEN(10)
          > DCL        VAR(&JOBNBR) TYPE(*CHAR) LEN(6) 
          > RTVJOBA    JOB(&WSID)   USER(&USER) NBR(&JOBNBR)

    Ajax AJX002にあるRPGSEND Okamo さん [ 3月19日(水) 20時3分 ]

      はじめまして。Okamoと申します。
      最近AS400のWeb化を考えており、こちらのサイトには有益な情報が掲載されており、
      勉強させていただいてます。

      iMagazineの「Ajaxが変える」を拝見し、こちらで公開されているAJX002を写経してCRTBNDRPGして
      みたのですが、
      「'RPGSEND' の定義が見つからない 」というエラーでコンパイルが通りません。
      ろくにRPGもわかってなくお恥ずかしいのですが、これはコンパイル時にQC2LE以外にもインクルー
      ドが必要なディレクトリーとかがあるのでしょうか?

      また DFTACTGRP(*YES)のままコンパイルしようとすると
      「DFTACTGRP(*YES) の時にパラメーター BNDDIR を使用することはできない」
      となってしまうため、 DFTACTGRP(*NO)でコンパイルしています。

      RE:Ajax AJX002にあるRPGSEND IKD さん [ 3月22日(土) 12時13分 ]

        iMagagine をご覧頂きましてありがとうございます。

        AJX002 は EnterpriseServer の RPGエンジン(RPGENGINE5) というサービス・プログラム(*SRVPGM) を
        バインドしているサンプルです。
        これは読者に実行原理をよりシンプルにわかりやすくするためです。
        一般に CGI をコンパイルするときは CRTBNDRPG ではなく
        CRTRPGMOD + CRTPGM でサービス・プログラム(*SRVPGM) をバインドします。
        RPGSEND は RPGエンジン内に定義されているプロシージャーです。
        また CRTPGM では ACTGRP(*NEW) でコンパイルしなければなりません。
        サービス・プログラムとは Windows の DLL に相当するもので
        RPGエンジンではなく System i のみで CGI を開発するのであれば
        QHTTPSVR/QTMHCGI という *SRVPGM をバインドする必要がありますが
        QTMHCGI では HTML からの変数を読み取るためのデコードやパースといった機能は
        ありませんので、独力で CGI を開発するとなると、特に漢字の入力等には
        莫大な労力を必要とします。
        このため IBM は (米国では) CGIDEV2 というフリーの *SRVPGM を公開しており
        多くのユーザーがこれを利用しています。
        原理を学習だけであれば QTMHCGI を利用して非常に簡単なサンプル CGI を開発することが
        できると思います。
        Ajax は CGI や Web開発のさらにその先にある技術です。
        簡単に言えば Ajax とは 対話式の HTMLインターフェースを実装する技術です。
        Ajax の登場によってC/S型の製品は不要となってしまうでしょう。
        Web開発の基礎はまだまだ System i のユーザーによって理解されていない部分が
        多いようですので機会があれば、ご紹介したいと思います。

        RE:Ajax AJX002にあるRPGSEND Okamo さん [ 3月25日(火) 19時33分 ]

          IKD様

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

          'RPGSEND'をprintf()に記述変更して、DFTACTGRP(*NO)でとりあえず、CRTBNDRPGしてコンパイルは
          通したのですが、これだけでは全然ダメなのですね。
          hhtp.confにcgiのディレクトリーをこのAJX002のPGMがある場所を指定したら、
          一応ブラウザからこのAJX002をAS400上で起動するとこまではできたのですが考慮すべき点がまだ全
          然足らないということですね。

          C/400がHTTPとRPGとのやりとりの部分をエンコードも含めて面倒見てくれるのではと思っていたの
          ですが、これは私の勘違いということでしょうか?

          > このため IBM は (米国では) CGIDEV2 というフリーの *SRVPGM を公開しており

          英語は苦手ですが、参考に勉強させていただきます。

          RE:Ajax AJX002にあるRPGSEND IKD さん [ 3月26日(水) 9時29分 ]

            C/400 は単なる開発言語ですので C/400 が HTMLとのインターフェースを
            とってくれるわけではありません。
            デコードやパースやユーザー自身の手で行うことが基本で
            OS400 提供の *SRVPGM として QHTTPSVR/QTMHCGI があります。
            下記は資料としては古いのですが CGI開発の基本がわかりやすくまとめられて
            いますのでご参考になさってください。

             [ AS/400 V3 TCP/IP機能とインターネット ]

            http://www-06.ibm.com/jp/servers/eserver/iseries/techinfo/cgiprog/doc.htm

    可変長のテキストファイルを作成したい おっさん さん [ 3月26日(水) 22時51分 ]

      V5R2を使用しています。
      Aレコードが3000バイト、Bレコードが1000バイト、Cレコードが50バイトのテキストファイルを取
      り込み、
      各々のレコードの何バイトかをバッチ処理の値で置き換えて、再度同じバイト数のテキストファイルを
      作成しようとしています。(各レコードの後半バイトはブランクで埋められています。)

      各々のレコードには漢字を含んでおり、SJISのコードのままCPYFRMSTMF CVTDTA(*NONE)で
      物理ファイル(3002バイト)に取り込んでいます。
      バッチ処理の結果の値をSJISに変換して、各レコードの値を置き換えてからテキストファイルにしようと
      していますが、3000・1000・50バイトのテキストファイルにする方法がわかりません。
      SJISでCRLF(0D0A)をセットしてCPYでテキストファイルにすると、CRLF以降のバイトも文字と認識して
      固定長になってしまい、CPYTOSTMFでテキストファイルにしようとする場合にはENDLINFMT(*FIXED)を
      指定すると
      固定長になり、ENDLINFMT(*CRLF)を指定するとブランクがトリミングされて3000・1000・50バイトにな
      りません。
      何か良い方法はないものでしょうか。

      RE:可変長のテキストファイルを作成したい IKD さん [ 3月30日(日) 16時56分 ]

        http://www.as400-net.com/database.html にある、

        19. データ・ベースをCSV形式に変換して共有フォルダーにコピーするには?

        を参考になさってください。
        IFS と DB2/400 のあいだの移行には、まだ問題があります。
        直接、C/400関数を RPG から起動したほうが確実で安全です。
        近日中に RPG による IFSファイル の処理を記述致します。

    Toolsのソースが参照できない Taku さん [ 4月9日(水) 9時53分 ]

      Toolsで紹介されているソースが参照できません。
      サーバーへのPingも通らず、閉鎖されてしまったのでしょうか??

      ちなみに、急に必要なのは『DSPFL』です。

      RE:Toolsのソースが参照できない IKD さん [ 4月9日(水) 16時26分 ]

        ルーターを再起動しましたので現在は PING も
        通りますし、ご使用になれます。
        申し訳ございませんでした。

    MSGID:"CPI2417"の*BREAK回避 よし さん [ 4月9日(水) 10時2分 ]

      バッチで起動するCLプログラムにおいて、
      ジョブメッセージが最大サイズに達した時の対策として、 
      ジョブメッセージを折返す設定で起動しています。 

      しかし、ジョブメッセージの折返し時にコンソールに対して 
      以下のような通知メッセージが送られきます。
      ”ジョブメッセージ待ち行列 XXXXXXXXXXXX で折り返しがあった。”

      この通知メッセージを表示しない(コンソールに通知しない)方法はあるでしょうか。

      永久的に起動し続けるジョブのため、その都度通知されるのは運用上望ましくありません。

    PNLGRPのタグ JUNKIEXXL さん [ 4月11日(金) 18時27分 ]

      パネルトピック内に「PNLGRPのタグの詳細はIBM「AS/400適用業務画面プログラミング」を参照のこ
      と。」とありますが、この参照先をご存知の方いらっしゃいましたら、教えていただけませんでしょ
      うか。

      RE:PNLGRPのタグ IKD さん [ 4月14日(月) 18時9分 ]

        残念ながらIBM によって今では廃止されてしまっています。
        「適用業務画面プログラミング」の手引きは V3R2M0 が
        最後です。CDを入手して頂くしか方法はありません。
        他のマニュアルもそうですが OS400 API 等の詳細なマニュアルが
        日本語化されていたのは V3R2M0/V3R7M0 が最後です。
        実は日本IBM でも公開されているマニュアルは一部であり
        米国IBM のサイトであれば、すべてのマニュアルが揃っています。

        日本語で*PNLGRP の仕様を参照する手段は現在ありませんので
        今後このサイトで紹介していきたいと思います。

    RATE関数をRPGで実現できる? ルパン さん [ 4月17日(木) 14時58分 ]

      エクセルで料率をもとめるRATE関数がありますが、
      AS/400上でその計算ができないものか悩んでおります。
      無理!なら諦めますが、何かアドバイスあればお願いいたします。

    RATE関数をRPGで実現できる? ルパン さん [ 4月17日(木) 14時59分 ]

      エクセルで料率をもとめるRATE関数がありますが、
      AS/400上でその計算ができないものか悩んでおります。
      無理!なら諦めますが、何かアドバイスあればお願いいたします。

    コマンドのプロンプト画面に関して JUNKIEXXL さん [ 4月25日(金) 11時40分 ]

      例えば、「WRKSPLF」コマンドにてオプション「2」を入れて実行ボタンを押すと、パラメータ画面
      が表示されますが、通常「F10」を押さないと出てこないパラメータ(例:印刷装置)まで、既に
      表示されています。

      この機能をパネルグループで実現したいのですが、可能でしょうか。CHGPLFAコマンドをパネルグル
      ープ内で起動し、同じようなプロンプト画面をだしたいのですが、、、。

      どなたかご存知のかたいらっしゃいましたら、ご教示ください。

      支離滅裂な文章ですみません、、、。

    コマンドのプロンプト画面に関して JUNKIEXXL さん [ 4月25日(金) 12時6分 ]

      例えば、「WRKSPLF」コマンドにてオプション「2」を入れて実行ボタンを押すと、パラメータ画面
      が表示されますが、通常「F10」を押さないと出てこないパラメータ(例:印刷装置)まで、既に
      表示されています。

      この機能をパネルグループで実現したいのですが、可能でしょうか。CHGPLFAコマンドをパネルグル
      ープ内で起動し、同じようなプロンプト画面をだしたいのですが、、、。

      どなたかご存知のかたいらっしゃいましたら、ご教示ください。

      支離滅裂な文章ですみません、、、。

      RE:コマンドのプロンプト画面に関して JUNKIEXXL さん [ 5月8日(木) 18時41分 ]

        すみません。自己解決しました。

        > 例えば、「WRKSPLF」コマンドにてオプション「2」を入れて実行ボタンを押すと、パラメータ画

        > が表示されますが、通常「F10」を押さないと出てこないパラメータ(例:印刷装置)まで、既

        > 表示されています。
        > 
        > この機能をパネルグループで実現したいのですが、可能でしょうか。CHGPLFAコマンドをパネルグ

        > ープ内で起動し、同じようなプロンプト画面をだしたいのですが、、、。
        > 
        > どなたかご存知のかたいらっしゃいましたら、ご教示ください。
        > 
        > 支離滅裂な文章ですみません、、、。

    System i の研修 たー さん [ 4月25日(金) 12時57分 ]

      初めまして。

      私は、ユーザ企業でAS/400 V4のプログラム開発・運用・保守を担当しています。
      今回、システムトラブルの対応や事前保守(チューニング)の能力を向上させるため、外部研修に
      参加しようと思っているのですが、IBMの研修は「帯に短し襷に長し」という感じで、他の研修を探
      しています。

      最近まで、オープン系を担当することが多く、ホストの研修を開催しているところを知らないの
      で、ぜひアドバイスをお願いします。

      RE:System i の研修 S36 さん [ 5月2日(金) 10時26分 ]

        某社の研修はハードを売るためです。
        まともに信じると、一気にDISK使用率が上がります。
        ----------------------------------------------------
        逆に言えば、DISK使用率を下げる事がなりより優先します。
        理由は省略します。
        裏技探しは、やめたほうが良い。

    関数の作り方?について ks さん [ 5月8日(木) 13時7分 ]

      初めて利用させていただきます。
      現在as400のweb化をRPG-CGIを使用して構築してるのですが、ブラウザとのデータのやりとりの部分
      で苦戦しています。
      ブラウザではすべて文字と認識されてしまうため、金額などの数値項目も
      文字として扱われます。
      as上で値を取得したときに数値と認識して処理できれば一番いいのですが、今のところ
      文字として受け取ったものを数値に変換するしかないのかなと思っています。
      そこでRPG4で文字→数値に変換する外出しの関数みたいなのを作成して呼び出すことは可能ですか

      例えば
      変換PGMで文字から数値への変換サブを作成。それを関数としてよびたいんです。

      もしくは簡単に変換できるものがあれば教えてください

      RE:関数の作り方?について IKD さん [ 5月10日(土) 13時3分 ]

        EnterpriseServer では TODIGIT という名前のサブルーチンが
        提供されています。
        AutoWeb や TONAKAI では通常の CGI のように文字−>数字の変換を
        全く考慮する必要はありませんが、CGI では確かに必要となります。
        以下の TODIGIT のソースを示します。
        プロシージャーにすれば関数のように利用することもできます。


        ソースは http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QRPGLESRC.FILE/TODIGIT.MBR


        0001.00 C******************************************************               
        0002.00 C     TODIGIT       BEGSR                                             
        0003.00 C******************************************************               
        0004.00 C*  文字 CHR30 の値を数字の DIGIT (30,5) に置換えます。               
        0005.00 C*ラ 例 ン ----------------------------------------------               
        0006.00 C*                  MOVEL     MYCHR         CHR30                     
        0007.00 C*                  EXSR      TODIGIT                                 
        0008.00 C*                  Z-ADD     DIGIT         MYDIGIT                   
        0009.00 C*-----------------------------------------------------               
        0010.00 CSR                 MOVE      *BLANKS       FGO               1       
        0011.00 CSR                 Z-ADD     0             DIGIT            3005     
        0012.00 CSR   ' '           CHECKR    CHR30         SIZE#             4 0     
        0013.00 CSR   SIZE#         IFGT      0                                       
        0014.00 CSR   1             DO        SIZE#         CNT               4 0     
        0015.00 CSR   1             SUBST     CHR30:CNT     FLD1              1       
        0016.00 CSR   FLD1          IFGE      '0'                                     
        0017.00 CSR   FLD1          ANDLE     '9'                                     
        0018.00 CSR                 MOVE      FLD1          DG01              1 0     
        0019.00 CSR                 MULT      10            DIGIT                     
        0020.00 CSR                 ADD       DG01          DIGIT                     
        0021.00 CSR                 ELSE                                           
        0022.00 CSR   FLD1          IFEQ      '-'                                  
        0023.00 CSR                 MOVE      FLD1          FGO               1    
        0024.00 CSR                 END                                            
        0025.00 CSR                 END                                            
        0026.00 CSR                 END                                            
        0027.00 CSR                 END                                            
        0028.00 CSR   FGO           IFEQ      '-'                                  
        0029.00 CSR                 Z-SUB     DIGIT         DIGIT                  
        0030.00 CSR                 END                                            
        0031.00 CSR                 MOVE      *BLANKS       CHR30            30    
        0032.00 CSR                 ENDSR     

    ジョブの番号取得 ks さん [ 5月8日(木) 18時9分 ]

      RPG-CGIでweb化しているのですが、デバッグする際WRKACTJOBでみたとき
      下記のように表示されているものをオプション5でみて番号をみて

      APACHEDFT    QTMHHTTP    BCI      .0  PGM-QZSRCGI      TIMW 

      STRSRVJOB JOB(xxxxxx/QTMHHTTP/APACHEDFT)
      などとうってからSTRDBGしています。
      それが毎回面倒なのでCLを作成してコマンド化できればとおもってるのですが
      CLでRTVJOBAでとれそうなかんじはしたのですが、PGM-QZSRCGIの番号まで
      指定してとることはできるのでしょうか


    ジョブの番号取得 ks さん [ 5月8日(木) 18時11分 ]

      RPG-CGIでweb化しているのですが、デバッグする際WRKACTJOBでみたとき
      下記のように表示されているものをオプション5でみて番号をみて

      APACHEDFT    QTMHHTTP    BCI      .0  PGM-QZSRCGI      TIMW 

      STRSRVJOB JOB(xxxxxx/QTMHHTTP/APACHEDFT)
      などとうってからSTRDBGしています。
      それが毎回面倒なのでCLを作成してコマンド化できればとおもってるのですが
      CLでRTVJOBAでとれそうなかんじはしたのですが、PGM-QZSRCGIの番号まで
      指定してとることはできるのでしょうか


      RE:ジョブの番号取得 IKD さん [ 5月10日(土) 12時55分 ]

        残念ながらできません。

        一般の HTTPサーバー(Apache も含めて) では、CGI がどのプロセスで
        起動されるかは、全く、不定です。
        従って動作させてみて初めて、起動プロセスのJOB番号を知ることができます。
        IBM 解説書では JOB番号を予め特定するためには
        子プロセスの数を 1個だけに限定して HTTPサーバーを起動するように
        解説されていますが、これは次の理由によって適切ではありません。

         ・本稼動の子プロセスを一個だけに絞ることは実用上できない。
         ・ブラウザは、必ずしも1対1 で子プロセスと会話するのではなく、
          フレームや画像ファイルが含まれている場合は、複数(2個) の
          Socket を使って、複数(2個) の子プロセスと通信する仕様となっている。

        上記のように、この解説者はブラウザや HTTPプロトコルの仕様を理解できて
        いません。

        しかしAlaska では、この問題は解決されています。
        開発者は、JOB番号を特定することなく、いつでも任意にソース・ディバッガーを
        使用することもできます。
        また仮想端末として起動しているJOB もディバッグすることができます。
        これは Alaska に、その機能を持たせているからです。
        ただし一般のHTTPサーバーのユーザーでも、この問題には非常に不便を
        感じているはずですので何らかの方法を現在、検討しているところです。
        とり急ぎの回避策としては CGI に DSPLY 命令を入れるのも,ひとつの手です。
        CGI はバッチとして動作していますので DSPLY 命令は QSYSOPR に表示されます。
        この方法もお試しください。


    UIMタグに関して JUNKIEXXL さん [ 5月20日(火) 15時40分 ]

      LISTACTタグの「ENTER」キーワードと「EXTENTER」キーワード、また、
      「PROMPT」キーワードと「EXTPROMPT」キーワードではどのような挙動
      の違いがあるのでしょうか。

      ご存知の方いらっしゃいましたらご教示願います。

      RE:UIMタグに関して YY さん [ 5月22日(木) 0時26分 ]

        EXTENTERおよびEXTPROMPTは、拡張処置項目(項目見出しのすぐ下に表示されるところ)に対しての
        指定です。

    ifs上のイメージファイルをマージして印刷する方法は? 現役退き10年 さん [ 5月26日(月) 14時9分 ]



      ある知人に RPGにてスプールファイルとIFS上にイメージファイル(.jpeg等)をマージして
      印刷する方法があると聞きました。

      v5からの機能のようでDDSにAFPRSCキーワードを指定する…。
      という様なところまででして。

      開発手法がわからないのです。

      上記処理をAS内にてクローズした仕組みを作りたく
      実績のある開発プロフェッショナルの方々の助言を賜りますようお願い致します。

    IFS上のファイルの読み込み KS さん [ 5月28日(水) 12時59分 ]

      [OS/400のVER]:
      現在RPG-CGIでWEB化をしています。
      その際、HTMLはRPG内に記述しています。
      そうなるとはやりメンテナンス性に欠ける部分があるように思っています。
      そこでHTMLファイルだけIFS上においてそれを読み込むことができないだろうかと
      考えています。
      RPGでIFSのファイルを読む込むことはできるんでしょうか
      その際パス(?)の設定や読み込み方はどのようにすればいいかおしえてください

      RE:IFS上のファイルの読み込み IKD さん [ 5月29日(木) 9時49分 ]

        ご指摘のとおりです。
        従来の CGI の実行が遅いと評価されるのは
        CGI での EBCDIC/ASCII 変換に大量のオーバー・ヘツドを
        生じているからです。

         ・HTML ソースを RPG の中で記述している。
          ・HTML ソースを ソース・ファイルやデータ・ペースとして記述している。

        ... このような場合は、実行時間の 80 〜 90 % は、EBCDIC/ASCII に変換に
          時間を取られてしまいます。

        これに対して、ご提案のように HTML を ASCII コードで IFS に保存しておいて
        データ部分のみを EBCDIC/ASCII 変換して HTMLに埋め込んで送出するようにすれば
        最小のオーバー・ヘッドで済み、パフォーマンスを劇的に改善させることができます。
        Web は、パフォーマンスこそ命ですので、是非とも IFS に HTML を保存することを
        お勧め致します。(EnterpriseServer も当然、この手法です。)

        ご質問の趣旨であるRPG による IFS ストリーム・ファイルの処理の方法にさきましては
        このサイトの下記の記事がご参考になります。
         
        http://www.as400-net.com/rpg.html

        136. RPG でストリーム・ファイルを読み取るには

        RE:IFS上のファイルの読み込み ks さん [ 6月3日(火) 9時36分 ]

          現在はRPG-CGIでRPG内にHTMLを記述しています。それをIFSにhtmlだけをおいて
          入出力させようとするとまず、RPGでそのIFS上にあるhtmlを読み込んで出力する必要があるのです
          が、読み込んだ地点でEBCDIC/ASCII変換することになると思っています

          その辺の入出力の知恵をお借りできませんか

          RE:IFS上のファイルの読み込み IKD さん [ 6月3日(火) 10時17分 ]

            RPG の演算用に ASCIIで保管されている IFSストリームを
            ASCIIから EBCDIC に変換したのでは折角、ASCII で IFS に保管した意味が
            なくなります。
            IBM HTTPサーバーや Apache は 省略時は EBCDIC->ASCII 変換ですが
            設定によって 無変換、つまり ASCII->ASCII で出力することができますので
            設定をお調べください。
            CGI が最も処理時間を要するのはコード変換ですのでコード変換は
            極力少なくするようにしなければなりません。
            ASCII で読み込んだ IFS ストリームに対して文字列の検索等が必要になるかと
            思いますが検索する文字列のほうを EBCDIC->ASCII に変換して ASCII のままで
            処理するようにしてください。
            ANSI-C (C言語) であれば 

            #pragma convert(850)
                :
               (ここで記述したソースの定数はすべてASCII と見なされる)
                :
            #pragma convert(0)

            という便利な ASCII 記述の方法があるのですが RPG では、このような機能は
            ありません。唯一使えそうなのが %GRAPH ですが。

          RE:IFS上のファイルの読み込み 伊集院博 さん [ 6月3日(火) 10時55分 ]

            htmlをRPG内に読込むのならIFSに置くのではなく
            htmlだけ切り出してソースメンバーに登録したらいかがでしょうか。
            例えば、CGILIB/QHTMLSRC(HTML1)で作成し、
            このファイルをOVRDBFしてREADで読込む様にする。
            おそらくHTMLはPCで作成するかと思いますが、
            IFSにコピーするにはFTPか何かでUPすると思いますので
            UPする手間は同じだと思います。
            (IFSをドライブに割り当てていたら別ですが...)
            逆にEBCDIC/ASCII変換の回数が減って良いのではないでしょうか。

            RE:IFS上のファイルの読み込み ks さん [ 6月3日(火) 11時6分 ]

              > htmlをRPG内に読込むのならIFSに置くのではなく
              > htmlだけ切り出してソースメンバーに登録したらいかがでしょうか。
              > 例えば、CGILIB/QHTMLSRC(HTML1)で作成し、
              > このファイルをOVRDBFしてREADで読込む様にする。
              > おそらくHTMLはPCで作成するかと思いますが、
              > IFSにコピーするにはFTPか何かでUPすると思いますので
              > UPする手間は同じだと思います。
              > (IFSをドライブに割り当てていたら別ですが...)
              > 逆にEBCDIC/ASCII変換の回数が減って良いのではないでしょうか。

              要は画面ファイルのようにCGILIB/QDSPSRCにDSPファイルを置くのと同じ要領ということですかね?
              そのときにそのファイルを読み込むやり方がわからないのですが、OVRDBFでどのように
              記述したらいいのでしょうか?そうなるとCLPGMがでてきますよね

              RPG-CGI、CLの呼び出し手順はどうなるのでしょうか




              RE:IFS上のファイルの読み込み 伊集院博 さん [ 6月3日(火) 12時37分 ]

                そうです。DSPFやPRTFの様に定義を外出しする。
                方法として幾つかあると思います。
                @ファイルをUSROPN指定して
                QCMDEXCでOVRDBFしてからファイルをOPENする。
                AEXtFILE、EXTMBRキーワードを指定するです。 

            RE:IFS上のファイルの読み込み ks さん [ 6月3日(火) 11時44分 ]

              > htmlをRPG内に読込むのならIFSに置くのではなく
              > htmlだけ切り出してソースメンバーに登録したらいかがでしょうか。
              > 例えば、CGILIB/QHTMLSRC(HTML1)で作成し、
              > このファイルをOVRDBFしてREADで読込む様にする。
              > おそらくHTMLはPCで作成するかと思いますが、
              > IFSにコピーするにはFTPか何かでUPすると思いますので
              > UPする手間は同じだと思います。
              > (IFSをドライブに割り当てていたら別ですが...)
              > 逆にEBCDIC/ASCII変換の回数が減って良いのではないでしょうか。

              要は画面ファイルのようにCGILIB/QDSPSRCにDSPファイルを置くのと同じ要領ということですかね?
              そのときにそのファイルを読み込むやり方がわからないのですが、OVRDBFでどのように
              記述したらいいのでしょうか?そうなるとCLPGMがでてきますよね

              RPG-CGI、CLの呼び出し手順はどうなるのでしょうか




    物理ファイルで削除したレコードを復活させる方法 なつ さん [ 5月28日(水) 16時32分 ]

      物理ファイルで物理削除(DELET)したレコードを復活させる方法などあるのでしょうか?

    ディジタル証明書マネージャー ks さん [ 6月2日(月) 17時40分 ]

      http://asのipアドレス:2001/ で
      「ディジタル証明書マネージャー」からSSL設定を行おうとしています。
      しかし「システムにいずれかの Cryptographic Access Provider プロダクトをインストールしなけ
      れば、ディジタル証明書マネージャー (DCM) 機能を使用できません。 システム管理者に連絡して
      ください。」
      というメッセージが出て先に進めない状態です。

      どうすればいいかどなたかおしえてください

      RE:ディジタル証明書マネージャー IKD さん [ 6月3日(火) 9時23分 ]

        GO LICPGM で

        5722SS1  *COMPATIBLE   ディジタル証明書マネージャー 
        5722SS1  *COMPATIBLE  CCA 暗号サービス・プロバイダー

        の両方が導入されていることが必要ですが
        エラー・メッセージは「CCA 暗号サービス・プロバイダー」が
        導入されていないことを示しています。
        SSL 設定は「アイマガジン誌」( http://www.midrangeserver.co.jp )の 
        VOL.2 に詳細を紹介していますので
        ご一読ください。( SSLの設定は結構、タフです。)

        RE:ディジタル証明書マネージャー ks さん [ 6月3日(火) 12時46分 ]


          > 5722SS1  *COMPATIBLE   ディジタル証明書マネージャー 
          > 5722SS1  *COMPATIBLE  CCA 暗号サービス・プロバイダー

          弊社のASでは「CCA 暗号サービス・プロバイダー」がありませんでした。
          これはどういうライセンスなのでしょうか?
          別途購入が必要なのでしょうか。
          できたらオプション番号を教えていただきたいのですが。

          RE:ディジタル証明書マネージャー IKD さん [ 6月3日(火) 14時55分 ]

            5722SS1 が番号です。
            SSL認証コードを生成するためのライセンスですが
            無償であると思います。
            OS400 導入のときに導入されていないものと思われますので
            特約店にお問合せください。

            RE:ディジタル証明書マネージャー ks さん [ 6月9日(月) 11時0分 ]

              ライセンスを両方とも導入しましたが
              同じ
              「システムにいずれかの Cryptographic Access Provider プロダクトをインストールしなけ
              れば、ディジタル証明書マネージャー (DCM) 機能を使用できません。 システム管理者に連絡し
              てください。」がでます。
              他に足りない点がなにかあるのでしょうか?

    Autowebでカーソル位置による検索プログラムの起動 伊集院博 さん [ 6月12日(木) 7時54分 ]

      お世話になります。
      通常のエミュレータを使用したアプリで、
      カーソル位置でF4などの検索キーを押下した時、
      座標(又は項目ID)を読取って、
      検索プログラムを起動するという事が良く有りますが、
      EPSのAutowebで使用したとき可能なのでしょうか?
      不可能な場合、何か簡単な回避策は有るのでしょうか?

      RE:Autowebでカーソル位置による検索プログラムの起動 IKD さん [ 6月12日(木) 10時8分 ]

        可能です。

        HTML ではカーソル位置の検出は不可能に思えますが
        AutoWeb では INFDS を使ってのカーソル位置を検出して
        POPUP などの子プログラムの起動を行うこともできます。
        また HTML生成後に、そのフィールドをどのような位置にデザインを
        変更したとしても元のカーソル位置が仮想端末API に渡されます。

        さらに出力フィールドのカーソル位置の検出を行うこともできます。
        HTML の場合、カーソルは入力フィールドにしか位置づけることは
        できませんが、マウスポインターを出力フィールドの位置に
        セットして、機能キーを押せば、その出力フィールドの行・桁が
        取得されます。

        ただしカーソルが位置づけられていたカーソル内での桁位置までの
        検出はできません。(そのフィールド内のうちの何桁めに位置づけられて
        いるかの情報)

        RE:Autowebでカーソル位置による検索プログラムの起動 伊集院博 さん [ 6月12日(木) 12時38分 ]

          Autowebの仕組みが良く理解できていませんが、
          HTML上でカーソルを動かすと裏でエミュレータ画面が存在していて
          同時にカーソルが移動しているイメージなのでしょうか。
          HTMLを変更した場合、画面サイズを超える事もあるでしょうから
          何らかの形で元のカーソル位置を検出できるような仕組みになっているのですね。
          ありがとうございました。

          RE:Autowebでカーソル位置による検索プログラムの起動 IKD さん [ 6月12日(木) 15時50分 ]

            AutoWeb の背後にエミュレータ画面は存在していません。
            従来のように TELNET を起動するのではなく仮想端末API を起動して
            5250ストリームを直接、入手しています。
            ( TELNET であればフィールドの属性を読み取ることができませんので
              ユーザーが数字/文字等の妥当性検査を追加する必要があります。)

            カーソル位置を取得する仕組みは簡単で
            AutoWeb によって生成された HTML上の入力フィールドの ID は
            Bxxyy (xx=行, yy=桁) というように命名されています。
            ユーザーがこのフィールドにカーソルをセットすると
            JavaScript : OnClick によってフィールドの ID がブラウザ上で
            一時的に保管されます。
            最後にユーザーが GOボタンや機能キーを押して SUBMIT すると
            CURSOR=Bxxyy という変数としてサーバー(System i) に送られます。
            AutoWeb は、この規則に従ってカーソルの行と列を取得して、
            仮想端末API に伝えます。(仮想端末API への投入は必ず正しいカーソル位置が
            必要です。)
            この結果としてユーザーのRPG の INFDS でも正しいカーソル位置を
            取得することができるようになります。
            出力フィールドの場合はやや複雑ですが同じような原理です。
            デモでよく使用する F4キーによるPOPUP表示もカーソル位置を読んで
            POPUP 表示しています。 

    RPG SQLでNULLの使用 しゅう さん [ 7月15日(火) 11時0分 ]

      いつも勉強させていただいています。
      さて、現在JAVAで作成されたDBをRPG SQLにて処理するプログラムを作成していますが
      該当DB内にNULLがセットされているため、RPG SQL側のFETCH命令で305のエラーが発生
      してしまいます。

      DBのフィールド単位に、ALWNULL設定をとも考えましたが、RPG側の設定でNULLの使用許可が
      出来るようなことがないでしょうか?

      宜しくお願いいたします。

      RE:RPG SQLでNULLの使用 IKD さん [ 7月17日(木) 10時46分 ]

        SQL0305 は確かに NULL値をセットする変数が存在しないという旨のエラーですが
        逆にこのエラー・メッセージを読み代えると、対象レコードが存在しないのに
        FETCH が実行されているということになります。
        つまり、FETCH の直前に実行されている SELECT 文での選択レコードが
        何もなかったのに、その判断が成されずに FETCH が実行されたということです。
        単にNULL値のレコードが見つかったという訳ではないと思われます。
        SELECT 後にレコードが見つからなかった場合の判断を追加してみてください。

        RE:RPG SQLでNULLの使用 しゅう さん [ 7月22日(火) 11時49分 ]

          IKDさん
          ご返信ありがとうございます。
          > 単にNULL値のレコードが見つかったという訳ではないと思われます。
          > SELECT 後にレコードが見つからなかった場合の判断を追加してみてください。

          ご指摘頂いたとおり、試してみましたが、レコードは存在しているようです。
          やはりIFNULL等で1項目づつ判断しなければならないでしょうか?

          RE:RPG SQLでNULLの使用 IKD さん [ 7月22日(火) 18時38分 ]

            具体的には、どのようなコーディングでしょうか ?
            CREATE TABLE を事前に行っておられるのであれば

            CREATE TABLE(QTEMP/SHOHIN)(
               SHNAME CHAR(32) NOT NULL DEFAULT '
            }

            のようにして事前に NULL に対して省略時の処理を定義しておくことが
            できます。

    AS400からのFTP送信について にこにこ さん [ 7月24日(木) 9時51分 ]

      いつもお世話になります。

      AS400からのFTP送信時のコード変換について困っています。
      以下の指定をして送信しようとすると、
      データを CCSID 5026 から CCSID 932 に変換することができな い:理由 3028 
       226 Transfer complete. 
      225 ABOR command successful.
      とのログが出力され、途中で処理が終わり、全件送信する事が出来ません。
      【指定内容】
      ASCII 
      LTYPE C 932

      全角を含む文字列の前後ブランクを除くPGMを組み込んだ
      後に発生したのですがデータ上はシフト文字を含め正しく表示されており文字化け等はないようで
      す。 

      どなたか原因をご存知の方がいらっしゃいましたらお教えてください。
      よろしくお願いします!!

      RE:AS400からのFTP送信について 伊集院博 さん [ 7月28日(月) 8時22分 ]

        文字化け無しとの事ですが、上記のエラーはシフトコードが欠けている場合等に起こります。
        QUERYなどでデータを見ただけでは文字化けは見つけられ無いケースがあります。再度、データのご
        確認をしてみては。

        RE:AS400からのFTP送信について にこにこ さん [ 7月28日(月) 13時33分 ]

          > 文字化け無しとの事ですが、上記のエラーはシフトコードが欠けている場合等に起こります。
          > QUERYなどでデータを見ただけでは文字化けは見つけられ無いケースがあります。再度、データの

          > 確認をしてみては。


          再度確認してみたところスペース除去時のシフト文字編集時にシフトインを重複させてしまってお
          り、その箇所で文字化けが発生していました。
          このようなエラーの場合には必ずどこかで文字化けが発生しているのですね。

          ご回答ありがとうございました。

    画面フィールドの先行マイナス入力 gth さん [ 7月31日(木) 10時36分 ]

      はじめて質問させて頂きます。
      画面の数字8桁の入出力フィールドに先行マイナスを入力することは
      可能でしょうか?
      ようは「-5000」と入力して実行キーを押したときに、
      「-5,000」と表示したいのです。
      EDTCDEの「N」だと表示はできるのですが、
      実行キーを押すと「5,000」とマイナスが消えてしまいます。
      なにか解決方法はありませんんでしょうか?
      よろしくお願い致します。

    リモートASのデータベース参照 ken さん [ 8月22日(金) 17時28分 ]

      リモートのAS400のデータをローカルのASにてRPGなどで更新・参照を行いたいのですが
      DDMファイルを使えば出来るのかな?と言うところまでは何となく分かったのですが、そこから
      どの様にしたら良いか分からず、今回投稿させていただきました。ご存知の方お見えになりました
      らご教授、よろしくお願い致します。

      RE:リモートASのデータベース参照 IKD さん [ 8月22日(金) 18時38分 ]

        おおまかな手順は以下のとおりになります。
        かなり、ややこしくて慣れが必要となります。

        @ 通信構成を作成する。
          CRTDEVAPPC (装置記述の作成) によって
          相手方への通信構成を作成します。
          既に通信構成があるかどうかは
            WRKCFGSTS CFGTYPE(*CTL) CFGD(*CMN) によって
            確認してください。
          通信構成が存在していて *VRYON になっていれば
            構成の作成は不要です。 
          
        A CFGDSTSRV コマンド (配布サービス構成) によって
         
         1. 配布待ち行列 を作成して、
         2. 経路指定テーブル を作成します。

        B WRKDIRE によってディレクトリー項目を登録します。

        C CRTDDMF を作成する。

        http://www.as400-net.com/database.html

        の「22. DDMファイルを作成するには?」

    画面サイズ27x132について もりぞう さん [ 8月25日(月) 15時49分 ]

      こんにちわ。

      現在、画面サイズ27x132を使用して画面を作成していこうと考えていますが、
      今後WebFacingも視野にある中でEnterPrizeServerでは27x132の画面でも対応していますか?

      また、そもそもなぜ27x132の画面サイズがこれほど世に普及していないのでしょうか?

      RE:画面サイズ27x132について SolidBalloon さん [ 8月25日(月) 16時17分 ]

        > また、そもそもなぜ27x132の画面サイズがこれほど世に普及していないのでしょうか?

        世の中で使われているディスプレイがまだ4:3サイズだというのが大きいでしょうね。
        もしハイビジョン(16:9)サイズだったら画面の収まりもいいのでしょうけど、
        まだまだオフィスには普及していません。

        もうひとつ
        ダム端やDOS−PCでは右側と下側が表示されないという問題があります。
        スクロールするのは億劫だと思いますよ。

      RE:画面サイズ27x132について IKD さん [ 8月25日(月) 17時2分 ]

        EnterpriseServer Ver5.0 の AutoWeb は
        27 * 132 画面にも対応しています。
        AutoWeb では 80 * 24画面と 27 * 132画面が混在していても
        同時に利用することができます。

        RE:画面サイズ27x132について もりぞう さん [ 8月25日(月) 18時38分 ]

          お二方、ありがとうございます。

          しばらく開発環境にて27x132で運用してみて問題なそうであれば是非とも拡張してみます。

          それと今日RPGのカテゴリーに追加されたILE入門編ですが、本当に目からうろこです。
          RPGの開発に携わって16年目になりますが、ILEはメンテをしたことはあっても
          その機能を生かした開発はしたことがなく、常々近いうちにはILEと思いつつ今日まできてしまいま
          した。

          新しい製品を生み出し時代遅れと言われ続けたAS400の生きる道を提供し、
          弛まぬ開発姿勢とその情報を惜しみなく提供し続ける御社に対し
          賛辞をお送りさせて頂きます。

          今後とも宜しくお願いいたします。

          RE:お礼 IKD さん [ 8月26日(火) 9時37分 ]

            身に余るご評価を頂きまして誠にありがとうございます。
            スタッフ一同よりお礼申し上げます。
            また記事が少しでもお役に立てれば幸いです。
            今後も多数、お役に立てる記事を用意させて頂く所存です。

            弊社製品に関しましても
            まだまだ機能拡張が必要であると認識を新たにしております。
            今後のご指導をよろしくお願い申し上げます。
            ありがとうございました。

    OPNQRYFで件数0件だった時の制御 ぽにょ さん [ 9月4日(木) 19時59分 ]

      CL内でOPNQRYFの結果が0件かどうかの判断をしたいのですが、
      どうすればよろしいでしょうか?
      ※0件だった場合に、後続処理をしないためです。

      RE:OPNQRYFで件数0件だった時の制御 通りすがり さん [ 9月5日(金) 12時35分 ]

        RTVMBRD FILE(*LIBL/ファイルID)NBRCURRCD(変数)
        でレコード件数が取得できます。

        RE:OPNQRYFで件数0件だった時の制御 ぽにょ さん [ 9月8日(月) 17時8分 ]

          通りすがりさん、ありがとうございました。
          ただ、RTVMBRDで試しましたが、ダメでした…
          (メンバー内のレコード件数は取得できましたが、OPNQRYFでの件数は取得できないようです。)
          この件は、後続処理で、件数0の場合、処理を抜けるようにして解決しました。
          お騒がせしました!

        RE:OPNQRYFで件数0件だった時の制御 ぽにょ さん [ 9月8日(月) 17時12分 ]

          通りすがりさん、ありがとうございました。
          ただ、RTVMBRDで試しましたが、ダメでした…
          (メンバー内のレコード件数は取得できましたが、OPNQRYFでの件数は取得できないようです。)
          この件は、後続処理で、件数0の場合、処理を抜けるようにして解決しました。
          お騒がせしました!

    AS400とUPSの動作について katsuko さん [ 9月22日(月) 11時27分 ]

      AS400/OS:V5R2のバージョンで
      停電が起きた時にUPSからASにシャットダウン信号を送るわけですが、
      停電が起きてから「何分でシャットダウンする」と判断させるという設定する場所を教えてくださ
      い。

      バージョンが古くサポートから外れてしまいIBMで確認が取れなかったため
      教えてください。
      よろしくお願いします。

      RE:AS400とUPSの動作について IKD さん [ 9月22日(月) 12時20分 ]

        QUPSDLYTIM 補助電源機構の遅延時間 のことでしょうか ?
        この値は 200秒が初期値ですが古いリリースから変わっていません。

    QUSRTOOLについて ks さん [ 10月15日(水) 12時59分 ]

      こちらのサイトでQUSRTOOLを使用するにはという項目で(http://www.as400-
      net.com/tips/rpg/47.html)参考にさせてもらいいざCALL QUSRTOOL/UNPACKAGE('*ALL', 1) 
      を実行してみたら「'UNPACKAGE(' から始まる修飾子の文字が正しくない 」となりました

      UNPACKAGEというライブラリーは存在しないのですがどのようにしたら導入できるでしょうか?

      RE:QUSRTOOLについて QQ さん [ 10月16日(木) 10時13分 ]

        UNPACKAGEはQUSRTOOLのライブラリにあるCLのIDです。
        試していないので良くわかりませんが、
        CALL QUSRTOOL/UNPACKAGE PARM('*ALL' X'001F')
        で実行してみたらどうでしょうか?

        RE:QUSRTOOLについて ks さん [ 10月16日(木) 13時54分 ]

          > UNPACKAGEはQUSRTOOLのライブラリにあるCLのIDです。
          > 試していないので良くわかりませんが、
          > CALL QUSRTOOL/UNPACKAGE PARM('*ALL' X'001F')
          > で実行してみたらどうでしょうか?
          > 

          ライブラリーQUSRTOOLがないといわれました。できないようです

        RE:QUSRTOOLについて ks さん [ 10月16日(木) 14時56分 ]

          > UNPACKAGEはQUSRTOOLのライブラリにあるCLのIDです。
          > 試していないので良くわかりませんが、
          > CALL QUSRTOOL/UNPACKAGE PARM('*ALL' X'001F')
          > で実行してみたらどうでしょうか?
          > 

          ライブラリーQUSRTOOLがないといわれました。できないようです

    QUSRTOOLについて ks さん [ 10月15日(水) 13時30分 ]

      こちらのサイトでQUSRTOOLを使用するにはという項目で(http://www.as400-
      net.com/tips/rpg/47.html)参考にさせてもらいいざCALL QUSRTOOL/UNPACKAGE('*ALL', 1) 
      を実行してみたら「'UNPACKAGE(' から始まる修飾子の文字が正しくない 」となりました

      UNPACKAGEというライブラリーは存在しないのですがどのようにしたら導入できるでしょうか?

    画面サブファイル使用COBOLのサンプルについて オリゼー さん [ 10月16日(木) 13時10分 ]

      いつも拝見させて頂いております。
      初投稿です。

      画面サブファイルを使用するCOBOLについて
      調べており、COBOLマニュアルに記載してある
      サンプルを使用してみようと思ったのですが、
      サンプルプログラムで使用しているDBファイル(PF)に
      どのような値を設定しておけば良いかわからない為、
      他で探してみたのですが、見つけられていない状況です。

      サブファイルレコードの各フィールドは入出力使用フィールドとなっている
      画面サブファイルを使用したCOBOLのサンプルについて
      ご存知の方がいらっしゃいましたら、
      お教え頂きたいと思います。

      以上、宜しく御願い致します。 

    プロシージャーの戻り値の複数定義は可能ですか 伊集院博 さん [ 10月21日(火) 9時25分 ]

      いつもお世話になっています。
      貴社の「Tips&Tecniques」をいつも参考にさせていただいています。
      サブプログラムのプロシージャー化を検討してみたいと思っております。
      タイトルにも有るようにプロシージャーの戻り値を複数定義は可能でしょうか?
      例えば文字列分割の機能をプロシージャー化する場合、
      どのように定義したらよいでしょうか。

      RE:プロシージャーの戻り値の複数定義は可能ですか IKD さん [ 10月24日(金) 14時35分 ]

        こちらこそ、お世話になります。
        プロシージャーの戻り値を複数定義することはできません。
        しかし、現実はご指摘のように結果として TRUE または FALSE を
        戻して、TRUE であれば、初めて戻り値を取得したい、というような
        処理の必要性があります。
        これを解決するにはプロシージャーのパラメータにポインターを
        定義することです。
        ポインターをパラメータとして渡して、渡されたプロシージャー側で
        そのポインターを基底とする変数を更新してやれば元の変数の実体を変更することが
        できます。
        この手法は他の言語でもよく使用されている方法です。
        下記にそのサンプルをご紹介します。
        この例では品種名 HNSNAM のポインターをパラメータ値として渡しています。
        このようなテクニックは EnterpriseServer Ver5.1 のヘルプでも
        詳細な解説を予定しています。

        Source: http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QRPGLESRC.FILE/TESTPTR.MBR

        0001.00 H DFTNAME(TESTPTR) DATEDIT(*YMD/) DFTACTGRP(*NO)                       
        0002.00 F**********  品種マスターの照会 ***************************************
        0003.00 FHINSHU    IF   E           K DISK                                     
        0004.00 F**********************************************************************
        0005.00 D GET_HINSHU      PR             4S 0                                  
        0006.00 D  HNSCOD                        4A   VALUE                            
        0007.00 D  HNSNAM_P                       *   VALUE                            
        0008.00                                                                        
        0009.00 D RES             S              4S 0                                  
        0010.00 D TRUE            S              4S 0 INZ(0)                           
        0011.00 D FALSE           S              4S 0 INZ(-1)                          
        0012.00                                                                        
        0013.00 C                   MOVEL     '0001'        HNSCOD                     
        0014.00 C                   EVAL      RES = GET_HINSHU(HNSCOD: %ADDR(HNSNAM))  
        0015.00 C                   IF        RES = TRUE                               
        0016.00 C*  ( 取得成功 ! )                                                     
        0017.00 C     'HNSNAM='     CAT(P)    HNSNAM:0      DSP40            40        
        0018.00 C     DSP40         DSPLY                   ANS               1        
        0019.00 C                   ELSE                                               
        0020.00 C*  ( 取得失敗 ! )                                                     
        0021.00 C     'FAILED'      DSPLY                   ANS                      
        0022.00 C                   END                                              
        0023.00 C                   SETON                                        LR  
        0024.00 C******************************************************              
        0025.00  *   GET_HINSHU :   品種名の取得                                     
        0026.00 C******************************************************              
        0027.00 P GET_HINSHU      B                   EXPORT                         
        0028.00 D                 PI             4S 0                                
        0029.00 D  HNSCOD                        4A   VALUE                          
        0030.00 D  HNSNAM_P                       *   VALUE                          
        0031.00                                                                      
        0032.00 D  RTNNAME        S             14    BASED(HNSNAM_P)                
        0033.00 C                   SETOFF                                       99  
        0034.00 C     HNSCOD        CHAIN     HINSHU                             99  
        0035.00 C     *IN99         IFEQ      *OFF                                   
        0036.00 C                   MOVEL     HNSNAM        RTNNAME                  
        0037.00 C                   RETURN    TRUE                                   
        0038.00 C                   ELSE                                             
        0039.00 C                   RETURN    FALSE                                  
        0040.00 C                   END                                              
        0041.00 P                 E                                                  

        RE:プロシージャーの戻り値の複数定義は可能ですか 伊集院博 さん [ 10月24日(金) 16時55分 ]

          なるほど...。
          戻り値のポインターを返す事ができるのですね。
          これであれば戻り値を複数定義する事も可能ですね。
          色々応用できそうです。
          ありがとうございました。

    ある用紙タイプのスプールをCPYSPLFで物理ファイルに作成したい なな さん [ 10月22日(水) 10時20分 ]

      現在S/36環境コマンドのCOPYPRTで特定の用紙タイプのみ物理ファイルに作成している。
         COPYPRT FABCD,DISKFL,CANCEL
              (用紙タイプABCDのスプールを物理ファイルDISKFLに作成後スプールを削除する)
      これをCPYSPLFコマンドに移行したい。
      テストを試みるがスプールファイル名が都度異なるため現実は不可能に近い。
      どなたか知恵を!!。

    FTP転送処理について どん さん [ 10月24日(金) 11時31分 ]

      以下の処理でAS400上のファイルをPCサーバーへ転送処理を行っております。
      処理WSID毎にFTPCMDXXXを作成しています。

      現在だと実行するWSIDが増えるたびにCLに修正を加え、
      FTPCMDソースを作成する必要があります。

      記述を物理等でもって処理できるのであれば、
      メンテナンスが非常に楽になると考えております。

      説明が拙く分かりにくいと思われますので、
      他に必要な内容がありましたら指摘下さい。

      宜しくお願い致します。

      TESTLB/QCLSRC SAMPLCL
      OVRDBF     FILE(INPUT) TOFILE(TESTLB/QFTPIN) +  
                   MBR(FTPCMDXXX) LVLCHK(*NO)           
      OVRDBF     FILE(OUTPUT) TOFILE(TESTLB/QFTPOUT) +
                   MBR('TT' *TCAT &WDATE) LVLCHK(*NO)   
      FTP        RMTSYS('XXX.XXX.XXX.XXX') 

      TESTLB/QFTPIN FTPCMDXXX
      XXXXXXXX XXXXXXXX                          
      CD XXXX                                 
      CD XXXX/XXXX                      
      LTYPE C 932                            
      PUT    QTEMP/TESTPF   TESTPF.CSV     
      QUIT                                                      

      RE:FTP転送処理について IKD さん [ 10月24日(金) 15時10分 ]

         ユーザー・スペースを作成してから、
        構成リストAPI : QDCLCFGD を使って、ユーザー・スペースを
        検索して、ご使用中のCLP を実行するようにすれば可能ですが
        すべての DEVD に Ftp送信してよいのかを、まず
        WRKDEVD *DSP で確認してください。

        RE:FTP転送処理について どん さん [ 10月24日(金) 16時39分 ]

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

          勉強してから改めて質問します。

          >  ユーザー・スペースを作成してから、
          > 構成リストAPI : QDCLCFGD を使って、ユーザー・スペースを
          > 検索して、ご使用中のCLP を実行するようにすれば可能ですが
          > すべての DEVD に Ftp送信してよいのかを、まず
          > WRKDEVD *DSP で確認してください。

      RE:FTP転送処理について 伊集院博 さん [ 10月24日(金) 17時27分 ]

        何故WSID毎にFTP転送記述を持つ必要があるのか
        文面から読取れませんでしたが、
        FTP転送記述の内容を物理ファイルに持って、
        転送記述をメンバーに書出すプログラムを用意して、
        転送の度に毎回作成してあげたらどうでしょうか。
        (上記の場合ですとTESTLB/QFTPIN(FTPCMDXXX)のメンバーを
        物理ファイルを読込んで、作成してからFTP転送を行う感じです。)

        弊社でも定期的にPCサーバへあるファイルをFTP転送していますが
        転送先のファイル名に日付を変えて累積させている為、少々面倒ですが
        記載の様な事を行っております。
        的外れでしたらすみません。

        RE:FTP転送処理について どん さん [ 10月24日(金) 17時57分 ]

          伊集院博 さん
          ご返信ありがとうございます。

          印刷データをFTP転送しているのですが、
          WSID毎の作成する必要性は処理端末毎に印刷プリンタが違う為です。

          >転送記述をメンバーに書出すプログラムを用意して、
          >転送の度に毎回作成してあげたらどうでしょうか。
          >(上記の場合ですとTESTLB/QFTPIN(FTPCMDXXX)のメンバーを
          >物理ファイルを読込んで、作成してからFTP転送を行う感じです。)

          まさに上記のイメージです。
          物理ファイルに転送記述を持たせて、実行WSIDで検索をかけて処理をしたい。

          ただそのイメージを形にする為に調べてみてはしましたが。。。

          IKDさんからも返信をいただいたのですが、
          折角の回答を理解できずで。(まずはAPIというものを学習中)

          宜しくお願い致します。

          API使わなくてもできますよ 伊集院博 さん [ 10月24日(金) 19時20分 ]

            私もAPIのやり方は良く分かりません。
            弊社の場合、転送先のファイル名の一部を置換えるだけなので
            FTP転送記述のメンバーの一部をRPGにて書き換えて更新しています。
            何をやっているか解り難いかも知れませんが、
            弊社のソースを掲載します。参考になれば...

            AS/400の監査ログを定期的にPCサーバにFTP転送する為の転送記述です。
            H DATEDIT(*YMD/)                                                       
             *==============================================================*      
             *                     ファイル仕様                             *      
             *==============================================================*      
             * FTP転送記述テンプレート                                          
            FAUDFTP    UF   E             DISK    EXTFILE('MYLIB/QTXTSRC')         
            F                                     EXTMBR('AUDFTP')                 
            F                                     RENAME(QTXTSRC:AUDFTPR)          
            DSRCDTA           DS                                                   
            D  @REC                   1    108A                                    
            D  DATE1                 17     22A                                    
            D  DATE2                 33     38A                                    
             *==============================================================*      
             *#            メ イ ン 処 理                               *      
             *==============================================================*      
             *                                                                     
            C                   MOVE      *DATE         W@DATE            6 0      
            C                   DO        *HIVAL        I                 2 0      
            C                   READ      AUDFTPR                                90
            C   90              LEAVE                                              
            C                   SELECT                                             
            C                   WHEN      I >= 2  AND I <= 15                      
            C                   MOVE      W@DATE        DATE1                      
            C                   UPDATE    AUDFTPR                                  
            C                   WHEN       I >= 17 AND I <= 28                     
            C                   MOVE      W@DATE        DATE2                      
            C                   UPDATE    AUDFTPR                                  
            C                   ENDSL                                              
            C                   ENDDO                                              
             *                                                                     
            C                   SETON                                        LR    
            C                   RETURN                                             

            (説明)
            MYLIB/QTXTSRC(AUDFTP)のFTP転送記述のテンプレートとなるものを
            予め用意しています。
            メンバーを1レコードずつ読込み、2行目〜15行目と
            17行目〜28行目の転送記述のファイル名に日付を組み込んで
            更新しています。
            もっと簡単な方法があるかも知れませんが、
            私のレベルではこれが精一杯でした。

            RE:API使わなくてもできますよ どん さん [ 10月28日(火) 15時4分 ]

              お世話になっております。
              ご教授いただいた内容でご確認させていただきたいのですが

              > FAUDFTP    UF   E             DISK    EXTFILE('MYLIB/QTXTSRC')
              > F                               EXTMBR('AUDFTP')    
              > F                               RENAME(QTXTSRC:AUDFTPR)
              →MYLIB/QTXTSRC(AUDFTP)は転送記述のTEXTソースで、
              OBJを指定しているものではない。
              という理解で宜しいでしょうか?

              以下の様なレコードを持っていて、このRPGで修正するという事でしょうか?
              XXXXXXXX XXXXXXXX                          
              CD XXXX                                 
              CD XXXX/XXXX                      
              LTYPE C 932                            
              PUT    QTEMP/TESTPF   TESTPF.CSV     
              QUIT                               

              宜しくお願い致します。        

              RE:API使わなくてもできますよ 伊集院博 さん [ 10月28日(火) 16時39分 ]

                OKです。認識は間違っていないと思います。

                > FAUDFTP    UF   E             DISK    EXTFILE('MYLIB/QTXTSRC')
                > F                               EXTMBR('AUDFTP') 
                > F                               RENAME(QTXTSRC:AUDFTPR)
                上記は、TEXTソースで存在しているメンバー(ソース)を読込み、更新します。
                このRPGの上位にCLを用意して
                OVRDBF FILE(AUDFTP) TOFILE(MYLIB/QTXTSRC) MBR(AUDFTP)
                とするのと同じ意味です。
                ちなみに、ソースメンバーもAS/400の世界ではOBJ(オブジェクト)になります。

                解決:御礼 どん さん [ 10月31日(金) 13時56分 ]

                  伊集院博 さん
                  ご教授いただいた内容で解決できました。

                  IKD さん
                  APIにつきましても、今後学んで行きたいと思います。

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

    社外PCから社内ASに接続するには? HW さん [ 11月11日(火) 18時53分 ]

      社内ネットワーク上にあるAS/400(インターネット接続はしていません)に、社外のPCから接続可能に
      したいのですが、上手くいきません。

      これまでにした設定・確認の作業は、以下の通りです。

        1.ルーターのNAT設定に、23,449,8470-8479のポートをAS/400のプライベートIPを設定。

            ===> 社外PCから、グローバルIP指定のPINGは通らず。

        2.ルーター内の設定で、"Flets ADSL"側からのアクセスを許可。

            ===> 社外PCから、グローバルIP指定のPINGが通った。

        3.社外PCから、"CWBPING"コマンドでグローバルIP指定でアクセスチェック。

            ===> 全てNG。(CWBCO1003,CWBCO1006,CWBCO1011,CWBCO1008が出力される)

      この状態で立ち往生しています。

      確認や設定しなければならない事がありましたら教えてください。

      RE:社外PCから社内ASに接続するには? HW さん [ 11月12日(水) 12時40分 ]

        解決しました。

        AS/400のTCP/IP経路の設定に誤りがあり修正したら繋がりました。

         (修正前)“次のホップ”がルーター機能を持たせていないモデムに設定してあった

         (修正後)“次のホップ”をルーター機能を持たせているモデムに設定した


        > 社内ネットワーク上にあるAS/400(インターネット接続はしていません)に、社外のPCから接続可能に
        > したいのですが、上手くいきません。
        > 
        > これまでにした設定・確認の作業は、以下の通りです。
        > 
        >   1.ルーターのNAT設定に、23,449,8470-8479のポートをAS/400のプライベートIPを設定。
        > 
        >       ===> 社外PCから、グローバルIP指定のPINGは通らず。
        > 
        >   2.ルーター内の設定で、"Flets ADSL"側からのアクセスを許可。
        > 
        >       ===> 社外PCから、グローバルIP指定のPINGが通った。
        > 
        >   3.社外PCから、"CWBPING"コマンドでグローバルIP指定でアクセスチェック。
        > 
        >       ===> 全てNG。(CWBCO1003,CWBCO1006,CWBCO1011,CWBCO1008が出力される)
        > 
        > この状態で立ち往生しています。
        > 
        > 確認や設定しなければならない事がありましたら教えてください。

    サーバー・データ・ストリーム で エラー ホーガン さん [ 11月12日(水) 17時35分 ]

      現在、Windows2003Serverより、ASP.NETを介して、AS400のデータベースにODBC経由でアクセスして
      いるのですが、SELECT〜FOR UPDATE WITH RS というSQLを発行するとかなりの頻度で以下の2種類
      のエラーがどちらか発生します。
      エラー1:[IBM][iSeries Access ODBC ドライバー]サーバー・データ・ストリーム で エラー
      エラー2:[DB2 UDB]SQL0516 - 準備済みステートメントQZ8FE6C76A8C72C182が見つからない。

      原因が特定できずに困り果てています。何かアドバイスが頂ければ幸いです。

    すごく初歩的な質問ですが・・・・ MINITIA さん [ 11月29日(土) 13時27分 ]

      ファイル作成の手順を教えてください。
      CRTPFコマンドで物理ファイルを作成してから、DDSで論理ファイルの定義を行えばいいのでしょう
      か?
      さっぱり分からないので宜しくお願いします。

      RE:すごく初歩的な質問ですが・・・・ あああ さん [ 12月1日(月) 8時28分 ]

        何か良いリンク先を調べたのですが適当な所が見つかりませんでしたので...
        作成手順としては、物理ファイルを作成してから論理ファイルを作成します。

        ■データベース・ファイル作成手順
        1. データ項目の選定及び属性の決定
        2. データベース設計
        3. DDSの入力
        4. データベース・ファイルの作成(物理ファイル、論理ファイル)
         (1)物理ファイルの場合:CRTPF
         (2)論理ファイルn場合:CRTLF
        5. データの入力...

        ■物理ファイル、論理ファイルの特徴
        1. 物理ファイルの特徴
         (1)実データを格納
         (2)1つの物理ファイルは1つのレコード様式をもつ
        2.論理ファイルの特徴
         (1)1つ以上の物理ファイルを基礎として作成される。
          (1つ又は複数のレコード様式を持つ)
         (2)データの並び順の情報やファイルでアクセスできるデータ項目の情報を管理
         (3)実際のデータは対応する物理ファイルから取り出す。


    表示順を指定できるのでしょうか? mk さん [ 12月8日(月) 15時59分 ]

      始めまして。教えてください。
      RPGで「ある分類項目」を指定した順にDSP画面にデータ表示させることは出来るのでしょう
      か?

      例えば
      項目:1、2、5、8という分類項目を昇順ではなく
      1、5、2、8と画面に表示したいのです。

      DSP画面に固定表示させるようにすればいい話かもしれませんが、
      将来、項目順が変わったときの事を考えて修正PGM数を少なくできればいいと思いまして
      教えていただければと思います。よろしくお願いします。

      RE:表示順を指定できるのでしょうか? mk さん [ 12月8日(月) 17時22分 ]

        書き忘れましたが、
        列にではなく、行に表示指定順を持たせたいのです。

      索引ファイル 柿の種 さん [ 12月9日(火) 9時41分 ]

        QTEMP上の索引ファイルに落とす。
        キーを選択できるようにすれば、実現可能です。推奨5通り程度。
        ---------------------------------------------------------
        問題はCLRPFM CRTPF OVRDBF などの CMD実行のタイミングです。



        RE:索引ファイル mk さん [ 12月16日(火) 11時14分 ]

          大変お返事が遅くなってすみません

          > QTEMP上の索引ファイルに落とす。
          > キーを選択できるようにすれば、実現可能です。推奨5通り程度。
          > ---------------------------------------------------------
          > 問題はCLRPFM CRTPF OVRDBF などの CMD実行のタイミングです。
          > 
          教えていただいた方法が実践できるか、スキルがそこまでありませんが
          頑張って行ってみます。
          ありがとうございます

    マネージメントセントラル接続エラーについて koyo さん [ 12月11日(木) 15時46分 ]

      お尋ねします。iSeriesナビゲータからマネージメントセントラルを開こうとすると、「セントラル・システ
      ム '192.168.24.11' への接続を完了できません。」とエラーとなります。接続の検査は正常に終了
      し、基本操作のメッセージには特に何も出ていません。調査ポイントをご教示願います

    RATE関数について とおりすがり さん [ 1月7日(水) 11時14分 ]

      EXCELのRATE関数をiSeriesに焼き直したいのでですが、
      サンプルをお持ちの方はいませんでしょうか?

    IBM AS400で画像を保管,表示できますか? 没醜 さん [ 1月9日(金) 16時15分 ]

      RPG言語で帳票作成プログラミングしております。
      そこで、写真などの画像(JPG)をASで保管、表示できますでしょうか?
      できるとすれば具体的にどうすればできますか?

    印刷方法の自動制御 白鵬頑張れ さん [ 1月26日(月) 10時22分 ]

      いつも参考にさせて頂いております、AS初心者です。
      タイトルの件のご教授願いたく、投稿致しました。

      質問内容は、
      一つのプリンター(5577)で、ある処理を実行した伝票はスプールに溜めずにそのまま印字さ
      せたく、また別の処理で実行した伝票はいったんスプールに溜めてから確認後手作業で印字させた
      いと思っております。
      OUTQの設定だけですと垂れ流しか溜めるのかのどちらかしか設定出来ない気がします。
      OUTQを別に指定してそれぞれより出力すれば良いのかとも思いますが、そのやり方もイマイチ
      分かりません。
      どなたかご存じの方いらっしゃいましたらご教授願います。
      宜しくお願い致します。

      RE:印刷方法の自動制御 SolidBalloon さん [ 1月26日(月) 11時38分 ]

        (方法1)
        OVRPRTF QSYSPRT HOLD(*YES)
        CALL    DENPYO
        DLTOVR  QSYSPRT

        (方法2)
        CRTOUTQ QUSRSYS/HLDOUTQ ※これはオペレーションにて一回だけ

        CHGOUTQ HLDOUTQ
        CALL    DENPYO
        CHGOUTQ QPRINT

        RE:印刷方法の自動制御 白鵬頑張れ さん [ 1月26日(月) 16時2分 ]

          SolidBalloon さん 、早急なご回答どうもありがとうございました。
          ソースを記載して頂き大変参考になりました。やってみますね。

    QUERY定義って・・・ 5250君 さん [ 2月2日(月) 22時51分 ]

      素朴な質問なのですが、QUERYの定義ファイルをODBC経由で参照したり、修正・変更することは可能
      でしょうか?
      QRYLIBという場所を参照するとQUERYで作成したファイルがあり、こちらは参照可能でした。
      よろしくお願いいします。

      RE:QUERY定義って・・・ IKD さん [ 2月5日(木) 9時56分 ]

        ユーザーが QUERY/400 で作成したオブジェクトは *QRYDFN という定義ファイルです。
        このオブジェクトの存在を確認したり API を使って中身の詳細を調べることは
        できますが機能そのものを変更することはできません。
        QUERY/400 を変更したいという目的が、たとえばレコード選択条件を指定したいと
        いうようなものであれば QUERY/400 から QUERY のソースとなる QMQRY を抽出して
        *QMQRY を作成すると動的に外部より選択条件を与えることができるようになります。
        詳細はこのサイトの DFU, Query, SQL の章にいくつか解説があります。

        RE:QUERY定義って・・・ 5250君 さん [ 2月5日(木) 21時58分 ]

          > ユーザーが QUERY/400 で作成したオブジェクトは *QRYDFN という定義ファイルです。
          > このオブジェクトの存在を確認したり API を使って中身の詳細を調べることは
          > できますが機能そのものを変更することはできません。
          > QUERY/400 を変更したいという目的が、たとえばレコード選択条件を指定したいと
          > いうようなものであれば QUERY/400 から QUERY のソースとなる QMQRY を抽出して
          > *QMQRY を作成すると動的に外部より選択条件を与えることができるようになります。
          > 詳細はこのサイトの DFU, Query, SQL の章にいくつか解説があります。

          RE:QUERY定義って・・・ 5250君 さん [ 2月5日(木) 22時0分 ]

            > > ユーザーが QUERY/400 で作成したオブジェクトは *QRYDFN という定義ファイルです。
            > > このオブジェクトの存在を確認したり API を使って中身の詳細を調べることは
            > > できますが機能そのものを変更することはできません。
            > > QUERY/400 を変更したいという目的が、たとえばレコード選択条件を指定したいと
            > > いうようなものであれば QUERY/400 から QUERY のソースとなる QMQRY を抽出して
            > > *QMQRY を作成すると動的に外部より選択条件を与えることができるようになります。
            > > 詳細はこのサイトの DFU, Query, SQL の章にいくつか解説があります。

      RE:QUERY定義って・・・ 5250君 さん [ 2月5日(木) 22時7分 ]

        ご返事ありがとうございます。
        目的はまさにレコード条件の変更です。
        このサイトの DFU, Query, SQL の章の解説、参考にさせて頂きます。
        ありがとうございました。

    リモートから電源をONすることはできますか? nogi さん [ 2月13日(金) 8時37分 ]

      XシリーズにはRSAUのボードを刺せば、Web経由でリモートから立ち上げることが可能なのですが、
      Power Systemsではリモートから立ち上げる機能はあるでしょうか?

      RE:リモートから電源をONすることはできますか? IKD さん [ 2月13日(金) 10時4分 ]

        できます。
        システム値 QRMTIPL を 1 に設定しておくと電話回線による
        電源を投入することができます。
        ただし詳細は不明で利用しているという事例はあまり聞いたことが
        ありません。
        最近では遠隔地のシステム・センターに System i を預けるという
        ケースが多いのでニーズがあるかもしれませんが
        多くの使用例ではタイマー・スケジュール (GO POWER) による
        自動電源投入です。

        RE:QRMTIPL&eq;1で電源オン 伊集院博 さん [ 2月13日(金) 12時32分 ]

          弊社の古いAS/400(Ver4.5)はモデムを接続してあり電話をかけると自動的にIPLが始まります。
          基本は、GO POWERで設定して有りますが、急な休日出勤などでは自宅からTELしてIPLを行ないま
          す。

    日本語のSCAN K.A さん [ 2月16日(月) 10時37分 ]

      御世話になります。
      教えて欲しい事があるのですが、
      RPGのSCAN命令で
      日本語をSCANする事ができないのですが
      他に何か良い方法ありませんか?


      TESTFには 'えええああ'があるとします。

      ' ああ '  SCAN TESTF        50
      ↑  
      SCANしてもスルーされてしまいます。

      RE:日本語のSCAN SolidBalloon さん [ 2月16日(月) 12時23分 ]

        > ' ああ '  SCAN TESTF        50

        このままですと、漢字シフト文字を含んだ文字列をSCANしますので

        I            DS                                    
        I                                        1   6 AA  
        I                                        2   5 AAAA
        C*                                                    
        C                     MOVE ' ああ '  AA               
        C           AAAA      SCAN TESTF        50

        とするのがよろしいかと

        RE:日本語のSCAN K.A さん [ 2月16日(月) 14時38分 ]

          > > ' ああ '  SCAN TESTF        50
          > 
          > このままですと、漢字シフト文字を含んだ文字列をSCANしますので
          > 
          > I            DS                              
                
          > I                                        1  
           6 AA  
          > I                                        2  
           5 AAAA
          > C*                                          
                    
          > C                     MOVE ' ああ '  AA           
              
          > C           AAAA      SCAN TESTF        50
          > 
          > とするのがよろしいかと

          RE:日本語のSCAN K.A さん [ 2月16日(月) 14時41分 ]

            SolidBalloonさん
            早速試してみました。
            うまくいきました。
            ありがとうございました。大変助かりました。

    CL内で割り算をする方法を教えて下さい。 ビンゴ さん [ 3月3日(火) 18時35分 ]

      CL内で割り算(余りまで求める)をしたいのですが、RPGで言う“DIV”、“MVR”の様
      な命令は存在するのでしょうか?
      存在しない場合はどの様に求めれば良いかご教授願います。

      RE:CL内で割り算をする方法を教えて下さい。 IKD さん [ 3月4日(水) 13時49分 ]

        CLP では DIV は / ですが MVR に相当するものはありません。
        下記に割り算と余りを計算するCLPを示します。
        ソースは http://218.44.135.18/QSYS,LIB/PGMRLIB.LIB/QCLSRC.FILE/DIVCL.MBR

        0001.00              PGM                                                   
        0002.00              DCL        VAR(&SU_A) TYPE(*DEC) LEN(4 0)             
        0003.00              DCL        VAR(&SU_B) TYPE(*DEC) LEN(4 0)             
        0004.00              DCL        VAR(&SHO) TYPE(*DEC) LEN(4 0)              
        0005.00              DCL        VAR(&AMARI) TYPE(*DEC) LEN(4 0)            
        0006.00              DCL        VAR(&CHAR4) TYPE(*CHAR) LEN(4)             
        0007.00                                                                    
        0008.00   /*( 10/2 の割り算 )*/                                            
        0009.00              CHGVAR     &SU_A   10                                 
        0010.00              CHGVAR     &SU_B    2                                 
        0011.00              CHGVAR     VAR(&SHO) VALUE(&SU_A / &SU_B)             
        0012.00              CHGVAR     VAR(&CHAR4) VALUE(&SHO)                    
        0013.00              SNDPGMMSG  MSG('10 / 2 = ' *CAT &CHAR4) MSGTYPE(*DIAG)
        0014.00                                                                    
        0015.00   /*( 8/3 の割り算の余り )*/                                       
        0016.00              CHGVAR     &SU_A    8                                 
        0017.00              CHGVAR     &SU_B    3                                 
        0018.00              CHGVAR     VAR(&SHO) VALUE(&SU_A / &SU_B)             
        0019.00              CHGVAR     &AMARI  VALUE(&SU_A - (&SU_B * &SHO))      
        0020.00              CHGVAR     VAR(&CHAR4) VALUE(&AMARI) 
        0021.00              SNDPGMMSG  MSG('8 % 3 = ' *CAT &CHAR4) MSGTYPE(*DIAG)
        0022.00              ENDPGM       

        RE:有り難う御座いました。 ビンゴ さん [ 3月4日(水) 14時54分 ]

          ご回答どうも有り難う御座いました。
          なるほど、納得しました。
          参照ソースはエラーで開けませんでしたが、記述して頂いたソースをサンプルに
          コーディングしてみます。
          助かりました。

    AS400ストアドプロシージャーについて 初心者 さん [ 3月16日(月) 23時42分 ]

      お世話になります。質問があります。
      現在、Webのエントリー画面で入力された値をもとに、
      既存のAS400のバッチPGMを呼び出し戻り値をWebに返そうとしています。

      そこで、AS400側にストアドプロシージャーを定義して、javaでキックするという
      方式を取ろうとしているのですが(web側はよくわかりません)

      1.SQLプロシージャーと外部プロシージャーの使い分け方の違いがわかりません。
        他のプロジェクトでWeb→SQLプロシージャー→外部プロシージャー→AS400のPGM
        と言う流れでやっているのを見かけたのですがあっているのでしょうか?
        ※外部プロシージャー→は不要な気がします。

      2.SQLプロシージャーでAS400のABCというCLを呼び出す場合に、
        CALL ABCで呼び出すのか、EXTERNAL NAME MYLIB.ABCでやる方法もあると
        聞いたのですが、どちらが正攻法なのかわかりません。

      どなたか詳しい方、ご教授よろしくお願いします。

    CCSIDに関することについて S.A さん [ 4月1日(水) 12時9分 ]

      CCSIDに関することについて質問させていただきます。
      エミュレータのホスト・コード・ページ: 939
      ジョブのCCSID: 5035
      上記の環境にて、DFUでCCSID:5035のファイルのフィールド(Oタイプ)に、
      "カナ"と半角カタカナを入力し、更新しました。
      CCSID:5035なので、16進コードは"66 8B"のはずなのですが、実際は"66 8C"でした。
      これは、"カナ"をCtrl+F3でコード・ページを変換した後の"eサ"のコードのようで、
      CCSID:5026のデータということになってしまいます。
      CPYFによるコード変換(5026→5035)を行っても、"86 96"(カナ)→"66 8C"(eサ)でした。
      なぜCCSID:5026のデータになってしまうのでしょうか?
      よろしくお願いいたします。

      RE:CCSIDに関することについて IKD さん [ 4月2日(木) 7時33分 ]

        CCSID 5035 の環境で画面の最下部の F4=プロンプト が正しく表示されていれば
        それは 5026環境の状態であり、文字化けしていれば 5035 環境です。
        必要であれば Ctrl + F3キーで切り替えてください。

    FTPに関して JUNKIEXXL さん [ 4月9日(木) 19時43分 ]

      ご存知であればご教示願いたいのですが、
      FTPで中国語(簡体字)の含まれるデータをAS/400→Windowsサーバへ転送したいのですが、
      文字化けしてしまいます。
      当ホームページ内の文字化け対処方法等も拝見させていただきましたが、中国語という環境の為、
      若干異なります。

    トリガープログラムに関して JUNKIEXXL さん [ 4月11日(土) 13時59分 ]

      いつもお世話になっております。

      トリガープログラムを利用して、あるライブラリにある物理ファイルにデータがINSERTされた後に、
      別ライブラリにある同一レイアウトのファイルにINSERTされたレコードをWRITEしたいと考えてます
      が、INSERTされたレコードの内容を取得する方法が分かりません。

      どなたか良い方法をご存知のかたご教示願います。

    トリガープログラムに関して JUNKIEXXL さん [ 4月11日(土) 14時31分 ]

      いつもお世話になっております。

      トリガープログラムを利用して、あるライブラリにある物理ファイルにデータがINSERTされた後に、
      別ライブラリにある同一レイアウトのファイルにINSERTされたレコードをWRITEしたいと考えてます
      が、INSERTされたレコードの内容を取得する方法が分かりません。

      どなたか良い方法をご存知のかたご教示願います。

    スプールライターについて webでeコマース さん [ 5月1日(金) 11時37分 ]

      貴社の製品のスプールライターについて質問します。
      @APWの罫線を対応しているとの事ですが、バーコード(code39)や
       会社のロゴなどの出力(変換)は可能ですか?
      Aエンタープライズサーバーで帳票をスプールライターでPDF化する
       ソリューションが紹介されていますが、ワークショップで注文書の
       サンプルを見ると色が付いていますが、あのサンプルはAS/400から
       直接出力で実現できるのでしょうか
      Bまた、PDF化を行なう場合、スプールライターのフリークライアント契約でないと
       できない旨がどこかにありましたが、間違いないですか。

      RE:スプールライターについて IKD さん [ 5月4日(月) 18時49分 ]

        ご質問の趣旨につきまして下記のとおり回答申し上げます。

        @APW 罫線および倍角印字には対応していますがバーコードや
         会社のロゴ等には対応しておりません。

        Aカラー化のPDF は静的にサンプルとして HTML から作成されたもので
          CGI でカラー出力することはできません。
          実際に CGI で出力する例はワークショップの「商品明細の印刷」で
         お試し頂くことができます。

        BSpoolライターのPCクライアント・モジュールで操作する場合には
          フリー・クライアントまでは必要なく、どのクライアント数のご契約であっても
         動作致します。
         しかし System i サーバー側で CVTSPLF コマンド というコマンドを
         使って Web上で PDF 表示したり、別のPCサーバーにバッチ転送するのであれば
          フリー・クライアントのご契約が必要です。
         Spoolライターは機能に比べてコスト・パフォーマンスが圧倒的に優れていますので
         今ではほとんどのユーザー様がフリー・クライアントでご契約されております。
         手前味噌になりますが Spoolライターは非常に人気の高い商品で
         国内で最もユーザー数が多いのではないかと自負しております。
         ほぼ毎月にし数本のご注文がございます。

        ■製品に関するご質問は恐れ入りますが

           info@officequattro.com  までメールでお願い致します。

    サブファイルの重複について SLY さん [ 5月15日(金) 11時33分 ]

      現在、画面のサブファイル項目に値を入力し、更新処理によってテーブルに値を
      セットしています。

      しかし、誤って重複した値を入力した場合、同じレコードがテーブルに作成されて
      しまいます。

      サブファイル内のチェックを行うことは可能でしょうか?
      やりたい事は、
      画面に値を入力した際にサブファイル内を検索し
      同じ値があった場合はエラーメッセージを表示したいです。

      以上、よろしくお願い致します。

      RE:サブファイルの重複について QQ さん [ 5月16日(土) 14時57分 ]

        1.サブファイルレコードをチェックする時、読み込んだレコードを配列にセット。
        2.次レコードを読み込んだらLOKUPで配列検索。
        3.あったらエラー。なければ配列セット。

        以上を繰り返せば重複チェックが出来ます。

        RE:サブファイルの重複について SLY さん [ 5月18日(月) 9時40分 ]

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

          配列というのはテーブルを別に作成するということでしょうか?

          また、チェックを行うタイミングがわからないのですが、
          良い案はありますでしょうか?

          ※入力者は一画面(6行ごとに更新処理を行う為、その6行内に重複が
           あったばあいはどうチェックすればよいのでしょうか?)

          初心者で申し訳御座いませんが
          よろしくお願い致します。


          RE:サブファイルの重複について QQ さん [ 5月19日(火) 23時22分 ]

            > 配列というのはテーブルを別に作成するということでしょうか?
            実行時配列をE仕様書に定義して下さい。重複を許さないフィールドの長さ×6
             
            > また、チェックを行うタイミングがわからないのですが、
            > 良い案はありますでしょうか?
            チェックするタイミングはPGMに制御が戻った段階。
            実行キー、更新処理実行割当キーが押されたときなど。
             
            > ※入力者は一画面(6行ごとに更新処理を行う為、その6行内に重複が
            >  あったばあいはどうチェックすればよいのでしょうか?)
            1.配列をクリア
            2.サブファイルレコードにCHAIN
            3.重複を許さない項目で配列をLOKUP
            4.1)重複がなければ、配列セット
              2)重複した時、エラー(反転・カーソルセット)
            2から4をCHAINできる間繰り返す。

            ※更新済みと重複チェックはファイルに存在チェック。

          RE:サブファイルの重複について QQ さん [ 5月19日(火) 23時22分 ]

            > 配列というのはテーブルを別に作成するということでしょうか?
            実行時配列をE仕様書に定義して下さい。重複を許さないフィールドの長さ×6
             
            > また、チェックを行うタイミングがわからないのですが、
            > 良い案はありますでしょうか?
            チェックするタイミングはPGMに制御が戻った段階。
            実行キー、更新処理実行割当キーが押されたときなど。
             
            > ※入力者は一画面(6行ごとに更新処理を行う為、その6行内に重複が
            >  あったばあいはどうチェックすればよいのでしょうか?)
            1.配列をクリア
            2.サブファイルレコードにCHAIN
            3.重複を許さない項目で配列をLOKUP
            4.1)重複がなければ、配列セット
              2)重複した時、エラー(反転・カーソルセット)
            2から4をCHAINできる間繰り返す。

            ※更新済みと重複チェックはファイルに存在チェック。

            RE:サブファイルの重複について SLY さん [ 5月29日(金) 14時39分 ]

              回答ありがとう御座います。
              大変分かりやすく、上手くできました。

              もう1点質問があるのですが、
              RPGでの配列は一次元配列のみ
              でしょうか?

              以上、よろしくお願い致します。

              RE:サブファイルの重複について QQ さん [ 6月1日(月) 23時24分 ]

                一次元配列のみのようです。
                ILEなら擬似的に二次元配列が出来るようです。
                試したことがないので詳しくはわかりません。

    データ型について 5250君 さん [ 6月5日(金) 23時31分 ]

      お世話になります。
      MySQLなどではレコード自動連番にしてくれる auto_increment がありますよね?
      DB2/400では同様の仕組みはあるのでしょうか?
      また、利用可能なら、どのように作成すればいいのかをお聞かせ下さい。

      宜しくお願い致します。

      RE:データ型について IKD さん [ 6月7日(日) 12時46分 ]

        ありません。
        RPG に組み込みSQLPKG であれば自分で
        RPG で +1 すればよいだけです。
        ただしレコード番号を表示するのであれば
        RRN 関数を使用することができます。

        RE:データ型について 5250君 さん [ 6月14日(日) 0時39分 ]

          ご返事遅くなり申し訳ございません。
          存在しない事がわかっただけでも十分助かりました。

          ありがとうございます。

    改ページ ケイトン さん [ 7月16日(木) 11時22分 ]

      印刷するさい86行続けて明細印刷したいのですが、2枚目の途中で改ページしてしまいます。
      何が影響しているのでしょうか。ご教示願います。

      FQPRINT  O   F     132            PRINTER 


       OVRPRTF    FILE(QPRINT2) PAGESIZE(86 132) LPI(6)  SHARE
      (*YES)                                                                 

      RE:改ページ IKD さん [ 7月16日(木) 16時46分 ]

          下記のようにオーバーフロー行を明示的に指定してください。


         FQPRINT    O    F  132        PRINTER OFLIND(*INOF)
         F                                     FORMLEN(86)  
         F                                     FORMOFL(84)             

        RE:改ページ ケイトン さん [ 7月16日(木) 17時36分 ]

          有難うございます。
          ILEではないので下のようにしてみましたが、
           ライブラリー QGPL のファイル QPRINT のオーバーフロー行 84 が正しくない 
          となってしまいます。

          FQPRINT  O   F     132           LPRINTER                 
          LQPRINT   86FL 84OL                                                   

          RE:改ページ IKD さん [ 7月18日(土) 11時40分 ]

            通常では 86FL 84OL でもコンパイル・エラーになることは
            ありません。
            RPG III で指定できる最大用紙長は 112 でありオーバーフロー行に
            仕様の制約はありません。
            コンパイル・エラーになっているのは
            CRTRPGPGM コマンドを実行しているジョブで事前に
            OVRPRTF 等によって用紙長の短い QPRINT が指定されているか
            またはライブラリー・リスト上に用紙長の短い QPRINT が
            存在しているか、の原因が考えられます。

            DSPFD QPRINT + [実行] を行ってみてください。
            QGPL/QPRINT が表示されれば正常ですが、それ以外の
            QPRINT が表示されているのであれば、それが原因です。
            サイン・オフしてから、もう一度サインオンして
            DSPFD QPRINT で QGPL/QPRINT が表示されなければ
            環境を調査してください。

            また逆に QGPL/QPRINT が表示されているのであれば
            QGPL/QPRINT が変更されている可能性があります。

            ご参考までに OS V5R1M0 〜 V6R1M0 までで
            上記のコンパイルは正常に行われることを確認しました。    

            上手くいきました。 ケイトン さん [ 7月21日(火) 17時12分 ]

              上手くいきました。OPEN QPRINT CLOSE QPRINTを追加して

              OVRPRTF    FILE(QPRINT) LPI(6) CPI(15) SHARE(*YES)

              QPRINT  O   F     132     OF    LPRINTER                        UC   
              QPRINT   86FL 84OL

              にしたところA4縦で正常に印刷できるようになりまし
              た。                                                   

    AS/400からPCへのファイル一括転送について SLY さん [ 7月24日(金) 17時35分 ]

      AS/400初心者です。

      プログラムソースをAS/400→PC(TEXT)へ一括転送する方法
      をご存知でしたら教えて頂けますでしょうか。

      また、FTPを使用して行おうとしましたが、「FTP:接続が拒否されました」
      というエラーが発生します。

      ご助力お願い致します。

    トピック一覧 Tools → 19. MI コンパイラーについて 通行人 さん [ 8月5日(水) 9時56分 ]

      トピック一覧でTools → 19. MI コンパイラーを試してみようと思ったのですが、
      以下のプログラムが見当たらなく、エラーになってしまいます。
      是非とも公開の程、よろしくお願い致します。

      [CLP : CRTMIPGMCL] 
      CALL  PGM(QUATTRO/CRTMIPGMR) PARM(&PGMOBJ &TEXT &WCHG &AUT &LIST &APIERR)

    ASからFTPでPCサーバーのバッチを実行させたい ao さん [ 9月7日(月) 14時42分 ]

      ASとPCサーバー間でFTPを使ってファイルのやりとりをしたいと考えてます
      PC側からはPUTでファイルを送った後、QUOTE RCMD ASコマンド でASのプログラムを処理するように考え
      てます

      問題はAS側からPUTでPC側にファイルを送った後、PC側のバッチを実行させたいのですが、ASから相手PCサ
      ーバーのバッチを実行させるFTPコマンドはあるのでしょうか?

      またFTPじゃない方法があればアドバイス下さい、よろしくお願いします

      RE:ASからFTPでPCサーバーのバッチを実行させたい IKD さん [ 9月8日(火) 8時53分 ]

        System i から他のPCサーバーへの Ftp接続は
        ASCII でログインする必要がありますので
        System i に用意されている FTP コマンドでは
        できない場合がほとんどです。

        そこでこのサイトの Tools に SNDFTP コマンドが
        公開されています。
        ただし QUOTE は使用できませんがソースを
        改造すればできると思います。

        他の方法では RUNRMTCMD を検討してください。

      RE:ASからFTPでPCサーバーのバッチを実行させたい 伊集院浩 さん [ 9月9日(水) 12時42分 ]

        RUNRMTCMDがオーソドックスですかね。

        大分前の事ですが、転送先のPC側フォルダーに監視用のフリーソフトを置いて、
        データ送信後にダミーのファイルを送る事で送信完了を認識させて制御した事があります。

        FTPをオンラインでおこなうのであれば
        AS→PCのFTPとその後に実行したいPC側の処理のバッチファイル(.BAT)を用意しておいて
        STRPCO、STRPCCDMでPC側からキックでもよいかと。

      ありがとうございました ao さん [ 9月11日(金) 8時13分 ]

        > ASとPCサーバー間でFTPを使ってファイルのやりとりをしたいと考えてます
        > PC側からはPUTでファイルを送った後、QUOTE RCMD ASコマンド でASのプログラムを処理するように
        考え
        > てます
        > 
        > 問題はAS側からPUTでPC側にファイルを送った後、PC側のバッチを実行させたいのですが、ASから相手PC

        > ーバーのバッチを実行させるFTPコマンドはあるのでしょうか?
        > 
        > またFTPじゃない方法があればアドバイス下さい、よろしくお願いします

    CPYTOIMPFで変数名ファイルを作成したい ao さん [ 9月10日(木) 10時21分 ]

      CLプログラムの中でCPYTOIMPFを使ってIFSにファイルを作成したいと考えてます
      ファイル名は固定でなく日付を入れたファイル名にしたくて以下のようにCLを作成しましたが上手くいき
      ませんでした

      RTVJOBA DATE(&DAT)
      CHGVAR VAR(&STMF) VALUE('AAA' *CAT &DAT *CAT '.CSV')                        
      CPYTOIMPF 
      FROMFILE(QGPL/AAAFIL00) +                   
      TOSTMF('/HOME/AAADIR/&STMF') +          
      MBROPT(*REPLACE) STMFCODPAG(943) +        
      RCDDLM(*CRLF) DTAFMT(*DLM) STRDLM(*NONE)  

      結果はディレクトリに'AAA090910.CSV'というファイルが出来るかと思いきや'&STMF'というファイルが出
      来てました
      CL変数でファイル名は指定する方法があればアドバイスお願いします
      また他の方法があれば教えて頂けますでしょうか?

      RE:CPYTOIMPFで変数名ファイルを作成したい 伊集院博 さん [ 9月10日(木) 12時14分 ]

        CHGVAR     VAR(&STMF) VALUE('/HOME/AAADIR/' *CAT &DAT *TCAT '.CSV')

        CPYTOIMPF 
        FROMFILE(QGPL/AAAFIL00) +                   
        TOSTMF(&STMF) +          
        MBROPT(*REPLACE) STMFCODPAG(943) +        
        RCDDLM(*CRLF) DTAFMT(*DLM) STRDLM(*NONE)

        これでどうでしょう。

      ありがとうございました ao さん [ 9月11日(金) 8時15分 ]

        大変参考になりました

    MONMSGの使い方について ao さん [ 9月22日(火) 18時22分 ]

      サブシステムQSYSWRK下でのジョブで、CPYF時に「レコードは追加されなかった。メンバー 
      FILE00 は満杯です。 (C I 9999) 」が出てしまったとき、自動で応答「0」が入り、「FILE00への書き出
      し中にエラー」となりプログラムが落ちてしまいます

      CL中でMONMSGして、応答に「9999」と答えさせるにはどのようにCLを書けばよいのでしょうか?

      アドバイスよろしくお願いします

      RE:MONMSGの使い方について IKD さん [ 9月23日(水) 11時16分 ]

        「満杯です」とは CPA5305 であると思いますが
        CPA5305 は MONMSG することはできません。
        しかし CHGMSGD で CPA5305 の省略時の応答を変更したり
        CPA5305 に応答プログラムをユーザーで定義したりすると
        他の適用業務の運用に重大な支障を起こしてしまいます。
        コピー先のファイルを CHGPF コマンドによって
        メンパー・サイズを十分な大きさに変更しておくのが
        最も安全で確実な方法としてお勧めします。

      ありがとうございます ao さん [ 9月24日(木) 11時3分 ]

        わかりました、PFの方で十分なメンバーサイズに変更する事にします

    ユーザー定義オプションを使えるようにするには 運用者 さん [ 11月27日(金) 16時59分 ]

      コマンドラインを使用できないようにするため
      ユーザープロファイルの「制御機能」を'*YES'にしています。

      このときSTRPDMのOPT欄でユーザー定義オプションに登録されている
      オプションも使用できなくなります。
      (CPD0175)

      コマンドラインの使用は不可、ユーザー定義オプションのオプションは使用可とした
      いとき、どのような対応方法がありますか。

      よろしくお願いします。

    復元できない Mr さん [ 12月28日(月) 21時23分 ]

      初めて投稿の初心者です。
      システムの復元でサインオンできなくなりました。テープからの復元方法は?
      9401-150 V4R2M00 です。また、手動 01 B M でIPLするも、ログオフ後再度ログオン時
      パスワードの変更要求になってしまいます。
       ご指導よろしく
      Mr

      RE:復元できない IKD さん [ 12月30日(水) 12時59分 ]

        パスワードの変更要求が来ているのは
        システム値 QPWDEXPITV (パスワード有効期間) が *NOMAX では
        なく一定の期間が指定されており、その期間を既に経過しているからです。
        テープ復元の前に QSECOFR でサインオンしてから
        WRKSYSVAL  *ALL  + [実行] して QPWDEXPITV を *NOMAX に変更してから
        やり直してみてください。
        失礼ですが Model 150 で、そこまでの機密保護を強化してしまい
        ご担当者でも不明になってしまうのでは QPWDEXPITV を *NOMAX 以外に
        設定している意味があまりないように思えます。
        いずれにせよシステム管理者が最寄りの特約店にご相談になられることを
        お勧め致します。

      RE:復元できない Mr さん [ 1月4日(月) 21時44分 ]

        ご指導有難う御座います。どうにかPWのほうはうまく出来ました。しかしながら、Pcomm接続の端末
        が、接続していないようすです(サインオン画面にならない、コンソールはOK)。システムの復元は出
        来ていると思われますが、わかりません。
        スポットで出来る方がいらっしゃいましたら御願いしたいのですが?

        RE:復元できない IKD さん [ 1月5日(火) 9時18分 ]

          対話型サブ・システムが開始されていないか、または別のエラーが
          出ている可能性があります。
          コンソールで DSPMSG QSYSOPR + [実行] してメッセージを
          調べてみてください。

          80パーセント復元? Mr さん [ 1月7日(木) 22時47分 ]

            いろいろとご指導有難う御座います。
            8-9割は回復できました、原因はユーザーPRGのエラーと回線記述のエラーで、
            USRPRG はRSTLIBでエラーLIBを復元しました。
            しかし、どうして完全に復元出来ないのでしょう?
            RST コマンドの特別な使用方法でも有るのでしょうか?

            テープは別々の方法で(システム全体 21、数年前の物と先月の物、ユーザーLIBのBACKUPなど)で取
            ってあります。QSECOFRレベルを30に変更もしてみました。

            兎に角困っています。

          有難うございました Mr さん [ 1月12日(火) 11時2分 ]

            どうにか完了しました、ご指導有難うございました。

            東京のMr

        RE:復元できない AH さん [ 1月6日(水) 16時34分 ]

          たぶん回線の構成が必要。
          *LIN TCP/IP *CTL 
           

          80%は復元 Mr さん [ 1月7日(木) 23時0分 ]

            ご指導有難う御座います。
            回線記述もおかしいのですが、ETLIN1という物があり、実際にはLAN接続は無く自動的にONに構成変
            更されていますがPCOMM接続がつながりサインオン画面に戻りました。
            しかしながら、メニュー画面の一部のみだけがアクセス可能となってしまいました。
            RSTでの完全復元に何か特別な方法でも有るのでしょうか?

          スクラッチインストールに相当 AH さん [ 1月8日(金) 9時48分 ]

            最近OSを壊してスクラッチインストールしました。
            そのときは、構成を印刷して、手で再設定しました。
            ユーザープロフィルの復元をしましたが、損傷していて、やっぱり手作業になりました。


    QUERYで合計出力したんですが… AOI さん [ 1月15日(金) 16時11分 ]

      QUERYで合計をデータ・ファイルに出力しました。
      そのファイルをまた新しいQUERYで見てみると列見出しがZSUR合計(フィールド名+合計)と表記されていま
      した。
      出来れば「前月在庫数量」と表記させたかったのですがそれは不可能なのでしょうか?
      もしQUERYで出来ないようであれば、CLプログラム内で出来ればいいなと思います。
      ちなみにCLプログラムでは出来たファイルをCSVとしてはき出しています。
      そのCSVを開いた時に列見出しが「前月在庫数量」になっているようにしたいのですがどうすればい
      いでしょうか?
      わかる方がいらっしゃいましたらお返事をいただけると光栄です。
      よろしくお願いいたします。

      RE:QUERYで合計出力したんですが… QQ さん [ 1月18日(月) 23時41分 ]

        > 出来れば「前月在庫数量」と表記させたかったのですがそれは不可能なのでしょうか?
        事前に出力ファイルを作成したらどうでしょうか?
        DDSで該当フィールドのカラムヘッドorテキストを設定。
        > もしQUERYで出来ないようであれば、CLプログラム内で出来ればいいなと思います。
        > ちなみにCLプログラムでは出来たファイルをCSVとしてはき出しています。
        > そのCSVを開いた時に列見出しが「前月在庫数量」になっているようにしたいのですがどうすればい
        > いでしょうか?
        CSVをPCにFTPで転送すると仮定すると、
        RPGでヘッダ部分を作成してインサートする方法はどうでしょうか?

    CPYTOIMPFで固定長ファイルを作成したい ao さん [ 2月5日(金) 14時55分 ]

      現在下記のようなPFをCPYTOIMPFでIFS上に吐き出しPCに取り込もうとしています。
      本来は固定長32バイトのファイルが欲しいのですが、どうしても数字の後のスペースがつまって改行コー
      ドが入ってしまいます

      (レコード長32バイトのPF CCSID 65535)
         ----+----1----+----2----+----3--
       1 120300202515100205              
         FFFFFFFFFFFFFFFFFF44444444444444
         12030020251510020500000000000000
       2 230100120000400                 
         FFFFFFFFFFFFFFF44444444444444444
         23010012000040000000000000000000

      PCに落としてみた時(スペースが詰まってしまう)
      ----+----1----+----2----+----3--
      120300202515100205↓
      230100120000400↓
      230100140002310↓

      このように固定長で作成したい
      ----+----1----+----2----+----3--
      120300202515100205              ↓
      230100120000400                 ↓
      230100140002310                 ↓

      自分なりに色々パラメータを試してみたのですがうまくいきません
      パラメータでDTAFMT(*FIXED) NULLIND(*YES)とすると固定長にはなりますがレコード最後にNが入ってし
      まいます
      なにか良い方法がありましたらアドバイスお願いします

      RE:CPYTOIMPFで固定長ファイルを作成したい 伊集院博 さん [ 2月8日(月) 8時44分 ]

        私もこのコマンドが良く分らないのですが、
        CPYTOIMPF FROMFILE(mylib/file) TOSTMF('/xxxxxx/xxxx') MBROPT(*REPLACE) RCDDLM(*CRLF) 
        STRDLM(*NONE)                                  
        でPCからFTPでGETしたものを確認したらうまくいきました。

        CPYTOIMPFを使わず、直接、PCからFTPでGETしても可能です。

        FTP XX.XX.XX.XX
        ユーザーID
        パスワード
        QUOTE TYPE B
        GET mylib/file  C:\AAAAA.TXT

        はずしていたらごめんなさい

      RE:CPYTOIMPFで固定長ファイルを作成したい 柿の種 さん [ 2月8日(月) 13時17分 ]

        CPYTOIMPFはバグが多くて、業務には 使えない。
        RPGでコード変換して、FTPで無変換送信。

      ありがとうございました ao さん [ 2月9日(火) 11時5分 ]

        以上のこと試してみたいと思います

    DBCSのワイルドカード検索について教えてください たま さん [ 2月24日(水) 16時51分 ]

      OPNQRYコマンドを使用してDBCS文字のあいまい検索は可能でしょうか?
      SBCSではうまくいくのに漢字での検索がぜんぜんだめです(>_<)

      よろしくお願いいたします・・・

      RE:DBCSのワイルドカード検索について教えてください IKD さん [ 2月25日(木) 17時5分 ]

        TechNet ( http://www.officequattro.com/jpn/technet.html )
        に SQL 文を使ったあいまい検索の サンプルがありますが
        半角の場合はこの方法でも、OPNQRYF によるワイルド・カードでも
        可能ですが漢字の文字列によるあいまい検索では
        両端のシフト文字を除去する必要があります。

        SQL によるあいまい検索では、ちょっとしたコツが必要となります。
        上記の TechNet に紹介しています。
        シフト文字を除去すれば正しく動作すると思います。

        ありがとうございます! たま さん [ 2月26日(金) 15時16分 ]

          ご回答いただき、ありがとうございました!!
          教えていただきましたサンプルソースを
          参考させていただきます!(^−^)

    QSYSにあるジャーナルファイルの印刷 KOCCI さん [ 3月10日(水) 11時17分 ]

      お世話になっております。
      表記のとおり、ジャーナルファイルの印刷をしたいのですが、そもそもジャーナルがどのような
      ものであるのかわかりません。
      基本的な質問で申し訳ありませんが、ジャーナルそのものの説明と印刷方法をご教示いただければ
      と思います。

      RE:QSYSにあるジャーナルファイルの印刷 IKD さん [ 3月11日(木) 10時11分 ]

        ジャーナルの表示は DSPJRN コマンドで、印刷も
        DSPJRN + F4でロールアップしていけば 出力を *PRINT に
        変更すれば印刷することができます。
        しかしシステムのジャーナルを印刷しても莫大な出力となるはずですし
        ユーザーがシステムのジャーナルを見ても意味がないように
        思えます。
        ジャーナルとはジャーナル・レシーバーとともにシステムの実行履歴、
        特にユーザーが利用するのは重要なデータ・ベースに対しての
        更新履歴です。データがどのプログラムやエンド・ユーザーによって
        いつどのように更新された(更新前と更新後)のかの記録を取ります。
        プログラム中でも COMMIT & RPLLBK (仮更新とそれを元に戻す) 
        を使用するにはジャーナルしておくことが必要です。
        ジャーナルとジャーナル・レシーバーは別の媒体に BACKUP しておくと
        指定した時点まで復元することができます。
        印刷ではこのような復元はできませんので別の媒体等に BACUP するのが
        一般的な使用方法です。
        DSPJPN コマンドでお試しください。

      RE:QSYSにあるジャーナルファイルの印刷 柿の種 さん [ 3月11日(木) 11時18分 ]

        ゴミです。
        トラブれば、スクラッチインストールに勝るものは無い。
        くだらん物に興味をいだかない。

    RPGからストリームファイルの存在チェック 伊集院博 さん [ 4月13日(火) 16時12分 ]

      お世話になります。
      RPG-CGIで簡易的な電子印鑑システムを使用したシステムを構築中です。
      印影をストリームファイル上に登録していて、承認済になるとIMGタグで印影を
      表示するようにしています。
      承認者の印影が未登録の場合、「イメージが無い旨」の図形が表示されてしまい、
      ちょっと印刷するには、かっこ悪いものとなってしまいます。

      そこでストリームファイル上の印影の存在チェックを事前におこなって
      イメージを組み込むか、「 」を組み込むかRPG内で判断したいと考えています。
      CHKOBJのようなコマンドかAPIなど無いでしょうか。
      宜しくお願いいたします。

      RE:Tools「17. IFS のファイルの存在チェックを行う CHKIFS」 伊集院博 さん [ 4月13日(火) 16時25分 ]

        すみません。
        御社のHPのToolsの中に「17. IFS のファイルの存在チェックを行う CHKIFS」
        の紹介がありました。この方法て一度試してみます。
        お騒がせしました。

      CHKIFSのコンパイルが通らない 伊集院博 さん [ 4月13日(火) 17時36分 ]

        C言語が全く分らないのですが、ソースを貼り付けてコンパイルをした所、
        以下のジョブログが書き出されました。

        4>> CRTBNDC PGM(CGILIB/CHKIFS) SRCFILE(CGILIB/QCGISRC) AUT(*ALL)              
            CGILIB/QCGISRC(CHKIFS), 11.73: CZM0186(30)  文字列リテラルは行の終わりよ  
               り前に終わっていなければなりません。                                   
            CGILIB/QCGISRC(CHKIFS), 11.73: CZM0518(10) ツハイクソイ comment のオプションが  
               欠落しているか,正しく指定されていません。                             
            CGILIB/QCGISRC(CHKIFS), 12.1: CZM0166(30)  関数 Office の定義には括弧が必 
               要です。                                                               
            CGILIB/QCGISRC(CHKIFS), 14.55: CZM0186(30)  文字列リテラルは行の終わりよ  
               り前に終わっていなければなりません。                                   
            CGILIB/QCGISRC(CHKIFS), 15.10: CZM0296(30) #サタエセユオカ ファイル <stdio.h> が 
               見つかりません。                                                       
            CGILIB/QCGISRC(CHKIFS), 16.10: CZM0296(30) #サタエセユオカ ファイル              
              <stdlib.h> が見つかりません。                                           
            CGILIB/QCGISRC(CHKIFS), 17.10: CZM0296(30) #サタエセユオカ ファイル    
              :
        以下省略



        コメント文でエラーがでている様です。
        また、pragmaや#includeがログで確認すると文字化けしています。
        そこで確認ですが、
        ソースファイルは、5035で作成で宜しいでしょうか。
        ジョブのCCSID=5035で宜しいでしょうか。
        仕様書タイプは、"C"で宜しいでしょうか。
        その他に何か環境設定はいらないでしょうか。

        アドバイスをお願いいたします。

        RE:CHKIFSのコンパイルが通らない IKD さん [ 4月15日(木) 9時27分 ]

          お世話になります。IKDです。

          コンパイル環境は ソース・ファイルを CCSID = 65535 で
          JOB は CHGJOB CCSID(5035) で問題ありません。
          コンパイル・エラーの箇所を拝見致しますと
          エスケープ・シーケンスのコード ( ansi 5c)が 正しくないように
          思えます。「\」になっているところを キー・ボードの「ろ」の
          逆スラッシュのように変更してください。
          5250 エミュレータのキー・ボード配置で「ろ」のキーに
          ansi 5c と設定してください。
          よろしくお願い致します。 

          なお C400 の場合はコンパイル・リストがないのが省略時ですので
          OUTPUT(*print) とすればコンパイル・リストは出力されます。
          また 5250エミュレータのホストコード・ページは 930 ではなく
          939 を指定すると英小文字の入力が可能となります。

          RE:CHKIFSのコンパイルが通らない 伊集院博 さん [ 4月15日(木) 10時58分 ]

            WRKOBJでQCLEの存在を確認した所、
            どうやら弊社のAS/400にQCLEのライブラリーが存在していないようで
            これが問題のような気がします。
            このQCLEは、標準OSにインクルードされないものなのでしょうか。
            それとも圧縮されて、どこかに存在しているのでしょうか。
            ちなみにVER5.4です。

            RE:CHKIFSのコンパイルが通らない IKD さん [ 4月15日(木) 15時12分 ]

              OS V5R4M0 では弊社でもライブラリー QCLE は存在していません。
              ( QCLE は V5R1M0 ではあります。)
              また QCLE は参照用に使用するライブラリーですので
              C400 のコンパイルには不用かと思います。

              コンパイル・リストで変化はなかったのでしょうか ?

              RE:CHKIFSのコンパイルが通らない IKD さん [ 4月15日(木) 19時53分 ]

                CLP による簡単なサンプル・ソースをメールでご案内しましたので
                ご参考にしてください。
                同じものを Tools でも明日中には公開することを予定しています。

                頂いたソースで解決しました 伊集院博 さん [ 4月16日(金) 9時47分 ]

                  ありがとうございます。
                  頂いたソースでIFS上のファイルの存在チェックが可能になりました。
                  これで社内の簡易電子印鑑システムに組み込む事ができます。

                  RE:Ver4.5ではCLLEのパラメータが未対応のようでした 伊集院博 さん [ 4月16日(金) 10時37分 ]

                    Ver5.4ではうまくシステムに組み込む事が出来ました。
                    Ver4.5では、CLLEのコンパイルでエラーが発生しました。
                    こちらは、残念ですが諦めます。

                  RE:Ver4.5の対応として... 伊集院博 さん [ 4月16日(金) 11時29分 ]

                    あまり格好良くないのですが、
                    CLで「DSPLNK リンク先 OUTQ(*PRINT)」でメッセージを取得する事にしました。
                    見つかった場合は、DLTSPLFでスプールを削除する仕組です。
                    取りあえずこれで対応します。

                    RE:Ver4.5の対応として... IKD さん [ 4月16日(金) 20時4分 ]

                      V4R5 もお持ちなのですか ?!
                      CLP がボインターが使えるようになったのは
                      V5R3 あたりからだと思います。
                      弊社のV5R1 および V5R2 でも別の方法があるかどうか
                      調べてみます。

                      RPGで作成しました。 IKD さん [ 4月17日(土) 14時3分 ]

                        RPG による CHKIFS を作成しました。
                        RPG であればすべての OS リリースでご使用になることができます。
                        RPG ソースコードを配置した URL をメールでお送りしてあります。
                        また詳細につきましては 4/19(月) には このサイトの
                        Tools で公開を予定しています。

                        RE:ありがとうございました。 伊集院博 さん [ 4月19日(月) 10時7分 ]

                          色々お手数をおかけしました。
                          Ver.4R5M0でも動く事を確認しました。
                          この判断のおかげで、電子印鑑のGIFを表示すべきか
                           を表示すべきか簡単に判断する事が出来ました。
                          ありがとうございます。

    高輝度表示について あああ さん [ 5月28日(金) 15時5分 ]

      サブファイルの入力項目を、入力可能な場合はアンダーラインと入力内容ともにハイライトで
      表示させます。
       
      エラー文字が入力された場合は、エラーになった文字をハイライトで反転させたいのですが、
      その際、入力した文字が消えてしまいます。

      ハイライト指定をしなければ、入力した文字は消えません。

      どなたか原因、対応方法をご存知でしたら、ご教示ください。

      よろしくお願い致します。

      RE:高輝度表示について 柿の種 さん [ 5月31日(月) 15時47分 ]

        仕様です。
        非表示=反転+下線+高輝度。非表示の仕組みは左記になります。
        どうするかは、ご自分で考えてください。
        へたにアドバイスしても、反発されますので、対策は遠慮します。


    複数キーがある場合のREADEの使い方 いわた さん [ 6月15日(火) 13時19分 ]

      複数キーがある場合のREADEの使い方について教えてください。
      現在、RPG3の勉強中なのですが、資料などを確認しても解らないので質問させていただきます。

      例えばキーがKEY1-3の3つあるとして、その内KEY1-2の2つが等しくKEY3が異なる全レコードに対して
      処理を行う場合はどのような記述をすればいいのでしょうか。
      例えば、以下のようなレコードがあるとして、KEY1=B かつ KEY2=ABD のレコードに対してのみ処理
      を行いたいとします。
      この場合、対象となるのは5番と6番のレコードです。
      --------------------
      KEY1   KEY2   KEY3  番号
      A      ABC    100   1
      A      ABC    200   2
      A      ABD    300   3
      B      ABC    100   4
      B      ABD    120   5
      B      ABD    300   6
      C      ABC    100   7
      C      ABD    150   8
      C      ABE    300   9
      --------------------

      最初はKLISTにKEY1とKEY2を指定して演算項目1に指定して読み込めば大丈夫なのかと思いましたが、
      これをやると、5番目のレコードは読み込むのですが、6番目のレコードは読み込んでくれません。
      原因はKEY3が5番と6番で異なるからだとお思います。
      なにかワイルドカード的なものをKEY3に指定すればいいのかと考えましたが、ワイルドカードを指定
      する方法が見つかりません。
      色々なサイトでREADEはSETLLとセットで使用するものだという情報も得ましたが、SETLLの演算項目1
      にKLISTを指定すると、5番目を読み込んだ後にまた5番目の位置に位置決めしてしまいループが止ま
      りません。
      なのでSETGTでも試しましたが、コレをやると5番目すら読み込んでくれなくなりました。

      このような場合、どのようにREADEを使用すれば、KEY1-2が等しいレコードだけを読み込み対象にし
      てくれるのでしょうか?
      ご教示いただければ幸いです。

      RE:複数キーがある場合のREADEの使い方 IKD さん [ 6月15日(火) 15時39分 ]

        下記のような例になります。
        つまり 上位2つのキー・フィールドを組み合わせたキー・リスト EQLKEY によって
        READE するとお望みの実行となります。

        0001.00      C*----------------------------------------------------+  
        0002.00      C           SETKEY    KLIST                              
        0003.00      C                     KFLD           KEY1                
        0004.00      C                     KFLD           KEY2                
        0005.00      C                     KFLD           KEY3                
        0006.00      C*----------------------------------------------------+  
        0007.00      C                     MOVE *LOVAL    KEY3                
        0008.00      C           SETKEY    SETLLFILE                          
        0009.00      C*----------------------------------------------------+  
        0010.00      C           EQLKEY    KLIST                              
        0011.00      C                     KFLD           KEY1                
        0012.00      C                     KFLD           KEY2                
        0013.00      C*----------------------------------------------------+  
        0014.00      C                     DO   *HIVAL                        
        0015.00      C                     SETOF                     50       
        0016.00      C           EQLKEY    READEFILE                     50   
        0017.00      C   50                LEAVE                              
        0018.00      C                     END  

      RE:複数キーがある場合のREADEの使い方 QQ さん [ 6月15日(火) 21時6分 ]

        SETLLは位置決めの為に一度行うものです。
        KEY1=B・KEY2=ABDの位置から読み始めなさい、とPGMに命令してます。
        ファイルにKEY3まで定義してあったとしても、KEY1・KEY2をキーリストに定義し
        SETLL・READEで問題ありません。
        むしろ今回の処理では、記述しない方がすっきりします。

        SETLL・READEでDOで回した時、に該当する一件目しか読み込まないというのであれば、
        ロジックを見直した方がいいかと思います。
        キーリスト
          KEY001 KLIST
              KFLD     KEY1
              KFLD     KEY2

        パターン1・・・IKDさんの記述した*HIVAL
          KEY001  SETLLFILEA
               DO  *HIVAL
            KEY001    READEFILEA                90
        90            LEAVE 
                   処理
               ENDDO
        パターン2・・・DOWEQ
          KEY001  SETLLFILEA
            KEY001    READEFILEA                90
            *IN90     DOWEQ*OFF
                      処理
          KEY001    READEFILEA                90
                      ENDDO
        パターン3・・・DOUEQ
          KEY001    SETLLFILEA                
            *IN90     DOUEQ*ON
            KEY001    READEFILEA                90
            *IN90     IFEQ  *ON
                      処理
                      ELSE
                      処理
               ENDIF
                      ENDDO

        この何れかに該当するようロジックを見直してください。
        DOの回し方は好みが分かれるところですが、それぞれ特性を生かした
        記述を心がけて下さい。
        極力余計な記述をさけ、特性を生かしメンテナンスの向上を意識しましょう。
        尚、CHAIN・LOKUP・READなどの命令直前でフラグを*OFFにする必要もありません。

      RE:複数キーがある場合のREADEの使い方 QQ さん [ 6月15日(火) 21時9分 ]

        位置がずれて見づらくてすいません。

    UTF8⇒EBDIC変換について tono さん [ 7月22日(木) 10時47分 ]

      AS/400内のUTF8データをEBCDICに変換したいのですが可能でしょうか?
      可能であれば、その方法を教えて頂けないでしょうか?

      よろしくお願い致します。

      RE:UTF8⇒EBDIC変換について IKD さん [ 7月22日(木) 16時44分 ]

        「AS400内のデータ」とあるのは ライブラリー・システムの
        ファイルでしょうか ?
        それとも IFS 上にあるストリーム・ファイルでしょうか ?
        さらに その UTF-8 のデータの CCSID はどのようになっていますでしょうか ?

         ( データ・ベースの場合は各フィールド毎に CCSID の値は異なります。)

        RE:UTF8⇒EBDIC変換について tono さん [ 7月22日(木) 18時10分 ]

          > 「AS400内のデータ」とあるのは ライブラリー・システムの
          > ファイルでしょうか ?
          > それとも IFS 上にあるストリーム・ファイルでしょうか ?
          > さらに その UTF-8 のデータの CCSID はどのようになっていますでしょうか ?
          > 
          >  ( データ・ベースの場合は各フィールド毎に CCSID の値は異なります。)

          可能かどうか調べ始めたところで、まだ何も決まっていない状態です。

          行いたい事は、PC上からUTF-8のTAB区切りCSVをFTPでAS/400上に転送を行い、
          EBCDICコードに変換後、業務処理を行うことを考えています。

          「AS400内のデータ」については、『IFS上にあるストリーム・ファイル』については、
          使用したことがないので『ライブラリー・システムのファイル』を考えていました。

          OSのバージョンは、V3R7で、CCSICは、ネット上で関連があると思われるような『1208』
          『1399』はないようです。
          ※CRTPF時に選択できなかったのでそのように判断しました。

          上記のような環境で、変換を行うことは可能でしょうか?

    オンライン画面での入力情報取得について qtr2727 さん [ 9月28日(火) 18時28分 ]

      いつもおせわになっております。

      教えていただきたいことがあります。
      例えば受注入力画面というものがあり、入力項目が10こあるとします。
      そのとき入力した情報をそのまま取得(データベースなどに)することはできるのでしょうか。

      データベースに登録されたあとだとビジネスロジックを通るので入力された値が
      変わることがあるので、入力されたままの情報を取得できたらとおもいます。

      それにより同じデータでテストが何回も行えるとおもっているのですが、
      そういうことはできないのでしょうか。

      RE:オンライン画面での入力情報取得について IKD さん [ 9月29日(水) 11時52分 ]

        入力データをデータ・ベースに出力する、ということが
        目的であれば

        D DDS001        E DS                  EXTNAME(PGM001D)

        のようにして入力バッファー全体を取得してPGM で
        データ・ベースに出力することになりますが
        ご質問の趣旨は画面入力テストにおいて繰り返し同じ入力を
        することを避けて、自動的に同じ入力データによる入力を
        再現できないか ? ということであろうと推測できます。

        このことを実現するには 5250エミュレータのマクロ機能を
        使用することです。
        入力操作をマクロに記録しておいて、後で再生するようにすれば
        キー操作や入力値もすべて再現することができます。
        また、マクロそのものもテキストとして ローカルPCに保管されますので
        自分で解析してマクロそのものを修正することができます。

        さらにマクロは個別に名前をつけて保存することができますので
        再生時に指定することも容易です。
        一度、お試しください。

        RE:オンライン画面での入力情報取得について qtr2727 さん [ 9月29日(水) 14時42分 ]

          > 入力データをデータ・ベースに出力する、ということが
          > 目的であれば
          > 
          > D DDS001        E DS                  EXTNAME(PGM001D)
          > 
          > のようにして入力バッファー全体を取得してPGM で
          > データ・ベースに出力することになりますが
          > ご質問の趣旨は画面入力テストにおいて繰り返し同じ入力を
          > することを避けて、自動的に同じ入力データによる入力を
          > 再現できないか ? ということであろうと推測できます。

          回答ありがとうございます。これはRPGVでも可能なのでしょうか?
          ILEのようにおもえるのですが。
          実は今回ASからJAVAへコンバージョンする案件がありまして、現行のASでの日々の業務で入力した
          データ(例えば受注データベースに対して受注データを100件打つなど)を取得しておいてそれを
          JAVA側で入力データ(テストデータ)として使いたいと思っています。

          いわれているマクロも考えて実行してみたのですが、データのみを抽出するのは簡単ではないかなぁ
          と考えています。

          そういったことは難しいですかね・・・
          1つはDUMP命令でスプールにだして切り出すなども考えてみたのですけどね。

          RE:オンライン画面での入力情報取得について IKD さん [ 9月29日(水) 15時50分 ]

            弊社も実は RPG を Java への自動変換する依頼を受けていますので
            興味深いご質問であると思います。

            D DDS001        E DS                  EXTNAME(PGM001D)

            に関しては RPG III であっても同じ機能はあります。
            ご紹介しました 5250エミュレータのマクロを利用する方法は
            移行した Java でも DSPF を利用するのであれば
            5250エミュレータのマクロで RPG のときの動作を再現テストすることが
            できます。
            ただし JSP & Servlet に移行されるのであれば、この方法はできません。
            RPG を Java に書き換えるに当たっては

             - DSPF を利用するのであれば 24 * 80 の制約が残ってしまう。

            の問題がありますが JSP & Servlet であれば

             - JDBC であればパフォーマンスは低下してしまう。
             - CHAIN 命令が使用できないためビジネス・ロジックにかなりの制約が出てしまう。

            の問題も出てしまいます。
            いずれの場合にせよ、対話型プログラムのテスト手法をあらかじめ考えて
            おられるのは良いことであると思います。

            RE:オンライン画面での入力情報取得について qtr2727 さん [ 9月29日(水) 17時9分 ]

              > 弊社も実は RPG を Java への自動変換する依頼を受けていますので
              > 興味深いご質問であると思います。
              > 
              > D DDS001        E DS                  EXTNAME(PGM001D)
              > 
              > に関しては RPG III であっても同じ機能はあります。

              回答ありがとうございます。偶然とはいえ同じような問題があったのですね。
              RPG→javaへの自動変換ツールなどについても弊社で質問をうけましたがあるようですが
              実績がよくわからない感じのものがあり事実上はかきかえるしかないようにおもっています。
              javaのほうでは回帰テストなどのツールが充実してるらしく、入力データさえ
              あればそれを実行すれば品質を保てるということらしいです。
              上記で教えていただいたものは、このあとどのように使えばいいのでしょうか?

              PGM001Dの入力フィールドの値がDDS001に入ってくるということなのでしょうか?
              それをべたデータのDBに吐き出すようなロジックをくめばいいのでしょうか?

              質問ばかりで申し訳ありません。

            RE:オンライン画面での入力情報取得について qtr2727 さん [ 9月29日(水) 17時18分 ]


              > D DDS001        E DS                  EXTNAME(PGM001D)

              すいません、RPG3でD仕様書はないようなんですが、上記はどう定義するのでしょうか

              ちょっとサンプル的な書き方をおしえてもらうことはできないでしょうか?

              RE:オンライン画面での入力情報取得について IKD さん [ 9月29日(水) 18時3分 ]

                外部データ構造(データ・ストラクチャー) はご存じでしょうか ?

                任意のデータ・ベースや画面ファイルを DS の一部として再定義する方法です。
                外部データ・ベースとしての DS でデータ・ベースのバッファーをまとめて
                再定義しておいて、それを画面バッファーとして使用することができます。

                RPG III の例の参考として
                http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QRPGSRC.FILE/ANS004.MBR
                をご覧ください。

                この中で DSPDTA が JUCHU というデータ・ベースのバッファーを利用していますが
                画面ファイル ANS004FM を入力バッファーを DSPDTA として定義することもできます。

    分類プログラムのマニュアル CTK さん [ 10月14日(木) 17時7分 ]

      AS/400の「分類プログラム 使用者の手引きと参照」を探しています
      web検索してもhitしないのですが、PDF化されたものは存在しないのでしょうか? 

      RE:分類プログラムのマニュアル IKD さん [ 10月17日(日) 12時6分 ]

        確かに「分類プログラム 使用者の手引きと参照」はそれ自体、単独では
        PDF として存在していないようです。
        最後の邦文マニュアルは OS V3R2M0 ILR ブックマネージャーの中にある
        OS V3R1M0 の[AS/400 - V3R1 適用業務開発] - [AS/400 分類プログラム 使用者の手引きと参照]
        として存在していることを確認しました。
        OS V3R2M0 の ILR ブックマネージャーをおもちであればこ参照ください。
        V3R2M0 以降の ILR ブックマネージャーはどれも一部分しかマニュアル化されておらず
        すべての記述があるのは V3R2M0 が最初であり、同時に最終でもあります。

        また、英文でも可ということであればネット検索で 米国IBM サイトを検索すれば
        出てくると思います。

        今回の例でもおわかりのように、すべてのマニュアルが邦文化されて電子媒体化されたのは
        残念ながら V3R2M0 が最後です。
        最新の詳細は英文に頼らなければならないのが現実であり
        IBM からは、日本語化は取り残されているように見えます。
        英文でも可ということであれば PDF を探してみますのでお知らせください。

        RE:分類プログラムのマニュアル CTK さん [ 10月18日(月) 17時3分 ]

          ありがとうございました

          V3R2M0を探してみます

          RE:分類プログラムのマニュアル AAAA さん [ 10月20日(水) 12時0分 ]

            AS/400 FMTDTA で 探してください。
            いろいろ、出てます。
            FMTDTAはCPYF SQL に比べて、非常に高速です。
            日本IBMが、推奨しないのは、大人の事情です。

    VPN経由でAS/400のCGIが起動できない 伊集院博 さん [ 12月3日(金) 8時52分 ]

      いつもお世話になります。
      解決のヒントでも頂ければと思います。

      社内の基幹システムの一部を販売代理店にVPN経由で
      エミュレータを使用した画面で公開して使ってもらいます。

      この度、販売代理店が使用するシステムを全面的に改修し、
      EPSを使用してブラウザで提供するCGIのシステムを構築しました。
      (AutoWebではありません。純粋なCGI-RPGです。)

      いざVPN経由でブラウザからCGIをアクセスしようとすると、
      指定したアドレスが見つかりませんのエラーメッセージでブラウザが表示されます。

      (状況の整理)
      ・エミュレータは繋がる。PINGも通る。
      ・ブラウザからALASKAを見に行くと見れない。
       ちなみにIBM ApacheのHTTPにもアクセスできないのでALASKAの問題ではなさそう。
      ・通信関係で契約している会社に問合せた所、
       AS/400のサーバーがブロックしているのではないかとの回答

      以上の状況から、何か考えられる原因、またはヒントは無いでしょうか。

      RE:VPN経由でAS/400のCGIが起動できない IKD さん [ 12月3日(金) 9時56分 ]

        こちらこそいつもお世話になります。
        症状から推察致しますと PORT 80 がふさがれているように
        見えます。
        「指定したアドレスが見つかりません」のエラーは
        ブラウザのメッセージでしょうか ?
        AS/400 とブラウザのあいだに FireWall や
        PROXY サーバーは存在しているでしょうか ?

        また理論的に正しいはずであるのに正常に動作しない障害の
        原因の多くは PROXY サーバーです。
        PROXY サーバーを利用されているようでしたら一度、
        ブラウザの設定を PROXY サーバーを使用しない、に
        変更して接続を試みてください。

        それでも障害が続くようであればネットワークのプロトコルを
        キャプチャーして解析する必要があります。
        このあたりのことに関しましてはご必要があれば
        技術担当よりご案内申し上げます。

        アドバイスありがとうございます。 伊集院博 さん [ 12月3日(金) 18時14分 ]

          IKD様のアドバイスを基に再度、
          ネットワークを依頼している会社へ
          設定の確認などを依頼しました。
          結果が判明しましたら報告させていただきます。

      RE:解決しました 伊集院博 さん [ 12月24日(金) 9時13分 ]

        解決しました。
        単純なミスでした。
        参考にならないと思いますが一応報告します。

        VPN接続時にHTTPサーバが立ち上がっていなかっただけでした。
        Webサービス時間帯に制限を設けていて、
        VPNでの接続テスト環境は自宅にしかなく、
        いつもHTTPサーバのサービス時間外にテストを行なっていました。
        大変お騒がせいたしました。

    仮想テープからFTP転送 かなとん さん [ 12月8日(水) 17時54分 ]

      初めてFTPを使っているのですが、自分が考えた範囲でPUTを実行しても上手く出来ません。
      どなたかご教示願えないでしょうか。

      LODIMGCLG IMGCLG(PLISM_BF) DEV(TAPVRT01)                    
      SAVLIB     LIB(T50) DEV(TAPVRT01) SEQNBR(1) +         
                   ENDOPT(*LEAVE) CLEAR(*ALL) PRECHK(*YES) +    
                   SAVACT(*LIB) SAVACTWAIT(480) ACCPTH(*YES) +  
                   SPLFDTA(*ALL) DTACPR(*YES) OMITLIB(QMPGDATA) 

      FTP 192.XXX.XXX.XXX
      > FTPTEST                                    
        331 P                     FTPTEST          
        530 L              .                       
      > BINARY                                     
        200 T           I                          
      > PUT PLISM_BF A.TXT                         
         最初に USER サブコマンドを出す必要がある。

      RE:仮想テープからFTP転送 伊集院博 さん [ 12月8日(水) 18時19分 ]

        FTPのサーバーメッセージを見ると、
        530が出ていますね。
        これは「ログオンを試みたが拒否された」
        ですのでユーザー、パスワードが
        間違っているのではないでしょうか。

        だからPUT命令を出しても、
        USERサブコマンドを出せ!と
        怒られているのではないでしょうか。

        外していたらごめんなさい。

        RE:仮想テープからFTP転送 かなとん さん [ 12月16日(木) 16時6分 ]

          伊集院博 さん 回答ありがとうございます。ログインは出来ましが、AS400からパソコンにデータを
          落とすにはコマンドをどのように指定したら出きるでしょうか。
          AS400にはRootの下にPLISM_BFが出来ています。


            220 CONNECTION WILL CLOSE IF IDLE MORE THAN 5 MINUTES.                     
          > QSEC                                                                       
            331 ENTER PASSWORD.                                                        
            230 QSEC LOGGED ON.                                                        
             OS/400 IS THE REMOTE OPERATING SYSTEM. THE TCP/IP VERSION IS "V5R4M0".    
            250  NOW USING NAMING FORMAT "0".                                          
            257 "QGPL" IS CURRENT LIBRARY.                                             
          > BINARY                                                                     
            200 REPRESENTATION TYPE IS BINARY IMAGE.                                   

      RE:仮想テープからFTP転送 伊集院博 さん [ 12月16日(木) 17時3分 ]

        すみません。
        仮想テープからのFTP転送を経験した事がないので分りません。

        AS/400上のDBをPCサーバにFTP転送するのであれば
        当HPにも説明がありますので参照してみて下さい。
        <http://www.as400-net.com/cgi-bin/contents/tips.cgi?con=ftp>


        詳細が質問から読み取れませんが、簡単な説明を記載します。

        @AS/400のコマンドラインより
         FTP RMTSYS('192.XX.XX.XX')
        Aユーザー、パスワードでFT転送Pプロトコル画面へ(ログイン)
        BBINARY を指定していますが、コード化変換しなくて良いですか?
         PCでFTP転送したデータを見たいのであれば、
         BINARYではなく、LTYPE C 932 を発行して下さい。
         (FTP転送時に、EBCDIC→ASCIIへコード変換します)
        CAS/400からPCサーバにデータを転送するコマンド
         PUT PLISM_BF A.TXT を発行します。
         ログイン時に「257 "QGPL" IS CURRENT LIBRARY.」 
         と表示されていますので QGPL/PLISM_BF のデータを転送します。
         ここで他のライブラリーにある、例えばMYLIB/PLISM_BFを転送したいのであれば
         PUT MYLIB/PLISM_BF A.TXT 
          となります。
         
        参考ですが、FTPコマンドを発行すると3桁の数字が返ってきますね。
        300未満は問題ないメッセージで、300以上はエラーメッセージとなります。

        頑張って下さい。

    異なるポートのHTTPサーバーを複数立ち上げたい 伊集院博 さん [ 1月19日(水) 9時49分 ]

      お世話になります。
      社外向けのWebシステムにはBASIC認証をさせて、
      社内向けのWebシステムにはBASIC認証をさせないような運用がしたいのですが
      可能でしょうか。
      また、EPSのHTTPサーバを1台のAS/400上でポートを変えて複数起動する事は可能ですか。
      これができれば設定は可能と思うのですが...
      素人考えですみません。

      RE:可能です。 IKD さん [ 1月19日(水) 12時14分 ]

        1) Basic 認証の可否について

           可能です。
           社外に対しては IPアドレスだけでユーザー・プロフィールによって
           接続させるかまたは HTTP構成の Auth ディレクティブで指定したパスに
           アクセスさせるようにすれば Basic 認証が要求されます。
           これに対して社内では単に社内用のパスに接続させるだけであれば
           Basic 認証は要求されません。
           ただしこの場合では誰がアクセスしているのかが不明となってしまいますので
           アクセス・ユーザーを特定できるようにされたいのであれば
           自動ログインをご利用になることです。または最初だけ ユーザー登録させて
           それをクッキーに記録するようにすれば、次回以降はクッキーから
           ユーザー、パスワードが System i に流れることになります。
           つまり自動ログインのようにログインの必要が無くなります。
           このあたりのテクニックは具体的な形で TechNet 等でご紹介できるように
           検討してみます。

        (2) Alaska の複数インスタンスの起動について
         
           可能です。
              PORT 番号を変えてということで PORT 番号の重複がないのであれば
           STRHTPSVR の実行時に PORT 番号を変更して機動すれば
           可能です。
           また同じPORT 番号であっても HTTP構成の HostName ディレクティブ毎に
           インスタンスを起動させることができます。
           例えば System i に社内用の LANカードと社外用の LAN カードの
           2 枚のカードを装填してい場合、当然 IP アドレスは異なるので
           HostName ディレクティブ 毎に インスタンスを起動することができます。
           つまり2つのインスタンスが起動されているが、どちらも PORT = 80 である
           とすることができます。
           これを利用すると IBM Apache が PORT=80 で待機しているが
           別のカードに対して Alaska も PORT = 80 で待機している、という状態を
           作り出すこともできます。

        RE:可能です。 伊集院博 さん [ 1月19日(水) 13時10分 ]

          回答有難うございます。
          (1)のBasic認証について試して見た所できました。

          通常全てのCGIにBasic認証させる時は、
          Auth  /cgi-bin/*
          と記述すれば可能だと思いますが、
          外部とのやり取りに必要なHTMLを別フォルダーを作成しているので
          IKDさんのアドバイス通り
          Auth  /AS400-NET.USR/PROJECT/HANB/*
          と記述を追加した所、外部システムにだけBasic認証されました。

          (2)については今ひとつ理解できませんでしたが
          (1)で問題が解決されたので取り合えず解決とします。

    Basic認証でパスワードミスの場合 伊集院博 さん [ 1月19日(水) 13時39分 ]

      連続投稿で申し訳ございません。もう一つ教えて下さい。

      EPSのBasic認証でユーザー又は、パスワードミスをした場合、
      ALASKAからエラーメッセージで
      「ユーザー・プロファイルXXXXのパスワードが正しくない。」
      と表示されますが、以降、このブラウザからは再接続ができなくなります。
      (パスワードを間違えた状態であらためてBasic認証画面が表示されないため)

      Basic認証とは、このようなものなのでしょうか。
      理想としては、ユーザー、パスワードが正しく入力されるまでは、
      Basic認証の画面を表示し続けてもらいたいのです。

      現在の所、この場合の対策として一度ブラウザを閉じてあらためて起動しています。

      RE:Basic認証でパスワードミスの場合 UTU さん [ 1月19日(水) 18時45分 ]

        お世話になります。

        EPSのBASIC認証ですがパスワードミスした場合、HTTPサーバー ALASKAより
        「ユーザー・プロファイルXXXXのパスワードが正しくない。」
        という画面が返され、その状態からブラウザーでの再接続はできません。

        ブラウザーを閉じずに再ログインを行うようにするには、フォーム認証用の
        ログイン画面を独自に作成する必要があります。
        様々なユーザーでログイン画面を拝見する機会はありますが、
        ログイン処理で柔軟にログインエラー制御をするには、やはりフォーム認証
        を使用されています。

        代替案として何かいい方法があればご案内させていただきます。

        RE:この件については運用で対応します 伊集院博 さん [ 1月20日(木) 7時44分 ]

          了解しました。
          ログインに失敗した場合は、ブラウザを一度閉じて
          再度、立ち上げ直す様に運用マニュアルに記載するようにします。

    ポップアップウィンドウに関して JunkieXXL さん [ 1月28日(金) 17時20分 ]

      既存のRPGプログラムで、ポップアップウィンドウがあり、そのウィンドウ内は、
      サブファイルとなっております、
      そのサブファイル上部に項目のタイトル(SFLCTL部)があります。
      そのサブファイルには数量項目があるのですが、ユーザーより、最下部に数量の
      トータルを表示して欲しいと言われ、修正したいのですが、
      WDWTITLE(*bottom)を使用しない方法でどのようにすればできるのでしょうか。
      ご教示願います。
      抽象的な文章ですみません、、、。

    バッチ印刷ジョブのJOBNO取得について TABA さん [ 3月28日(月) 9時12分 ]

      はじめまして、TABAと申します。

      現在、javaで作成したWebのシステムからCLを呼び出し、その中で作成した
      スプールをMRGAPWしています。
      MRGAPWする時にはTipics CL「50. バッチ印刷ジョブのジョブ番号を調べ
      るには?」を参考にさせていただいています。

      その時、当社の環境では、QPRTJOBのJOBNOを取得しようとすると、以下のよ
      うな重複JOBが存在している為、正しく取得できない現象が発生しています。

       ジョブ        ユーザー        番号     タイプ      ----- 状況 -----  入力されたシステム       
       QPRTJOB     QPGMR       027938  PRINT     OUTQ              05/08/12   
       QPRTJOB     QPGMR       288848  PRINT     OUTQ              11/03/18   
       QPRTJOB     QPGMR       353694  PRINT     OUTQ              09/12/19   
       QPRTJOB     QPGMR       717483  PRINT     OUTQ              10/12/06   


      何か対応する方法はあるのでしょうか。アドバイス願います。

      RE:バッチ印刷ジョブのJOBNO取得について IKD さん [ 3月28日(月) 10時20分 ]

        ご指摘のように同じユーザー・プロフィールに複数の
        JOB番号が発生してしまうのは OS の障害であり
        どちらかを削除すればよいのですが方法はまだ
        特定できていません。

        しかしご利用中の i5/OS が V5R2M0 以上であれば
        API: QSPRILSP ( Retrieve Identify of Last Spool File Created )
        というAPI が公開されていますので、これを利用することができます。

        [例]
         CHGVAR     VAR(%BIN(&RCVLEN)) VALUE(128)         
         CALL       PGM(QSPRILSP) PARM(&RCVDTA &RCVLEN +  
                      'SPRL0100' &APIERR)                 
         CHGVAR     VAR(&JOBNBR) VALUE(%SST(&RCVDTA 39 6))

        [参考]
        実際に弊社製品では OS を判断してし上記の QSPRILSP を利用しています。
        最新の CLP : PRTJOBNO を下記に配置致しましたので
        ご参照ください。

        http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QCLSRC.FILE/PRTJOBNO.MBR

    FMTDTAのソースタイプ CTK さん [ 3月29日(火) 16時26分 ]

      FMTDTAを使用し、ソートをしたいと思うのですが、
      ソースファイルのタイプは何を指定すればよいのでしょうか?

      RE:FMTDTAのソースタイプ IKD さん [ 3月29日(火) 22時36分 ]

        FMTDTA の解説書には SEU で編集するとは書かれていても
        ソース・タイプについては何も書かれていませんね。
        となると TXT くらいしかないのではないでしょうか ?

      RE:FMTDTAのソースタイプ CTK さん [ 3月30日(水) 13時4分 ]

        ありがとうございます
        TXTでできました

    ワークステーションIDの割振り状況を知るには… TK さん [ 4月7日(木) 14時18分 ]

      AS400初心者のモノです。初級な質問で申し訳ないですが、アドバイスを希望しています。
       
      IBM iSeries Access for WindowsのエミュレータでワークステーションIDを割り振ってAS400
      に接続しています。
      すでに割り振っているワークステーションIDを調べるにはどうすればいいでしょうか?
      また過去割り振っていたが、現在は利用されていないワークステーションIDを調べる方法も知り
      たい状況です。
      WRKOBJやWRKCFGSTSなどを利用するとわかる様子ですが、正しい方法がわかりません。

      何卒、ご教示よろしくお願いいたします。

    セッション不起動の原因に関するであろうハードウェア障害が起こったのメッセージの意味 TK さん [ 4月27日(水) 10時8分 ]

      エミュレータの画面のセッションと、プリンタセッションをi accessのバッチで起動しているので
      すが、プリンタセッションしかつながらず、活動記録ログに下記メッセージが出ていました。(プ
      リンタ=PRT25)


        装置 PRT25 でハードウェア障害が起こった。                            
       (I C G R) 印刷装置 PRT25 の位置合わせを確認してください。             
       I                                                                     
        書き出しプログラム PRT25 はファイル QPRINT の印刷を完了していない。  
        書き出しプログラム 220988/QSPLJOB/PRT25 は正常に終了した。 


        以下、「装置 PRT25 でハードウェア障害が起こった。」でF1キーを押した時の詳細抜粋

       メッセージ . . :    装置 PRT25 でハードウェア障害が起こった。                
       原因−−ジョブ 220988/QSPLJOB/PRT25 のライブラリー QSYS のファイル           
        QPSPLPRT を処理中です。装置が事前に作動可能になっていなければ,活動ジョブは 
         装置の制御を中止することになります。 

         プリンタセッションしか上がらなかった原因が知りたいのですが、まず、参考になると思われる
      このメッセージをどう追って理解していけば良いかわかりません。

      聞き手からは言葉足らず、情報不足などでわかりにくい文章かもしれず、大変申し訳ないですが、
      アドバイスを頂けると助かります。よろしくお願いします。


    スリープ状態にできない 節電 さん [ 5月18日(水) 20時56分 ]

      セッションを開いた状態で、パソコンを手動でスリープ状態にしようとすると、「PCSWS044 - 
      Windowsは、1つ以上のセッションが接続中にスリープする許可を要求しています。」というメッセ
      ージが出てきます。これに対して「OK」を選択することでスリープ状態にすることができます。し
      かし、自動でスリープにする時間を設定した場合、セッションを開いた状態だと、設定時間になっ
      てもスリープ状態にはなりません。セッションを開いた状態で、自動でパソコンをスリープ状態に
      することは不可能なのでしょうか?

      RE:スリープ状態にできない IKD さん [ 5月19日(木) 9時25分 ]

        PCOMM をスリープ状態にするためには
        Windows が App に対して スリープ可能か尋ねてきたときに
        PCOMM が許可を与えなければなりません。
        「スリープ許可」の項を調べて頂ければ

          InactiveTimeout の設定が可能とありますが
         同時にお勧めはできないとあります。
         下記サイトをご参照ください。

        http://publib.boulder.ibm.com/infocenter/pcomhelp/v5r9/index.jsp

        ありがとうございました 節電 さん [ 5月19日(木) 21時12分 ]

          > ご回答いただき、ありがとうございました。
          > 参考にさせていただきます。

    CII/400トランスレータについて PIO さん [ 6月14日(火) 10時28分 ]

      AS/400の「CII/400トランスレータ」について教えてください。
      このソフトで、文字コード=EBCDICでは、正しくデータ変換できるのですが、
      文字コード=JISだと文字化けしてしまいます。
      どこかで、設定変更等しないといけないのでしょうか?

      よろしくお願いいたします。

      RE:CII/400トランスレータについて IKD さん [ 6月15日(水) 11時9分 ]

        「CII/400トランスレータ」は IBM 社の製品であり、しかも
        2005/04/30にサービスも終了しているようです。
        このため IBM にお問い合わせ頂くしか方法がありません。
        文字列のコードを変換する方法であれば別途ご質問をお願い致します。

    困った どん さん [ 7月26日(火) 8時45分 ]

      現在AS400を使用していますが
      会社統合により、システム停止
      する事になりましたが、過去データ
      の問い合せ等があった場合、
      電源を入れて使えるようにしたい
      会社統合する関係でネットワーク体系が
      違います。良い方法はありますか?
      またスタンドアローンでも参照出来れば
      構いません。

      RE:困った IKD さん [ 7月26日(火) 16時33分 ]

        システム停止後、完全に主電源もシャットアウトしてしまうと
        30 日経過後か正確な日数は記憶していませんが
        長期間、放置しておくとライセンス・キーが消滅します。
        ライセンス・キーが消滅すると厄介でOS も自動消滅してしまいます。
        次に新規に OS を導入したとしても 70 日しか継続させることができません。
        70 日後には再び OS を再導入する必要があります。
        このことを避けるには主電源だけはつねに入れっぱなしにしておく必要があります。

      RE:困った 山崎 さん [ 7月28日(木) 15時10分 ]

        スタンドアローンで使用するために難しい事はないと思います。
        コンソールがあるのであればAS/400−コンソールで良いのでは?
        ハウジングしていて手元にAS/400がない場合は
        総合されるネットワークに入れるか、
        別ネットワークを張るしかないですね。
        ちなみにAS/400のネットワーク設定を変えるには
        NETSTATコマンドでIPやゲートウェイを変更できます。

    ブラウザへの自動入力 伊集院博 さん [ 8月5日(金) 12時4分 ]

      事前に準備したデータ(Excel、テキストなど)を
      WEBブラウザのテキストボックスに自動で入力できるような
      仕組は無いでしょうか。

      ブラウザへ直接入力すればよいのですが、
      原始データはExcelに有る為、
      入力の軽減ができれば良いと考えています。

      外部から直接サーバへデータのアップロードの方法も有りますが
      不特定多数からのデータアップロードされるのは恐いため
      インターフェイスはブラウザを使用し、
      入力項目は現在あるCGIのチェックロジックを通したいと考えています。

      インターネットなどで検索すると
      ExcelのVBAでできそうなのですが、知識不足でダメでした。
      入力を軽減するようなツールが有ると良いですね。
      質問ではなく要望になってしまいました。
      何か簡単な方法は無いでしょうか。

    CLからSBMJOB実行時のパラメータ どん さん [ 9月9日(金) 15時23分 ]

      お世話になります。
      CLから
      SBMJOB CMD(CALL PGM(&W2LIB/&W2MBR) PARM(&W2PRM)) JOBQ(QBATCH)
      を実行しようとしています。
      以下はDDSで入力される任意の値。
      &W2LIB:10
      &W2MBR:10
      &W2PRM:250
      画面で入力したパラメータがサブミットで実行された際に、
      '2011' '201105' 'LIBXXX' '2011'
      ->
      ''2011''''201105''''LIBXXX''''2011''
      の様になってしまいます。
      どの様に処理を組めばよいのかご教授戴ければと思います。

      宜しくお願い致します。

      RE:CLからSBMJOB実行時のパラメータ IKD さん [ 9月9日(金) 17時50分 ]

        [例]
        下記のように DSPLIB xxxx ( xxxxは DSPF から入力されるライブラリー名) を
        実行する小さなCLP を作成して実行しましたが、特に変数が引用符で囲まれるような
        症状はなく正常に指定したライブラリー名で実行されます。
        作成されたDSPF と CLP のソースをお知らせ頂いたほうが問題の解決は
        早まると思いますのでよろしければソースの内容をお知らせください。


        ・DSPF
        0001.00      A                                      DSPSIZ(24 80 *DS3) 
        0002.00      A                                      MSGLOC(24)         
        0003.00      A                                      PRINT              
        0004.00      A          R DSPHEAD                                      
        0005.00      A                                      TEXT(' 初期画面 ') 
        0006.00      A                                      CF03(03 ' 終了 ')  
        0007.00      A                                  1 27' ジョブの投入 '   
        0008.00      A                                      DSPATR(HI)         
        0009.00      A                                  2  2' ライブラリー名 ' 
        0010.00      A            LIB           10A  B  2 22                   
        0011.00      A                                 23  2'F3= 終了 '        
        0012.00      A                                      COLOR(BLU)         

        ・CLP
        0001.00              PGM                                               
        0002.00 /*---------------------------------------------------------*/  
        0003.00 /*   SBM001CL    :  ジョブの投入                           */  
        0004.00 /*---------------------------------------------------------*/  
        0005.00              DCLF       FILE(TEST.COM/SBM001D)                 
        0006.00                                                                
        0007.00              SNDRCVF    RCDFMT(DSPHEAD)                        
        0008.00              IF         COND(&IN03 *EQ '1') THEN(RETURN)       
        0009.00              SBMJOB     CMD(DSPLIB LIB(&LIB) OUTPUT(*PRINT)) + 
        0010.00                           JOB(DSPLIB) MSGQ(*WRKSTN)            
        0011.00              ENDPGM               

        RE:CLからSBMJOB実行時のパラメータ どん さん [ 9月9日(金) 18時18分 ]

          IKD殿、早速のご連絡ありがとうございます。
          ソースを貼らせて戴きます。

          宜しくお願い致します。

          ・DSPF
          0026.00      A          R RUNSQLW2                                            
          0027.00      A                                      OVERLAY                   
          0028.00      A                                  1  2'RUNSQLW2'                
          0029.00      A            PCOMP          3A  O  1 12DSPATR(HI)                
          0030.00      A                                      DSPATR(UL)                
          0031.00      A            PCOMN         42A  O  1 18DSPATR(HI)                
          0032.00      A                                      DSPATR(UL)                
          0033.00      A                                  1 64DATE                      
          0034.00      A                                      EDTCDE(Y)                 
          0035.00      A                                  1 73TIME                      
          0036.00      A            W2CMD          1A  B  4 12COLOR(BLU)                
          0037.00      A                                  4 15'1:SQL / 2:SBMJOB(NO PARM)
          0038.00      A                                      OB(PARM) / 4:SYSTEM'      
          0039.00      A                                  6 12'SOURCE FILE :'           
          0040.00      A            W2SRC         10A  B  6 26COLOR(BLU)                
          0041.00      A                                  8 12'LIB         :'           
          0042.00      A            W2LIB         10A  B  8 26COLOR(BLU)                
          0043.00      A                                 10 12'SRCMBR      :'       
          0044.00      A            W2MBR         10A  B 10 26COLOR(BLU)            
          0045.00      A                                 12 12'PARM        :'       
          0046.00      A            W2PRM        250A  B 12 26COLOR(BLU)            
          0047.00      A                                 24  2' 03: 終了 '          
          0048.00      A                                      DSPATR(HI)            
          0049.00      A                                 24 29' ENTER: 実行 !!    ' 
          ・CLP
          0075.00  STEP02:                                                               
          0076.00  SNDRCVF RCDFMT(RUNSQLW2)                                              
          0077.00  /* F03:終了 */                                                    
          0078.00  IF      COND(&IN03 *EQ '1') THEN(GOTO END)                            
          0079.00 /* ================================================================= */
          省略
          0328.00  IF      COND(&W2LIB *EQ '          ') THEN(GOTO STEP02)              
          0329.00  IF      COND(&W2MBR *EQ '          ') THEN(GOTO STEP02)              
          0330.00  IF      COND(&W2PRM *EQ *BLANK)       THEN(GOTO STEP02)              
          0331.00  IF      COND(&LB00  *EQ '0') THEN(DO)                                
          0332.00          SBMJOB CMD(CALL PGM(&W2LIB/&W2MBR) PARM(&W2PRM)) JOBQ(QBATCH)
          0333.00  ENDDO                                                                








      RE:CLからSBMJOB実行時のパラメータ AAA さん [ 9月13日(火) 10時34分 ]

        引用符自体は引用符2個で、記述する。
        これで、正しいはず。

        RE:CLからSBMJOB実行時のパラメータ IKD さん [ 9月13日(火) 16時3分 ]

          問題になるソースであるようには見えません。
          下記の記述が気になるのですが、各入力項目欄に
          '2011' のように引用符を両端に付加して入力されているのでしょうか ?
          もし万が一、そうであればご指摘のようにW-引用符が両端に付加されます。
          意図的に両端に引用符をつけたいという希望であれば
          理由をお聞かせください。

          画面で入力したパラメータがサブミットで実行された際に、
          '2011' '201105' 'LIBXXX' '2011'
          ->
          ''2011''''201105''''LIBXXX''''2011''
          の様になってしまいます。

          RE:CLからSBMJOB実行時のパラメータ どん さん [ 9月13日(火) 19時2分 ]

            お疲れ様です。
            AAA,IKDさん御回答ありがとうございます。
            引用符ですが、
            コマンドライン、CLでLIB、PGM、PARM固定では、以下の様な入力で実行できています。
            SBMJOB CMD(CALL PGM(TESTLIB/TESTPGM) PARM('2011' '201105' 'LIBXXX' '2011')) 
            JOBQ(QBATCH)

            画面で同じように以下を入力してやれば実行できないかと思いました。
            LIB:TESTLIB
            PGM:TESTPGM
            PARM:'2011' '201105' 'LIBXXX' '2011'

            '2011'と入力しているのは、上記のPARM('2011' '201105' 'LIBXXX' '2011')の
            ()内を手打ちしているイメージで処理を作ったつもりだからです。
            結果的に、W-引用符が付く結果になってしまいました。

            宜しくお願い致します。

            RE:CLからSBMJOB実行時のパラメータ AAA さん [ 9月13日(火) 20時12分 ]

              引用符の解釈が、2回あるからです。
              1. 2個の引用符が1個に変換される。
              2. 文字の始まりとして解釈されたのち、除去される。


              RE:CLからSBMJOB実行時のパラメータ どん さん [ 9月14日(水) 9時28分 ]

                AAAさん、ご回答ありがとうございます。
                引用符の解釈、その様に処理されていたとは知りませんでした。

                > 引用符の解釈が、2回あるからです。
                > 1. 2個の引用符が1個に変換される。
                > 2. 文字の始まりとして解釈されたのち、除去される。
                > 
                しかし、どの様な形でパラメータに値を渡してやるのが良いのかが分かりません。
                宜しくお願い致します。

                RE:CLからSBMJOB実行時のパラメータ AAA さん [ 9月15日(木) 10時54分 ]

                  パラメーターは、わたさない。
                  これって、これだけで10年飯が食える内容だから、
                  SBMJOBのマニュアルを精読する。

                RE:CLからSBMJOB実行時のパラメータ どん さん [ 9月16日(金) 15時35分 ]

                  解決しました。
                  ありがとうございました。

                  > AAAさん、ご回答ありがとうございます。
                  > 引用符の解釈、その様に処理されていたとは知りませんでした。
                  > 
                  > > 引用符の解釈が、2回あるからです。
                  > > 1. 2個の引用符が1個に変換される。
                  > > 2. 文字の始まりとして解釈されたのち、除去される。
                  > > 
                  > しかし、どの様な形でパラメータに値を渡してやるのが良いのかが分かりません。
                  > 宜しくお願い致します。

    DB2 UDBのライブラリのジャーナルってなくせますか? かずず さん [ 9月12日(月) 13時45分 ]

      初めまして 初書込になります。 よろしく御願いします。

      DB2 UDBのライブラリのジャーナルってなくせますか?
      (ログを書かなくさせて I/Oのスピードアップをしたい)

      DB2 UDBのライブラリ/スキーマをSQL文で作成し、
      CREATE TABLE でテーブルを作成すると
      自動的にテーブルにジャーナルが引っ付きますが
      テーブルやライブラリレベルでジャーナルを外す事は可能ですか?

      DB2 UDBに作成したテーブルのレコード数が多く 追加/削除がかなり遅い為
      ジャーナルを外したいのです
      (通常のジャーナルがついてない同じ定義の物理ファイルは、即座に終わる)

      よろしく御願いします。

      RE:DB2 UDBのライブラリのジャーナルってなくせますか? IKD さん [ 9月13日(火) 16時27分 ]

        SQL : CREATE TABLE でジャーナルが自動的に付加されるのであれば
        社内的にライブラリー単位またはリレーショナル・データ・ベース単位での
        設定済みであるのではないかと思います。
        理由があるはずですので、まず社内のデータ・ベース管理担当者に
        ご相談される必要があるかと思います。
        通常の CREATE TABLE ではジャーナルが付加されてしまうことはありませんので
        社内的な理由があるのではないかと思います。
        ( CREATE TABLE コマンド中でジャーナルしない、と指定することはできません。)
        ジャーナルをはずしてもよいのであれば

        DLTJRN (ジャーナル削除)コマンドによってジャーナルを除去することができます。
        確かにジャーナルが付加されていると極端に重くなってしまいます。

    RPGの文字列検索 かいとん さん [ 9月30日(金) 16時34分 ]

      RPGの内部を文字列検索し、該当するメンバーをデータベースに保存する、または印刷を
      したいと思います。FNDSTRPDMでオプション=COPYで通常は検索しています。
      ご教示願います。

      RE:RPGの文字列検索 伊集院博 さん [ 9月30日(金) 16時52分 ]

        FNDSTRPDMコマンドでF10で追加のパラメータに「リストの印刷(PRTMBRLIST)」が有ったはず。

        RE:RPGの文字列検索 かいとん さん [ 9月30日(金) 16時58分 ]

          > FNDSTRPDMコマンドでF10で追加のパラメータに「リストの印刷(PRTMBRLIST)」が有ったはず。
          > 

          印刷できました。ありがとうございました。

    DSSソースファイルを探す方法について のぶ さん [ 10月14日(金) 15時46分 ]

      物理ファイルをコンパイルしたDSSソースファイルを探す方法があれば教えて下さい。

      RE:DSSソースファイルを探す方法について IKD さん [ 10月17日(月) 9時56分 ]

        ライブラリー: QTRFIL の物理ファイル : SHOHIN の DDS ソースを探したいのであれば

        DSPOBJD OBJ(QTRFIL/SHOHIN) OBJTYPE(*FILE) + [実行]

        してから 8= 保守属性の表示 を選択すると

        --------------------------------------------------------------------
                              オブジェクト記述の表示−保守リスト   
                                                                   
         オブジェクト . . . . . . . . . . . . :   SHOHIN           
           ライブラリー . . . . . . . . . . . :     QTRFIL         
         ライブラリー ASP 装置  . . . . . . . :   *SYSBAS          
         ライブラリー ASP グループ  . . . . . :   *SYSBAS          
         タイプ . . . . . . . . . . . . . . . :   *FILE            
                                                                   
         ソース・ファイル . . . . . . . . . . :   QDDSSRC          
           ライブラリー . . . . . . . . . . . :     QTRSRC         
         メンバー . . . . . . . . . . . . . . :   SHOHIN           
         属性 . . . . . . . . . . . . . . . . :   PF               

               :
               :
        --------------------------------------------------------------------

         のようにソース・ファイルが表示されます。

    トリガープログラムに関して JunkieXXXL さん [ 10月21日(金) 17時44分 ]

      あるファイルにデータがインサートされた後に、プログラムが動くようにトリガーを設定しておりま
      すが、そのトリガープログラムで、どのプログラム(RPG)がファイルにデータをインサートした為に
      起動したかわかる方法はありますでしょうか。
      要は、トリガープログラムを呼び出した元プログラムを知る方法をご教示いただきたく思います。

      RE:トリガープログラムに関して IKD さん [ 10月25日(火) 11時22分 ]

        方法としては更新元のプログラム自身がデータ・ベースのレコードに
        自分自身の名前を記録するように更新するしかありません。
        トリガー・システムにもデータ・ベース自身の記録にも
        どのプログラムが更新したのかを示す情報は含まれていないからです。

        これはデータ・ベースを更新するのが必ずしもプログラムによってのみではなく
        SQL や DFU によっても更新することができるからではないかと思われます。
        データ・ベースに更新プログラムの名前や更新日時・時刻を記録することは
        珍しくはなく、ごく一般的な手法です。

    変更のあったファイルを参照しているプログラムを探し出すコマンドは? きは さん [ 12月15日(木) 16時23分 ]

      変更のあったファイルを参照しているプログラムを探し出すコマンドはないのでしょうか?

      RE:変更のあったファイルを参照しているプログラムを探し出すコマンドは? UTU さん [ 12月26日(月) 18時4分 ]

        方法として、あるDBファイルを参照しているプログラムを探し出すには、
        DSPOBJDコマンドで QTEMPにプログラム一覧を出力します。
        その後QUERYを使用し条件で抽出すればあるファイルを使用している
        プログラムが探し出せるはずです。
        その時に、ファイルに変更があったというキーワードをQUERYの条件に
        加えれば抽出できるのではと考えております。

        RE:変更のあったファイルを参照しているプログラムを探し出すコマンドは? UTU さん [ 1月5日(木) 19時13分 ]

          すみません。回答内容が間違っていましたので再投稿します。
          あるDBファイルを参照しているプログラムを探し出すには、DSPOBJDコマンドではなく
          DSPPGMREFコマンド(プログラム参照表示)でQTEMPに一覧結果を出力して下さい。
          その後は同様にQUERYを使用すればデータを抽出できるかと思います。
          また、ご参考までに Topics -> Tools(要メンバー登録) -> 4.XREFPGM プログラム相互参照に
          より詳細な記事がありますので是非ご覧下さい。

    QUERYと排他の件 WHY さん [ 12月21日(水) 19時6分 ]

      始めましてこんにちは

      現在、QUERYでデータを書き出す事をルーチン作業で行っています
      時々不思議な事がありまして、本来抽出対象のデータが抽出されないことがあります
      抽出条件は日付以外一切変更しておりませんので条件に不備があるとは考えにくいと思います

      他のプログラムでデータを閲覧/更新している可能性があります。
      そのタイミングでQUERY抽出していると先の様な症状が発生するのでしょうか?
      閲覧/更新中だと排他制御対象になり抽出条件から漏れる認識で間違ってますでしょうか?

      同時に同じDBを異なるQUERYで抽出する場合もデータが欠落した記憶があります
      この辺りを調べる手段もわからなくて困っております

      ご存知の方いらっしゃいましたらアドバイスお願い致します

      RE:QUERYと排他の件 ASD さん [ 12月26日(月) 10時20分 ]

        ファイルに、そのデーターが、存在していない。
        登録セッションから見えても、それは、バッファの内容です。
        完全を期すなら、RPGで抜き出す。

        RE:QUERYと排他の件 WHY さん [ 12月26日(月) 18時51分 ]

          ASDさん
           レス有難う御座います

          不思議なことに時間を置いてからそのQueryを動かすと欠落していたデータが抽出されるんです
          勿論、そのデータを追加する事をしてる訳ではありません

          どうも他のプログラムで欠落したデータを更新している為に排他制御で使用禁止の気がしてなりません
          それが原因なのか調べる術も無く・・・ASのバージョンが古いのでサポート契約打ち切られIBMに質
          問する事も出来ません

          RPGで書き出したら解決するんでしょうか
          一度検討してみます

          RE:QUERYと排他の件 ASD さん [ 12月26日(月) 23時12分 ]

            QUERYは、RPGからみたら、おもちゃみたいな物です。
            内部で何をやってるか、解らないし、コントロールもできない。
            バグも多いと聞く。
            原因を調べても、所詮、対処できない。

            RE:QUERYと排他の件 WHY さん [ 12月28日(水) 9時40分 ]

              > QUERYは、RPGからみたら、おもちゃみたいな物です。
              > 内部で何をやってるか、解らないし、コントロールもできない。
              > バグも多いと聞く。
              > 原因を調べても、所詮、対処できない。
              > 
              了解ありがとうございます
              気楽なとこがQUERYは良かったんですけどバグあったら仕方ないですね

    OPNQRYFについて Rookie さん [ 12月22日(木) 17時12分 ]

      CLP初心者です。

      現在、下記のようなCLPを作成しております。
      @DSPOBJDでファイル情報一覧を書き出す。
      AOPENQRYFを使用し、上記@で作成されたファイルの「オブジェクト名」項目をキーとし、をRPGプ
      ログラムから渡されたパラメータで検索する。
      B該当のオブジェクト(物理ファイル)を別のライブラリにコピーする。

      そこで、OPENQRYFのQRYSLTでエラーになってしまいます。
      「エラー内容はオペランドがありません」です。
      おそらく、「オブジェクト名」とパラメータを比較しておりますが、パラメータがオペランドとして
      認識していないような気がします。

      ソースを以下に記載しますので、ご教授頂きたく、よろしくお願い致します。

      /*********************************************************************/
                   PGM        PARM(&PARM01)

                   DCL        VAR(&PARM01) TYPE(*CHAR) LEN(256) /* パラメータ */
                   DCL        VAR(&VAND) TYPE(*CHAR) LEN(8) 
                   DCLF       FILE(CDBFVAN/WDBFVAN) RCDFMT(QLIDOBJD)

                   CHGVAR     VAR(&VAND) VALUE(%SST(&PARM01 101 8))

                   /*ライブラリー・リスト変更*/
                   CHGLIBL    LIBL(QTEMP CDBFVAN CSAVVAN COBJLIB EVXDBLIB +
                                QEVX QGPL QAPS)

                   DLTF       FILE(QTEMP/WDBFVAN)

                   MONMSG     MSGID(CPF0000)

                   DSPOBJD    OBJ(CDBFLIB/*ALL) OBJTYPE(*FILE) +
                                OUTPUT(*OUTFILE) OUTFILE(QTEMP/WDBFVAN)

                   OVRDBF     FILE(WDBFVAN) TOFILE(QTEMP/WDBFVAN) SHARE(*YES)

                   OPNQRYF    FILE((QTEMP/WDBFVAN *FIRST *ONLY)) +
                                OPTION(*INP) QRYSLT('%SST(ODOBNM 3 8) *LE +
                                &VAND') KEYFLD((ODOBNM *ASCEND *N))

         @READ:      RCVF       RCDFMT(QLIDOBJD)
                     MONMSG     MSGID(CPF0864) EXEC(GOTO CMDLBL(@EOF))

                   CPYF       FROMFILE(CDBFVAN/&ODOBNM) +
                                TOFILE(CSAVVAN/&ODOBNM) CRTFILE(*YES)

                   GOTO       CMDLBL(@READ)

       @EOF:       CLOF       OPNID(WDBFVAN)
                     DLTOVR     FILE(*ALL)

                   ENDPGM

      RE:OPNQRYFについて UTU さん [ 12月26日(月) 18時12分 ]

        OPNQRYFコマンドの QRYSLTに指定するQUERY選択式で
        「オペランドがありません」とエラーが発生するということであれば
        QUERY選択式の内容でエラーが発生しているのは間違いないでしょう。
        例えば%SSTの変数と比較している変数の属性は数値項目なのか、文字項目なのか
        わかりませんが、&VANDをダブルクォーテーションで囲む等してみてはどうでしょうか。

        RE:OPNQRYFについて Rookie さん [ 12月27日(火) 11時18分 ]

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

          ご指摘頂いたとおり、""で囲いましたが結果は同じでした。
          また、下記サイトに文字項目の変数は「"'|<」で囲む例がありましたので、実施したところエラーはな
          なくなりましたが、本当に比較できているかどうか不明です。
          この囲い方は正式なものなのでしょうか。ご存知でしたらご教授下さい。

          参考URL:http://iseries.fc2web.com/logic/cycle3.html

    押しボタン(PSHBTNFLD)を使ってテンキー入力 str さん [ 1月21日(土) 16時13分 ]


      5250画面で、
      PSHBTNFLDキーワードを使って、
      画面にテンキーを表示させ、
      押しボタンを押して、
      任意のケタ数をかえす

      このようなことができるでしょうか?

      よろしければご教示お願いします。




      RE:押しボタン(PSHBTNFLD)を使ってテンキー入力 IKD さん [ 1月23日(月) 10時27分 ]

        可能です。

        下記は OK ボタンを表示する DSPF です。
        ( http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QDSPSRC.FILE/BUTTONFM.MBR )
        --------------------------------------------------------------------------
        0001.00      A*%%TS  SD  20070817  120013  QTR         REL-V5R4M0  5722-WDS     
        0002.00      A*            11:59:33    QSECOFR     REL-R06M00  5714-UT1         
        0003.00      A*%%EC                                                             
        0004.00      A                                      DSPSIZ(24 80 *DS3)          
        0005.00      A                                      MSGLOC(24)                  
        0006.00      A                                      PRINT                       
        0007.00      A          R DSPDTA01                                              
        0008.00      A*%%TS  SD  20070817  120013  QTR         REL-V5R4M0  5722-WDS     
        0009.00      A                                      TEXT(' 明細画面 01')        
        0010.00      A                                      CF03(03 ' 終了 ')           
        0011.00      A                                      SETOF(99)                   
        0012.00      A                                      BLINK                       
        0013.00      A                                  1 27' 押しボタン '              
        0014.00      A                                      DSPATR(HI)                  
        SOSI         A                                  3  2' 下記は押しボタンのサンプ  
        SOSI         A                                  4  3'OK ボタンを押したときは押  
        0017.00      A                                       回数をカウントします。 '   
        0018.00      A                                  8  4' 押した回数 . . . . . . .  
        0019.00      A            KAISU          3Y 0B  8 37                            
        0020.00      A            PSHFLD         2Y 0B  8 45PSHBTNFLD(*RSTCSR (*NUMCOL  1))
        0021.00      A                                      PSHBTNCHC(1 ' OK ' ENTER) 
        0022.00      A            PSHF10         2Y 0B 10 45PSHBTNFLD(*RSTCSR (*NUMCOL  1)) 
        0023.00      A                                      PSHBTNCHC(1 ' F1O ' CF10 CF10)
        0024.00      A            DSPMSG        40A  O 20  4DSPATR(HI)                  
        0025.00      A                                 23  2'F3= 終了 '                 
        --------------------------------------------------------------------------

        次は実行するための CLP です。
        ( http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QCLSRC.FILE/BUTTONCL.MBR )
        --------------------------------------------------------------------------
        0001.00              PGM                                                        
        0002.00 /*---------------------------------------------------------*/           
        0003.00 /*    BUTTON    :   押しボタン                             */           
        0004.00 /*---------------------------------------------------------*/           
        0005.00              DCL        VAR(&MSG)      TYPE(*CHAR) LEN(80)              
        0006.00              DCLF       FILE(QTROBJ/BUTTONFM)                           
        0007.00                                                                         
        0008.00              CHGVAR     VAR(&KAISU) VALUE(0)                            
        0009.00  DSPLY:      SNDRCVF    RCDFMT(DSPDTA01)                                
        0010.00              IF         COND(&IN03 *EQ '1') THEN(RETURN)                
        0011.00              IF         COND(&PSHF10 *EQ 1) THEN(DO)                    
        0012.00              CHGVAR     VAR(&DSPMSG) VALUE('F10 ボタンが押されました ') 
        0013.00              ENDDO                                                      
        0014.00              ELSE       CMD(DO)                                         
        0015.00              CHGVAR     VAR(&DSPMSG) VALUE('OK ボタンが押されました ')  
        0016.00              ENDDO                                                      
        0017.00              CHGVAR     VAR(&KAISU) VALUE(&KAISU + 1)                   
        0018.00              GOTO       DSPLY                                           
        0019.00              RETURN                                                     
        0020.00                                                                         
        0021.00  ERROR:      RCVMSG     RMV(*NO) MSG(&MSG)       
        0022.00  SNDMSG:     SNDPGMMSG  MSG(&MSG) MSGTYPE(*DIAG) 
        0023.00              ENDPGM                              
        --------------------------------------------------------------------------

        実行画面イメージは次のとおりです。
        --------------------------------------------------------------------------
                                  押しボタン                      
                                                                  
         下記は押しボタンのサンプルです                           
         OK ボタンを押したときは押した回数をカウントします。      
                                                                  
                                                                  
                                                                  
           押した回数 . . . . . . . . . .  000       OK         
                                                                  
                                                     F1O       
                                                                  
                                                                  
        --------------------------------------------------------------------------

        [解説]
        この例では ボタンに「OK」と表示していますが 0 - 9 を表示する
        テン・キーを作って各数字毎に CLP で制御すればご希望の機能を実現することが
        できます。
        ただし テン・キーの見た目はかなり大きなものになってしまいますので
        実用上の問題は残ります。

      RE:押しボタン(PSHBTNFLD)を使ってテンキー入力 IKD さん [ 1月23日(月) 11時36分 ]
    SQL文でデータを検索した時データが1画面に収まらない時の対応方法 伊集院博 さん [ 1月23日(月) 16時44分 ]

      Google検索のように検索文字列を入れて検索ボタンを押すと
      検索結果がブラウザに10件表示されますね。
      表示できない残りのデータは下段に「1 2 3...9 10」のように頁数が表示され、
      クリックするとダイレクトにページの頭だしができますね。
      サーバ側ではおそらくSQL文でデータを抽出していると思いますが...

      これをRPG-CGI+SQL文で実現するためにはどうしたら良いかアドバイス下さい。
      CGIを表示した後ジョブは終了しますのでSQLで検索されたデータは残らないですね。

      しかしGoogle検索では下段の数字のページボタンを押すとちゃんと検索の続きが表示されますよね。
      この仕組が知りたいです。RPG-CGIで実現可能でしょうか?

      RE::検索エンジンの処理構造とは IKD さん [ 1月23日(月) 18時3分 ]

        RPG-CGI でも可能ですが、答を知ればガッカリされると思います。
        実は Google や Yahoo! も その都度、毎回、検索を行っています。
        データの続きはもちろん把握していません。
        ただし Google であれば start=10 (検索結果の 10件目から表示する)
        や Yahoo! であれば b=11 (検索結果の 11件目から表示する) という
        キーワードを 最下部の .... や「次へ」に埋め込んでいるだけという
        単純なものです。
        これは例えば Google の検索結果の「次へ」などのプロパティを
        表示してみればよくわかります。
        また Google や Yahoo! の検索エンジンは、その都度、SQL のあいまい検索のように
        動的に検索しているわけではなく検索ロボットによって回覧しておいて
        検索結果だけの莫大なデータ・ベースを作成しておいて
        これらの検索結果を表示する、というものです。
        System i の開発者が想像するような高度な検索は行っていません。
        従って検索結果が正しいかというと正しいとは言い切れなくなります。

        EnterpriseServer の RPG# ではストートレスな CGI でありながら
        SFL レコードの最後のレコードを読んでから SETGT を行って
        次のレコードを読むような処理構造になっています。
        しかし動的なSQL によるあいまい検索では、SETGT は使うことはできません。
        従って Google や Yahoo! のように毎回、SQL 検索を行ってから
        最初の何十レコードは読み飛ばしてから表示をする、という何とも
        スマートさに欠ける方法しかなさそうです。

        RE::検索エンジンの処理構造とは 伊集院博 さん [ 1月24日(火) 16時41分 ]

          >GoogleやYahoo!のように毎回、SQL検索を行ってから
          >最初の何十レコードは読み飛ばしてから表示をする

          本当にそうなんですか?
          確かにGoogleやYahoo!のパラメータに「start=90」のようにレコード開始番号を持っていますね。
          しかしページをめくる度に毎回最初から検索している割には検索結果が早い気がします。
          AS/400のSQLもこのくらいのレスポンスが出せれば使ってみようと思うのですが。

          検索条件が複雑でない限りSETLLとSETGTを使用したいと思います。

          RE::検索エンジンの処理構造とは IKD さん [ 1月24日(火) 18時44分 ]

            検索エンジンの内部処の方法は( API 以外は) 非公開ですので
            こちらで断定することはできませんがWebデザイナーとの
            協議した結果でも、でもほぼ間違いないと思います。
            Google や Yahoo! ではあまりにも検索が速すぎるのは
            検索結果をあらかじめデータ・ベース化して保管しているとしか
            思えません。
            従って Google や Yahoo! の検索結果は彼らの意にそぐわない
            サイトは検索結果の対象とはならず、検索結果には
            表示されません。

            また、かつては Yahoo! は、検索対象として希望する旨を
            Yahoo! に申請して受け付けられると初めて、検索結果に
            載せてもらえる、というアナログな時代があり検索対象の申し込みを
            受け付ける受付者が電話対応していた時代もあったくらいです。
            ( 実は弊社もメールで Yahoo! に申請したことがあります。)

            またこれは余談ですが Google をホーム・ページに設定した
            ブラウザは動作が非常に不安定になってしまう障害が最近
            あります。
            Yahoo! や MSN などにホーム・ページを変更すると
            この障害は発生しないことから、犯人は Google ではないかと
            気づいた次第です。障害があればぜひお試しください。

    FTPでのデータ転送が止まる tw さん [ 2月28日(火) 10時52分 ]

      AS/400からデータ(漢字項目も含んでいます)をサーバーへ送る処理中に、put命令の所で
      実行中のままになってしまう時があります。
      いつもは数秒で終わる処理なのですが、10分以上そのままということもあります。
      原因が、AS/400にあるのか、サーバーあるのか、または通信環境なのかもわからない状態です。
      このような状態になったことのある方、解決策をご存知でしたら教えていただきたいと思います。
      よろしくお願いいたします。

      RE:FTPでのデータ転送が止まる IKD さん [ 2月29日(水) 17時1分 ]

        Ftp 転送がフリーズした経験はありませんが

        1. 実行スタックを調べる

            他の5250エミュレータから Ftpを実行中のジョブのスタックを調べてみてください。
            および WRKACTJOB でそのジョブのステータスを調べる必要もあります。

        2. SNDFTP コマンドを使う

          次のSNDFTP コマンドによるFtp転送であれば実行中のログを対話式で
          表示させることができますので、どの時点で止まっているかが
           わかります。

           SNDFTP コマンドは、
          
        このサイトの Tools (http://www.as400-net.com/cgi-bin/contents/tips.cgi?con=tools)
        には
        8. SNDFTPF iSeries400 からPCサーバーへのFtpファイル転送 があります。
        または Spoolライターの製品か、試供版であれば SNDFTP コマンドが
        導入されていますので使用することができます。

        RE:FTPでのデータ転送が止まる tw さん [ 3月1日(木) 9時31分 ]

          > Ftp 転送がフリーズした経験はありませんが
          > 
          > 1. 実行スタックを調べる
          > 
          >     他の5250エミュレータから Ftpを実行中のジョブのスタックを調べてみてください。
          >     および WRKACTJOB でそのジョブのステータスを調べる必要もあります。
          > 
          > 2. SNDFTP コマンドを使う
          > 
          >   次のSNDFTP コマンドによるFtp転送であれば実行中のログを対話式で
          >   表示させることができますので、どの時点で止まっているかが
          >    わかります。
          > 
          >    SNDFTP コマンドは、
          >   
          > このサイトの Tools (http://www.as400-net.com/cgi-bin/contents/tips.cgi?con=tools)
          > には
          > 8. SNDFTPF iSeries400 からPCサーバーへのFtpファイル転送 があります。
          > または Spoolライターの製品か、試供版であれば SNDFTP コマンドが
          > 導入されていますので使用することができます。

          ご教授していただき、ありがとうございます。
          順番に試していきたいと思います。

    FTPのrcmd tsunsoft さん [ 4月10日(火) 13時18分 ]

       FTPのrcmdでユーザプログラムを実行する際、CPExxxxのような
      メッセージコードを返却する方法を教えて下さい。

       下記の003行目のようなメッセージです。

      001: ftp> quote rcmd CALL MYLIB/MYPGM PARM('TEST.CSV', 1234)
      002: 550-ERROR OCCURD ON COMMAND CALL MYLIB/MYPGM PARM('TEST.CSV', 1234).
      003: 550 CAUSE CODE IS CPE3025; MESSAGE TEXT NOT AVAILABLE.
      004: ftp> bye

       以前、AS400に詳しい方に設定して頂いたのですが、その方と連絡が
      取れず、やり方が分からないでいます。
       確か、以下の方法だったと思いますがAS400に詳しくないので、具体
      的な方法が分かりません。
       ・ユーザプログラムを異常復帰(ABEND)させる
       ・スプールのメッセージを取得して呼び出し元に返却する

       よろしくお願いします。

      RE:FTPのrcmd IKD さん [ 4月10日(火) 15時11分 ]

        「返却する」とは、どのようなことを意味しておられるのでしょうか ?

        Ftp の RCMD で例えば、存在しないプログラムを呼び出してみると

        quote rcmd CALL MYLIB/MY001
        550-ERROR OCCURRED ON COMMAND CALL MYLIB/MY001
        550-CAUSE CODE IS CPF0001; MESSAGE TEXT NOT AVAILABLE.

        のように出力されますが ( CPE エラーではなく CPF エラーです。)
        「MESSAGE TEXT NOT AVAILABLE」に対してこのメッセージを取得したいと
        いう意味なのでしょうか ?
        それとも他の意味でしょうか ?

        RE:FTPのrcmd tsunsoft さん [ 4月10日(火) 15時55分 ]

          > 「返却する」とは、どのようなことを意味しておられるのでしょうか ?
          > 
          > Ftp の RCMD で例えば、存在しないプログラムを呼び出してみると
          > 

           コメントありがとうございます。

           おっしゃる通り、存在しないプログラムを呼び出すとエラーになるのですが、
          存在するプログラムで「正常復帰」と「エラー復帰」の区別が付くようにしたいのと、
          また、「エラー復帰の場合のメッセージコード」をFTPクライアントに返却したい
          のです。

           よろしくお願いします。

        RE:FTPのrcmd IKD さん [ 4月10日(火) 17時19分 ]

          (1) 「返却する」とは ?
               「返却するとは」前出のFtpのコマンド・プロンプト画面で

                550-CAUSE CODE IS CPF0001; MESSAGE TEXT NOT AVAILABLE

                のように画面上に、表示したいということなのでしょうか ?

          (2) 現状は ?

               現状では表示されていないのでしょうか ?

               CALL で呼び出すプログラムが終了するときにエラーで終わったのであれば
               *ESCAPE メッセージを戻すようにすれば上記の(1)のように
             メッセージID を表示することができます。

          RE:FTPのrcmd tsunsoft さん [ 4月10日(火) 19時16分 ]

             何度もすいません。

            > (1) 「返却する」とは ?
            >      「返却するとは」前出のFtpのコマンド・プロンプト画面で
            > 
            >       550-CAUSE CODE IS CPF0001; MESSAGE TEXT NOT AVAILABLE
            > 
            >       のように画面上に、表示したいということなのでしょうか ?

             はい。その通りです。

            > (2) 現状は ?
            > 
            >      現状では表示されていないのでしょうか ?
            > 
            >      CALL で呼び出すプログラムが終了するときにエラーで終わったのであれば
            >      *ESCAPE メッセージを戻すようにすれば上記の(1)のように
            >    メッセージID を表示することができます。

             現状は、ユーザコマンドが1(正常)で復帰しても、2(異常)で復帰しても
            「250 COMMAND .... SUCCESSFUL.」が表示されてしまいます。

             異常復帰させる方法が間違っているのでしょうか?

             よろしくお願いします。

            RE:FTPのrcmd IKD さん [ 4月10日(火) 20時11分 ]

              1(正常)と2(異常)とは何を指していますか ?

              ユーザー・コマンドを実行しているプログラム(恐らくはCLP) が
              メッセージ・タイプ *ESCAPE のメッセージを戻すようにすれば
              先にご説明したように エラー・メッセージID が戻されます。
              そのユーザー・コマンドを実行している CLP を調べて
              エラーのときは *ESCAPE メッセージを戻すように修正してください。

              RE:FTPのrcmd tsunsoft さん [ 4月11日(水) 15時7分 ]

                 ありがとうございます。

                 以下のようにメッセージを発行するということですね。

                 SNDPGMMSG ...... MSGTYPE(*ESCAPE)

                 実機で確認してみます。

                RE:FTPのrcmd IKD さん [ 4月11日(水) 15時16分 ]

                  そのとおりです。
                  ただし *ESCAPE で SNDPGMMSG するには MSGID も必要となります。

                  RE:FTPのrcmd tsunsoft さん [ 4月14日(土) 0時18分 ]

                    > そのとおりです。
                    > ただし *ESCAPE で SNDPGMMSG するには MSGID も必要となります。

                     SNDPGMMSGで*ESCAPEを指定することで、正常と異常の区別を付けることが
                    できるようになりました。

                     ただ、AS400で日本語メッセージを出力した場合、FTPのコマンドプロンプ
                    トで、文字化けしてしまいます。

                     以下のコマンドを実行しても文字化けは解消されません。
                    ftp> quote type c 943

                     どうすれば文字化けしないのでしょう?

                     よろしくお願いします。

    FTPのrcmdで文字化け tsunsoft さん [ 4月17日(火) 8時57分 ]

       FTPのrcmdでコマンドを実行する際、正常完了すると
      「250 COMMAND ... SUCCESSFUL.」のメッセージが表示されますが、
      異常完了すると、文字化けしてしまいます。

       下記の009行目のようなメッセージです。

      001: ftp> quote type c 943
      002: REPRESENTATION TYPE IS CCSID 943.
      003:
      004: ftp> quote rcmd CLRPFM AAA/BBB
      005: 250 COMMAND CLRPFM AAA/BBB SUCCESSFUL.
      006: 
      007: ftp> quote rcmd CLRPFM XXX/YYY
      008: 550-ERROR OCCURRED ON COMMAND CLRPFM XXX/YYY.
      009: 550 ・■■■■*XXX■■■■■*YYY■■■■■■■.
      010: ftp> QUIT

       日本語メッセージが文字化けしないよう「quote type c 943」
      を実行しましたが、効果がありません。
       どうすれば、正しく表示できるでしょうか?

       よろしくお願いします。

      RE:FTPのrcmdで文字化け IKD さん [ 4月18日(水) 12時44分 ]

        ご指摘になった同じ操作を行っても弊社では 9行目の日本語メッセージは
        表示されませんでした。

        (1) i5/OS のバージョンをお知らせください。
        (2) CHGFTPA + F4キーで表示されるコード化文字セット(CCSID)を
            お知らせください。

    CL上で別サーバーへPING ひでひで さん [ 4月23日(月) 19時35分 ]

      CL上から別サーバーへPINGを投げ、
      応答があれば次の処理を実行し、
      応答がなければ次の処理を飛ばす
      ようなことは可能でしょうか?

      RE:CL上で別サーバーへPING ひでひで さん [ 4月23日(月) 20時57分 ]

        > CL上から別サーバーへPINGを投げ、
        > 応答があれば次の処理を実行し、
        > 応答がなければ次の処理を飛ばす
        > ようなことは可能でしょうか?
        > 
        自己解決しました
        VFYTCPCNN  RMTSYS('XXX.XXX.XX.XX') MSGMODE(*VERBOSE +
                   *ESCAPE)                               
        MONMSG     MSGID(CPF0000) EXEC(GOTO CMDLBL(LABEL2))          

    FILEのBACKUPについて くらくら さん [ 4月24日(火) 20時52分 ]

      始めまして。
      コマンドも殆ど知らない者で申し訳有りませんが、ご教示をお願いします。
      旧式のマシンで今迄Data Cartridge Tape(QIC-120)にfileのbackupを採取していたのですが
      エラーとなり、今回を境にクライアントPCにbackupを採取するように変更を考えています。
      方法はFTP機能にて可能かと聞いたのですが方法が判りませんので初歩からになりますが
      アドバイスを宜しくお願いします。
      今迄のbackupは下記のCLで実行していました。
      PGM                                     
      SBMJOB     CMD(CALL PGM(XXXLIB/BACKUP)) 
      ENDPGM                                  

      XXXLIB/BACKUPの内容は以下になります。
      PGM                                                 
                 INZTAP     DEV(TAP01) NEWVOL(IBMIRD) CHECK(*NO) +   
                            DENSITY(*QIC120)                       
                 MONMSG     MSGID(CPF0000)                           
                 SAVLIB     LIB(QS36F YYYDBLIB) DEV(TAP01)           
      ENDPGM  

      このQS36FとYYYDBLIBをPCにbackup及び場合によってはリストアが必要かと
      思いますのでMENUからの選択で処理がされるようにするまでの方法、
      或いは手順を記載したsiteが有ればご教示を宜しくお願いします。

      方法を聞いてどないするねん ASD さん [ 4月25日(水) 10時26分 ]

        SAVFにして、PCに転送する。
        PCは、信頼性が恐ろしく悪い。
        ハードもソフトも慎重に吟味しないと、失敗する。
        最適環境を構築するのに、3年かかった。
              

      RE:ライブラリーのBACKUP の方法 IKD さん [ 4月25日(水) 20時11分 ]

        このサイトの[実行環境] - [55. ライブラリーを *SAVF に保管してメール送信するには]
        にライブラリーを *SAVF に保管してダウンロードする方法が
        詳しく解説してありますのでご参照ください。

    他のセッションからQTEMP上のファイルを見たい kazu さん [ 4月27日(金) 17時43分 ]

      はじめまして。皆さんのお知恵をお借りしたいと思います。

      端末Aから遠隔地端末BのDBファイルQTEMP/MYFILE を参照したのですが
      何かよい方法ありますでしょうか?

      ちなみに遠隔地の担当者はパソコン初心者です。
      遠隔地端末B上でCPYF FROMFILE(QTEMP/MYFILE) TO(MYLIB/MYFILE)をやら
      せたくなのです。

      よいアドバイスお待ちしております。

      RE:他のセッションからQTEMP上のファイルを見たい IKD さん [ 4月30日(月) 16時20分 ]

        他のユーザー(ジョブ)の QTEMP の内容を取得するのは
        相当、面倒です。
        かつて WRKNETJOB というコマンドを作成して
        「6= QTEMP 表示」というオプションを追加したことがあります。
        これは WRKACTJOB のような活動中のジョブの一覧画面を表示して
        選択したジョブの QTEMP の情報を取得するというものです。

        QTEMP の取得の対象となるユーザーのジョブは
        マルチスレッドまたは割り込み可能ジョブとして
        実行しておかなければなりません。
        いずれも場合でも割り込みまたは要求を検知して
        自分の QTEMP の情報を要求元に返す機能を持っています。
        つまり、

          ・いつでも割り込み要求を受け付けることができる。
          ・プロセス間通信によって情報を要求元に送信できる。

        の2つの機能が必須となります。
        例えばマルチスレッドであれば他のユーザーからの要求を待機して
        おくことができますし、割り込み要求で他のユーザーからのシグナルを
        受信できるよう定義しておくこともできます。

        WRKNETJOB は当時はマルチスレッドで作成したと
        記憶していますが、今の技術であれば割り込みとプロセス間通信を
        組み合わせて作成すると思います。
        しかし、QINTER 配下の通常のジョブはマルチスレッド=*NO であり
        割り込み要求も指定されていませんのでこれらの条件を可能にするには
        ジョブ環境の仕組みについて十分精通しておかれることがご必要です。


        - ご参考までに他のジョブの QTEMP の中身を参照するための API はありませんが
          ご質問を受けて任意のジョブのQTEMP情報を取得するコマンドを作ってみようかと
          思います。


      QTEMPは見えない ASD さん [ 5月1日(火) 18時7分 ]

        CPYFをメニューのオプションに組み込む。

    ccsid きもも さん [ 5月15日(火) 14時34分 ]

      as400 ccsidを 65535 -> 5035(1399)に変更し PFなども再作成しました。
      その後、ODBC接続を設定して ACCESSでリンクしましたが
      テーブルが開けません。

      ODBC接続の指定がまずいのでしょうか?
      【変換】ではどのようにしてすべきですか?
      教えてください。

      RE:ccsid IKD さん [ 5月15日(火) 19時15分 ]

        「テーブルが開けません」とありますが具体的にはどのような症状でしょうか ?
        エラー・メッセージやフリーズする等の具体的な症状をお知らせください。
        CCSID が適切でないという理由で文字化けすることあるでしょうが
        ファイルをオープンできない、ということの原因にはなりません。

        RE:ccsid きもも さん [ 5月15日(火) 19時41分 ]

          具体的には 

           ・リンクはOK
           ・インポートもOK
           ・リンクテーブルを開いて データを表示すると
             ”システムで予約されているエラー(-7711)です。
              このエラーに対するメッセージはありません"
              ”テーブルをデータシートビューで開くことができません”

              と 表示されます。

          ”> 「テーブルが開けません」とありますが具体的にはどのような症状でしょうか ?
          > エラー・メッセージやフリーズする等の具体的な症状をお知らせください。
          > CCSID が適切でないという理由で文字化けすることあるでしょうが
          > ファイルをオープンできない、ということの原因にはなりません。
          > 

    ccsid きもも さん [ 5月15日(火) 15時53分 ]

      先に 下記質問を出したものです。
      ASにて ccsid変更後 PFを再作成しましたが PFのCCSID が 1399にならず
      5123 になります。

      他のPFは CRTPFをすると 1399になります。
      何が引っかかっているのでしょうか?

      > as400 ccsidを 65535 -> 5035(1399)に変更し PFなども再作成しました。
      > その後、ODBC接続を設定して ACCESSでリンクしましたが
      > テーブルが開けません。
      > 
      > ODBC接続の指定がまずいのでしょうか?
      > 【変換】ではどのようにしてすべきですか?
      > 教えてください。

      RE:ccsid IKD さん [ 5月15日(火) 19時5分 ]

        CRTPF コマンドのCCSIDパラメータの省略時の値は *JOB, つまり
        ジョブの属性となっています。
        コマンド入力画面において DSPJOB + [実行]してから
        「2.ジョブ定義属性表示」を選択して PageDownキーを 3回押してください。
        コード化文字セット= 65535 と省略時のコード化文字セットが 1399 に
        なっているのではないかと思います。
        これは御社の System i のシステム値 QCCSID を 1399 にセットされている
        ことに起因しています。

        CCSIDを変更したいときは CRTPF + [F4キー]を押して、さらに
        「F10=追加のパラメータ」を押して PageDownキーを押したところに
        コード化文字セットを指定するパラメータがありますので
        ご希望のCCSIDに変更することができます。
        ただし先のこ質問での ODBC の接続エラーの原因が CCSID であると
        特定されたわけではないので、これで解決できるわけではありません。

        ■ ODBC の問題

         ODBC でどのようなエラー・メッセージが発生しているのでしょうか ?
         エラーが発生する原因はただひとつではありません。
         エラー原因を想像するのではなくエラー・メッセージ等に基づいて
         論理的にエラー原因を突き止めていく必要があります。

        RE:ccsid きもも さん [ 5月15日(火) 20時30分 ]

          こちらの状況をお知らせします。
           @まず WRKSYSVAL にて ccsid を変更しています
           ADSPJOBの結果は どちらも 1399です
           BCRTPF で CCSIDを指定しようとすると 
             『CCSID パラメーターには RCDLEN 値が必要である 』
            と表示されます。
           CCHGPF で CCSID を指定する箇所がありますが 変更できません
             →入力してもエラーが表示されず、値も変わらないという状況です。
           


           

          RE:ccsid IKD さん [ 5月16日(水) 10時21分 ]

            このファイルのCCSID の設定のために
            WRKSYSVAL で QCCSID を変更してはいけません。
            QCCSID を変更すると他のジョブもすべて
            この QCCSID に変更されてしまい文字化け等の
            予測できない結果を生じてしまいます。
            他のユーザーが入力した半角カナはすべて
            文字化けになってしまうでしょう。

            このファイルのCCSID を変更したいのであれば
            CHGJOB によってご自分のジョブだけの
            CCSID を変更してから CRTPF してください。

            QCCSID の導入時の値は 65535 です。
            システム値 QCNTRYID = JP であれば
            各ジョブの省略時のCCSID は 5026 にセットされます。

            QCCID と直ちに元の値に戻してください。

    PRIMARY_KEYについて KUMA さん [ 5月29日(火) 13時36分 ]

      こんにちわ。教えてください。
      VB.NETよりDB400へアクセスして更新するアプリを初めて開発しています。
      既存のDBはDDSより作成されておりPFには一切KEYを付けず論理FのみにKEY設定されています。

      DATASETで更新する為にはPRIMARY_KEYが必要ですが、既存PFにはKEYがありません。
      現在はSQLのUPDATEで更新をしていますが大変面倒です。

      後からPRIMARY_KEYは追加することは出来るのでしょうか?
      ALTER TABLEでは追加できませんでした。
      ところがSQLから作成したTABLEではPRIMARY_KEYの追加が出来ました。
      調べてみたところDDSとDDLで作成したTABLEは似てはいるが別物?のようです。

      結局のところPFにKEYを追加して再作成するかDDLで再作成するかしか手がなさそうなのですが
      TABLE作成時に指定するしか手がないのでしょうか?
      良い方法があればご教授願えれば大変助かります。

      RE:PRIMARY_KEYについて IKD さん [ 5月29日(火) 15時33分 ]

        ご指摘の問題はVBによる開発だけではなくデータ・ベースを
        キーなしで作成した当初の設計に問題があります。

        確かにキーなし物理ファイルに複数のアクセス・パスの論理ファイルを
        ぶら下げることはできますので昔、一時期に物理ファイルをキーなしで
        作成するように指導した○○がいたようで、根拠のない構成のために
        後で多くの開発者やユーザーが不便を強いられることになります。
        キーなし物理ファイルを作成する合理的な利点はありません。

        それはともかく物理ファイルにぶら下がっている論理ファイルのどれかが
        物理ファイルのレコードを「一意的」に識別できるキーを持つ論理ファイルが
        存在しているはずです。

        これを調べるのは面倒ですが

        (1) DSPDBR コマンドによって従属論理ファイルを調べる

            [例] DSPDBR MYLIB/MYFILE
            [例] DSPDBR MYLIB/MYFILE OUTPUT(*OUTFILE) OUTFILE(QTEMP/DSPDBR)

        (2) 上記の従属論理ファイルのひとつひとつに対してアクセス・パスを調べる

            [例] DSPFD MYLIB/MYLF TYPE(*ACCPTH)

             ----> この中で「固有キー値が必要」(UNIQUE     YES) と指定されている
              論理ファイルが見つかれば、それが求めるPRIMARY_KEYを持つ
              論理ファイルです。
              この論理ファイルのアクセス・パスを PRIMARY_KEY として
                   VB を開発してください。

           
         

        RE:PRIMARY_KEYについて KUMA さん [ 5月29日(火) 16時1分 ]

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

          ご指摘の通り物理FにKEYがないのは古くからの名残のようです。
          基本設計が20年以上前の基幹システムなので、クラッシュ&ビルドが早急に必要で
          今回のVB.NETでの開発もそれの足がかりなのです。

          UNIQUEキーは殆どの場合論理ファイルの1番目(FILEL01)に設定されていることが分かっていま
          す。
          しかしVBでFILEL01を指定しても実行段階で「物理ファイルでない」というエラーになってしまいま
          す。
          よって物理Fにキー設定が必要なのだと思っています。

          Iシリーズナビゲータで索引の追加は可能で論理Fとして作成されます。
          しかしPRIMARY_KEYはALTER TABLEで通常追加できると思いますが、実行してもエラーになりますし
          マニュアルを読んでもADDはありません。なぜかDROPはあります。
          http://publib.boulder.ibm.com/html/as400/v4r5/ic2962/info/db2/rbafzmstatabl.htm

          キーの設定に関係なくレコードbヘ自動的に振られていますが、これをPRIMARY_KEYには出来ないの
          でしょうか?

          物理Fの再作成しか道はないように思えてきました。

          RE:PRIMARY_KEYについて IKD さん [ 5月29日(火) 18時29分 ]

            「VBでFILEL01を指定しても実行段階で「物理ファイルでない」というエラー」と
            ありますが、そのエラー・メッセージID 等の詳細はわかりますでしょうか ?
            確かに SQL や ODBC の場合、物理ファイルと論理ファイルは明確に区別されますが
            i5/OS では基本的に論理ファイルを更新することが可能ですので
            SQL での制約があったとしても 基本的には論理ファイルからの更新もできるはずです。

            レコードbヘ DB2/400 では RRN (=レコード番号) というもので
            レコードの中の項目とは定義されていませんので出力用の項目とすることは
            できますが、キーとすることはできません。

            物理ファイルの再作成はリスクをかなり伴います。
            複数メンバーの場合や物理ファイルのサイズが拡張されていることも
            あり、また従属論理ファイルがどのような構成されているかを
            慎重に調べる必要があります。
            何より関連するプログラムへの影響も考慮しなければなりません。
            レイアウトやデータに変更がなくても、ファイルが LVLCHK=*YES で
            再作成されれば、たちまちプログラムからのアクセスは OS によって
            拒否されてしまいます。

          DDS ASD さん [ 6月1日(金) 10時56分 ]

            QDDSSRCをキー付きに変える。
            CHGPFをする。
            うまくいけば、データはそのまま、論理ファイルもそののまま。
            レベル識別も引き継ぐ。

    内部でフィールドを命名し直し かずかず さん [ 6月27日(水) 19時28分 ]

      2つのファイルが同じフィールド名を持つ場合、内部でフィールドを命名し直し
      ができたかと思います。
      どうやりましたっけ?

      よろしくお願いします。

      RE:内部でフィールドを命名し直し IKD さん [ 6月28日(木) 10時39分 ]

        下記に説明を示します。
        Source = http://218.44.135.18/QSYS.LIB/PGMRLIB.LIB/QRPGLESRC.FILE/FLDCHG.MBR

        0001.00 I*----------------------------------------------------+
        0002.00 I* < 説明 >                                           |
        0003.00 I*     外部記述ファイルの使用フィールドの名前を       |
        0004.00 I*     一時的に変更する                               |
        0005.00 I*                                                    |
        0006.00 I*  RECORD       :   レコード様式名                   |
        0007.00 I*                                                    |
        0008.00 I*  RECORD    内の フィールド 名 ---> 新らしい フィールド 名  |
        0009.00 I*                                                    |
        0010.00 I*           OLDFLD  ------------>    NEWFLD          |
        0011.00 I*                                                    |
        0012.00 I*----------------------------------------------------+
        0013.00 IRECORD                                                
        0014.00 I              OLFFLD                      NEWFLD  

    2バイト文字列の比較方法 kayo さん [ 9月3日(月) 16時39分 ]

      2バイトの文字列の比較方法を教えて下さい。

      DBに登録されている値(Jタイプ32バイト)の文字列がとある固定値(2バイト文字で5文字 例:ああ
      あああ)と一致するかどうかをIF判定をしたいのですが、以下の方法以外にもう少し良い方法があり
      ましたら、教えて頂けませんでしょうか。

      <とりあえず望む結果が得られた方法>
      ・'あああああ          '(全角スペース)を入れたワーク2(DEFINEで定義)とDBの値を比


      <試してダメだったこと>
      ・DBの値をSUBSTで5文字に切り出してワーク1(12バイト)に入れて、'あああああ'と比較
      ・DBの値をSUBSTで5文字に切り出してワーク1(12バイト)に入れて、'あああああ'を入れたワーク2
      (12バイト)と比較
      ・DBの値を、'あああああ'を入れたワーク2(DEFINEで定義)と比較
       ⇒これは、ワーク2のスペースが半角になってしまいました

      RE:2バイト文字列の比較方法 IKD さん [ 9月4日(火) 17時24分 ]

        ILE-RPG で先頭文字より比較したのであれば

        %SUBST を使って
        D STR_1           C                   CONST(' 東京都港区 ')
        D STR_2           C                   CONST(' 東京都 ')

                   IF        %SUBST(STR_1:1:7) = %SUBST(STR_2:1:7)
                    :
                   END

        のようにして比較すればスマートな記述で正しく動作しますので
        お試しください。

        RE:2バイト文字列の比較方法 kayo さん [ 9月5日(水) 9時44分 ]

          > ILE-RPG で先頭文字より比較したのであれば
          > 
          > %SUBST を使って
          > D STR_1           C                   CONST(' 東京都港区
           ')
          > D STR_2           C                   CONST(' 東京都 ')
          > 
          >            IF        %SUBST(STR_1:1:7) = %SUBST(STR_2:1:7)
          >             :
          >            END
          > 
          > のようにして比較すればスマートな記述で正しく動作しますので
          > お試しください。
          > 

          IKDさん、ご回答ありがとうございます。

          D C#TEXT          C                   CONST(' 東京都港区 ')

          C          IF        C#TEXT = %SUBST(DBの項目ID:1:11)

          で試してみましたが、IF判定はFALSEになりました。
          %SUBST(DBの項目ID:1:12)でも試してみましたが、ダメでした。

          RE:2バイト文字列の比較方法 IKD さん [ 9月5日(水) 11時3分 ]

            それはダメだと思います。

            IF C#TEXT = %SUBST( ...) の C#TEXT には港区0/Fの0/F も比較の文字として
            含まれています。つまり 12 バイトです。
            従って この比較はつねに FALSE の結果となります。
            面倒でも IF %SST(C#TEXT:1:11) = %SUBST( ... ) として
            11 バイトとして 0/0f を比較からはずした IF文で比較してください。

    CL呼び出しで複数桁のブランクをパラメータで渡す方法 菅沼 さん [ 9月12日(水) 10時19分 ]

      CALL PGM(PGMA) PARM('    ')
      CL(PGMA)の内容は以下
      PGM       PARM(&STRG)                                                     
                DCL        VAR(&STRG) TYPE(*CHAR) LEN(22)                                     
                CPYF       FROMFILE(FILEA) TOFILE(FILEB) +
                                MBROPT(*ADD) CRTFILE(*YES) INCCHAR(*RCD +
                                10 *EQ &STRG) FMTOPT(*NOCHK)
      ENDPGM
      結果的には &STRG はブランク1桁として扱われてしまうようです。
      複数桁のブランクとして渡すことはできないのでしょうか?     

      RE:CL呼び出しで複数桁のブランクをパラメータで渡す方法 IKD さん [ 9月12日(水) 14時25分 ]

        &STRG は正しく 22桁のブランク値として渡されていますが
        INCCHAR(*RCD 10 *EQ &STRG) に値が代入されると
        この式は

        INCCHAR(*RCD 10 *EQ            ) という式となってしまいます。
        これが CPYF によって1 桁のブランクと見なされてしまう原因となっています。
        引用符で囲む方法も正しく動作しませんでした。
        従って次のように条件分岐をするしか方法がなさそうです。

        0001.00              PGM        PARM(&STRG)                                   
        0002.00              DCL        VAR(&STRG) TYPE(*CHAR) LEN(22)                
        0003.00                                                                       
        0004.00              IF         COND(&STRG *EQ '  ') THEN(DO)                 
        0005.00              CPYF       FROMFILE(FILEA) TOFILE(FILEB) MBROPT(*ADD) +  
        0006.00                           CRTFILE(*YES) INCCHAR(*RCD 10 *EQ '  ') +   
        0007.00                           FMTOPT(*NOCHK)                              
        0008.00              ENDDO                                                    
        0009.00              ELSE       CMD(DO)                                       
        0010.00              CPYF       FROMFILE(FILEA) TOFILE(FILEB) MBROPT(*ADD) +  
        0011.00                           CRTFILE(*YES) INCCHAR(*RCD 10 *EQ &STRG) +  
        0012.00                           FMTOPT(*NOCHK)                              
        0013.00              ENDDO                                                    
        0014.00              ENDPGM        

        RE:CL呼び出しで複数桁のブランクをパラメータで渡す方法 菅沼 さん [ 9月12日(水) 16時58分 ]

          回答ありがとうございました。
          ブランクが一つの場合はこの方法で切り抜けられますね。
          ブランクが複数の場合や'ABC     'とかの場合面倒になりますね。
          (CPYFをブランクの回数繰り返すとか)
          対話式にCPYFを行う場合このようなことは問題にならないので何か方法は
          ありそうな気はしますが・・・

          RE:CL呼び出しで複数桁のブランクをパラメータで渡す方法 IKD さん [ 9月12日(水) 18時45分 ]

            根本的な解決をしようとすると、少し面度にはなりますが
            下記のように

            3つの文字列 : CPYF FROMFILE .... '  + &STRG + ') FMTOPT ...' を
            このようにして結合したものを API: QCMDEXC で実行させることです。
            この方法であれば &STRG にどのような値が入っていても正しく希望通りに
            動作します。


            0001.00              PGM        PARM(&STRG)                                  
            0002.00              DCL        VAR(&STRG) TYPE(*CHAR) LEN(22)               
            0003.00              DCL        VAR(&CMD) TYPE(*CHAR) LEN(512)               
            0004.00              DCL        VAR(&CMDLEN) TYPE(*DEC) LEN(15 5) VALUE(512) 
            0005.00                                                                      
            0006.00              CHGVAR     VAR(&CMD) VALUE('CPYF +                      
            0007.00                           FROMFILE(FILEA) +                          
            0008.00                           TOFILE(FILEB) MBROPT(*ADD) +               
            0009.00                           CRTFILE(*YES) INCCHAR(*RCD 10 *EQ ''' +    
            0010.00                           *CAT &STRG *CAT ''') FMTOPT(*NOCHK)')      
            0011.00              CALL       PGM(QCMDEXC) PARM(&CMD &CMDLEN)              
            0012.00              ENDPGM        

    サブファイルの先頭RRNの取得について シャリース さん [ 9月26日(水) 18時7分 ]

      お世話になります。
      1画面に2つのサブファイルを表示させています。

      照会画面なので入力項目は1つも無く両サブファイルは全て出力です。
      仮に画面上部にあるサブファイルをA、画面下部にあるサブファイルをBとします。
      A,Bそれぞれの現在表示している先頭RRNを取得したいのですがどうすれば良いでしょうか。

      当HPで「現在オープンしている画面サブファイル情報を取得するには?」を参照したのですが
      378-379(bin)で指定して取得した場合、A,Bのどちらの先頭RRNが取得できるのでしょうか。
      両方取得する事は可能でしょうか。

    サブファイルの先頭RRNの取得について シャリース さん [ 9月27日(木) 8時16分 ]

      お世話になります。
      1画面に2つのサブファイルを表示させています。

      照会画面なので入力項目は1つも無く両サブファイルは全て出力です。
      仮に画面上部にあるサブファイルをA、画面下部にあるサブファイルをBとします。
      A,Bそれぞれの現在表示している先頭RRNを取得したいのですがどうすれば良いでしょうか。

      当HPで「現在オープンしている画面サブファイル情報を取得するには?」を参照したのですが
      378-379(bin)で指定して取得した場合、A,Bのどちらの先頭RRNが取得できるのでしょうか。
      両方取得する事は可能でしょうか。

      RE:サブファイルの先頭RRNの取得について IKD さん [ 9月27日(木) 13時13分 ]

        SFL が複数個、定義されている場合にはそのような疑問が生じるのは
        当然だと思います。
        予想としてはカーソルが位置づけられている SFL の属性が取り出されるのでは
        ないかと思われましたが結果は意外に異なっていました。

        調べてみるとTOPRRN( 378-379 ) は IBM マニュアルには
        「最も上のサブファィル表示域に現に表示されている最も低い相対レコード番号」
        を示すとあります。
        つまり複数の SFL が定義されている場合でも、一番上の SFL の TOPの RRN が
        示されているということを意味しています。
        また表示装置フィードバック域は

         共通入出力フィードバック域 144バイト + 画面フィードバック域 80 バイト

        として構成されていますが、画面フィードバック域 80 バイト は SFL の個数が
        増えても増えることがありませんでした。
        つまり2つ目の SFL の属性を示す情報はどこにもありません。
        従って結論としては

            ----------------------------------------------------
           最初の SFL の TOPRRN しか取り出すことしかできない。
             ----------------------------------------------------

        ということになります。
        これは実際に検証してみた結果もTOPRRN( 378-379 )はつねに
        一番上の SFL の TOPRRN しか示してしませんでた。

        RE:諦めます。ありがとうございました。 シャリース さん [ 9月28日(金) 9時49分 ]

          IKDさん、回答ありがとうございました。
          私も色々テストしてみたのですが同じ結果でしたので、
          何とか下段のサブファイル情報を取得できないものかと質問した次第です。

          取得できないという事を前提に画面制御を設計したいと思います。
          お手数をおかけしました。

      RE:諦めます。ありがとうございました。 YOTOO さん [ 10月11日(木) 15時51分 ]

        > お世話になります。
        > 1画面に2つのサブファイルを表示させています。
        > 
        > 照会画面なので入力項目は1つも無く両サブファイルは全て出力です。
        > 仮に画面上部にあるサブファイルをA、画面下部にあるサブファイルをBとします。
        > A,Bそれぞれの現在表示している先頭RRNを取得したいのですがどうすれば良いでしょうか。
        > 
        > 当HPで「現在オープンしている画面サブファイル情報を取得するには?」を参照したのですが
        > 378-379(bin)で指定して取得した場合、A,Bのどちらの先頭RRNが取得できるのでしょうか。
        > 両方取得する事は可能でしょうか。

      RE:もしかすると出来るかも。 YOTOO さん [ 10月11日(木) 17時50分 ]

        出来るかもしれませんよ。
        以前、画面上半分と下半分でSFLを2つ使ったPGを作ったことがありますが、下半分(SFL002)は
        表示のみで上半分(SFL001)に入出力フィールドをもった画面でしたが、下半分にカーソルを持って行
        きカーソルのいる位置の行の内容を表示するPGをコールするというものでした。

        C* 画面出力                                                        
        C                     MOVEA'1'       *IN,82            82=>   ON   
        C                     WRITEDUMMY                                   
        C                     WRITEGRD001                      GRID-WRITE  
        C                     WRITEGID001                       GUID-WRITE  
        C                     WRITECTL002                                  
        C                     EXFMTCTL001                                  
        C                     READ CTL002                     91 RRN 検出    
        C                     MOVEA'0'       *IN,82                         

        PGは EXFMTCTL001 で止まってますよね、何かキーが押されたら READ CTL002 でSFL002 の相対レ
        コード番号を読むのですが、画面ファイルは下記のように書いてます。

        A*CONTROL2 RECORD................................................. 
        A          R CTL002               SFLCTL(SFL002) OVERLAY PROT 
        A                                      SFLCSRRRN(&H#RRN2)          
        A                                      SFLSIZ(9) SFLPAG(8) BLINK   

        ここで H#RRN2 でSFL002 に CHAIN をかけるとその行の内容を引き出せました。
        ****************************************************************
        なのでEXFMTCTL001 のすぐ下で一回検出して READ CTL002 の下で
        再度検出するように書けばどうでしょうか?
        ****************************************************************

        このPGではカーソルのいる位置の相対レコード番号を検出する為に SFLCSRRRN キーワードを使
        っているので下記の『<=この部分』は書いておりませんが、その画面での先頭RRNの検出だけでいい
        のであれば下記の2箇所の『<=この部分』を書けばいいと思います。

        FCRD011FMCF  E                    WORKSTN      KINFDS INF  <=この部分      
        F                                         RRN   KSFILE SFL001   
        F                                         RRN   KSFILE SFL002   
        F*                                                             

        IINF         DS                                           
        I                                    B 370 3710CURSOR     
        I                                    B 378 3790RRN          <=この部分


        すみません、操作を間違ってしまいました上のが消せません。
        この掲示板パスワードを入力しないで書き込むと消せないんですね。 

    ストアドプロシージャでCPYFRMIMPFがエラーとなる らむね さん [ 10月5日(金) 10時42分 ]

      お世話になります。
      VBからストアドプロシージャを呼び出してCLプログラムを動かそうとしているのですが、
      CPYFRMIMPFがCPF2817でエラーとなってしまいます。

      呼び出すコマンドは以下で
      CPYFRMIMPF FROMFILE(HOGE/DATA) TOFILE(HOGE/LDATA)
                   MBROPT(*REPLACE) STRDLM(*NONE)

      コマンドラインからのコマンド実行や、
      CLプログラムからの実行は正常に処理されました。

      ちなみにストアドプロシージャを作成したときにコマンドは以下です。
      CREATE PROCEDURE HOGE/PVBTEST LANGUAGE CL NOT DETERMINISTIC   
      CONTAINS SQL EXTERNAL NAME HOGE/VBTEST PARAMETER STYLE GENERAL                           
                              

      プロシージャからはCPYFRMIMPFは正常に動かせないのでしょうか?

      RE:ストアドプロシージャでCPYFRMIMPFがエラーとなる IKD さん [ 10月5日(金) 15時58分 ]

        DSPCMD でコマンドを調べればそのコマンドが実行可能な環境を
        知ることができますが CPYFRMIMPF も他のコマンドと同じであり
        特に実行環境が制限されているわけではありません。

        それより CPF2817 は「エラーのために、コピーコマンドが終了した。」
        というメッセージですので、これより以前に送出されている
        エラーの内容をお調べになればエラーの真の原因を知ることが
        できます。

        幸い対話式環境では実行できた、とのことですので
        バッチ・ジョブでの権限の問題も予想されますが
        恐らくジョブログにも報告されているはずですので
        ジョブログを調べて原因をまず調査することが先決かと思われます。

        解決しました。 らむね さん [ 10月5日(金) 17時31分 ]

          ジョブログを確認したところSQLが実行できないとのエラーが出ていました。
          CREATE PROCEDUREのSQL使用状況を4:MODIFIES SQL DATAにしないといけないようです。
          ありがとうございました。

    日付の計算 シャトル さん [ 10月20日(土) 7時54分 ]

      CLで日付の計算ができたと記憶しています。
      例えば、3日前の日付を求める等。。。
      教えて下さい。

      RE:日付の計算 UTU さん [ 10月22日(月) 10時17分 ]

        CVTDATコマンドを使用し日付の計算を行なえます。
        日付フォーマットが YMD、MDY、DMYであっても正しく計算してくれます。

        当HP AS/400 Tips&Techniques の 
        コマンド-[24.CVTDAT 日付形式変換コマンドの利用]-に
        サンプルプログラムがありますので、参照ください。

    SQLRPGの結果の違い s さん [ 12月10日(月) 9時34分 ]

      最近、ASのマシンを入替を行いOSのバージョンもV5R3M0からV7にバージョンアップされました。
      SQLRPGで作成しているPGMがいくつかあるのですがこちらのPGMの動作に違いが出ています。
      まったく同じコンパイルオプションでコンパイルしているのですが、Where文の中で、数値フィール
      ドの比較対象が文字列で定義されていた場合、V5R3M0ではエラーにならず結果が返ってきていたのに
      V7ではSQL『SQL0302』の数値が無効ですエラーで結果がまったく返ってきません。
      どちらのOSの場合もSTRSQLで同じSQLを実行すると『SQL0302』のエラーが出るのでコンパイル時のオ
      プションか何かで回避できるのではないかと思うのですが現在のところソースを直すしか解決方法が
      見つかりません。
      何か解決方法をご存知なら教えていただけるようよろしくお願いします。

      RE:SQLRPGの結果の違い IKD さん [ 12月10日(月) 10時44分 ]

        CRTSQLxxx の重大度レベルを変更してコンパイルすれば
        警告エラー等を無視してオブジェクトを作成することが
        できますが SQL0302 の重大度レベルは 30 なので
        恐らくこの方法でも実行時のエラーを回避することは
        できないと思います。
        また*PRV コンパイルでは V5R3M0 まで戻してコンパイルすることも
        できませんのでソースを修正されるのがいいかと思います。
        元々 OS V5R3M0 はかなり癖のあるバージョンで
        バグが多かったOSレベルですので正しい動作に
        プログラムを書きなおすことをお勧めします。

      RE:SQLRPGの結果の違い s さん [ 12月10日(月) 13時47分 ]

        ありがとうございました。
        現在、修正できるものはしている最中なのですが、エラーにはなってもPGMがエラーでこけるわけで
        なくログを見て初めて発覚するというものなので修正もれがあってもそのままになりそうだったので
        なんとか回避できないかと思っていました。
        仕方ないのでチェックをがんばることにします

    AS/400 から メール送信がしたいのですが おさむ さん [ 12月13日(木) 10時8分 ]

      AS/400のバッチ処理の中で動き,発生した発注データ(物理ファイル)を
      ASCII/Shift-JISに変換して添付し,取引先に送りたいのです。
      添付ファイルの中には全角文字を含みます。

      AS400をSMTPメールサーバとして使う,という意味ではないです。
      メールクライアントとして使いたいのです。

      どなたかご存知の方いらっしゃいませんか?

      RE:AS/400 から メール送信がしたいのですが IKD さん [ 12月13日(木) 12時53分 ]

        SMTP クライアントを添付ファイルつきで
        System i からメール送信するプログラムは
        既に開発しましたが、どのようなことを
        お知りになりたいのでしょうか ?

      RE:AS/400 から メール送信がしたいのですが おさむ さん [ 12月14日(金) 9時19分 ]

        文字コード変換についてはネットの情報からなんとかなりそうですが,
        TCP/IP設定,WRKDIREなど,メール送信をするための基本的な環境設定の情報が
        少なくて困っています。
        メールについては,全角文字が送れないという情報は聞きました。
        では,全角文字を含む物理ファイルを文字変換して添付することができるか
        知りたいのですが,メール送信の環境ができていないのでテストも出来ない状態です。

        RE:AS/400 から メール送信がしたいのですが IKD さん [ 12月14日(金) 14時15分 ]

          SMTPメール送信には2つの方法があります。

          (1) SNDDST コマンドによる送信
              ... System i の SMTP/POP機能を使って SNDDST コマンドによる方法
                  (ただしこの方法は旧いリリースでは正しく動作しません。)

              どなたに聞いたのかわかりませんが全角文字が送れない、という制限は全くありません。
                  CHGSMTPA で CCSID を 819 --> 943 に変更すれば可能です。
                  IBM マニュアル 「TCP/IP構成および解説書」-- [TCPIPアプリケーション]
                  -- [簡易メール転送プロトコル(SMTP)]
                  と SNDDST コマンドを調べてみてください。

                  現実的、具体的な例は IBM 資料「TCP/IP機能とインターネット」にあります。
              わかりやすく書かれています。(今では入手が困難かも知れませんが)

              WRKDIRE については SNADS のマニュアルを参照してください。

                  TCP/IP の設定は CHGSMTPA 以外に必要となる設定はないと思います。
              またいずれの条件の場合でも御社の System i がインターネットに接続可能な
                  状態になっていることをまず検査してください。

          (2) API による SMTPクライアントを開発

              ... SMTP と言えども単なるSMTPというTCP/IPサーバーと通信するTCP/IPクライアント
              にすぎません。
                  ある程度 TCP/IP通信プログラムに慣れた人であればインターネットや
                  IBM インフォーメーション・センターでサンプル・ソースを入手することが
                  できます。

    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' ) ; 

    RPGソースの復元 CTK さん [ 12月20日(木) 8時28分 ]

      間違ってPGMソースを削除してしまいました

      SAVLIB LIB(*ALLUSR) DEV(TAP01) SAVACT(*SYNCLIB) DTACPR(*YES)
      でバックアップしている状態で

      ファイル   QRPGLESRC
      ライブラリー CT@LIB
      メンバー   ABB001

      を復元する場合、どのようにコマンドを切ればよろしいですか?

      RE:RPGソースの復元 IKD さん [ 12月20日(木) 10時24分 ]

        メンバーだけを復元することはできません。
        オブジェクトまたはライブラリーを指定して復元します。

        例えばライブラリーを復元するのであれば

        DSPTAP TAP01 OUTPUT(*PRINT) でライブラリー CT@LIB がテープに保管されているのを
        最初に確認してから、

         RSTLIB SAVLIB(CT@LIB) DEV(TAP01) MBROPT(*ALL) ALWOBJDIF(*ALL) RSTLIB(CT@LIB_NEW)

        でライブラリー CT@LIB を CT@LIB_NEW という名前で復元します。
        この復元された CT@LIB_NEW/QRPGLESRC(ABB001) を CPYSRCF で復元してください。

    Excelにデータを取り込めない Burn さん [ 3月15日(金) 13時56分 ]

      Excelの"外部データの取込み"を使ってAS400のファイルを取り込もうとしていますが、
      ある区画だけクエリ画面の途中で

       Microsoft Query
       SQL5001 -カラム修飾子またはテーブル@@@@@@が未定義である。

      とエラーになってしまいます
      データソース(ODBC)への登録もエラーにならない区画と同じように登録しています
      エラーの意味、解消方法を教えて頂けないでしょうか

      よろしくお願いします

      RE:Excelにデータを取り込めない IKD さん [ 3月18日(月) 14時17分 ]

        ASCII コードの 「@」は, EBCDICコードの「 」(ブランク 0x40 )です。
        つまり SQL 文に記述したある項目がブランクになっていると
        解釈されているのではないかと思われます。
        具体的な誤りとして、SQL 文中に余計な「,」(カンマ)が混入している
        可能性があります。
        SQL 文をもう一度注意深くお調べください。
        ( 例えば、SQL文をコピーして同じSQL文を System i 上の
          STRSQL で実行すれば明らかになります。)

        ただし、これらはあくまでもエラー・メッセージからの推察に
        すぎません。
        一般的に言えることですが、何をしたのか言われないと
        エラー・メッセージだけでは原因を特定することは不可能です。
        具体的にどのような SQL 文を実行されたのか、注意深く
        御調べください。

    全角半角混在フィールドからの漢字取り出し ごんた さん [ 3月26日(火) 22時11分 ]

      教えてください。
      全角半角混在フィールドからの漢字取り出し方法を教えて下さい。
      例えば
      20桁のフィールドに"123 こんにちは 45678"があり
      頭から順番に検索し全角の"こんにちは"のみを取り出したいです。
      どのように検索し取り出せばよいでしょうか。 

    ライセンスキー満了の件 けん さん [ 4月22日(月) 15時55分 ]

      V7R1で、OS自体(5770SS1  機能:5050)のライセンスキーが満了を過ぎた場合、正常に稼働するも
      のでしょうか?
      現在は満了のメッセージ(CPF9E7C)が出力されていますが、次回のIPL後、起動するか不安です。

      何方か教えて下さい。

      よろしくお願いします。

      RE:ライセンスキー満了の件 迷える子羊 さん [ 4月24日(水) 13時2分 ]

        よく状況がわかりませんが、OSが期限付きで満了のメッセージがQSYSOPRに出力されているので
        あれば、おそらくIPL(マシン自体意がパワーダウンした時点)すると起動しないと思いますよ。
        IBMに問い合わせるか、マシンを購入された特約店に問い合わせた方がいいのでは
        ないでしょうか?


        > V7R1で、OS自体(5770SS1  機能:5050)のライセンスキーが満了を過ぎた場合、正常に稼働す
        るも
        > のでしょうか?
        > 現在は満了のメッセージ(CPF9E7C)が出力されていますが、次回のIPL後、起動するか不安です。
        > 
        > 何方か教えて下さい。
        > 
        > よろしくお願いします。

    バッチ処理から画面表示 なかやま さん [ 7月2日(火) 17時2分 ]

      おせわになります。
      バッチ処理の結果を特定の端末にブレイクメッセージみたいに
      DDS画面を表示させたいのですがよい方法が見つかりません。
      良い方法があればご教授お願いします。

      RE:バッチ処理から画面表示 IKD さん [ 7月3日(水) 10時39分 ]

        SNDBRKMSG では駄目だということですね。
        なぜ SNDBRKMSG ダメなのでしょうか ?

        DSPF の DDS に表示したい、ということであれば
        特定の DDS 画面しかメッセージを受け取れないということに
        なりますが、よろしいでしょうか ?

        方法としては、バッチ・ジョブの結果を DTAQ に送信して
        対話式ジョブでは 画面を出力する直前に毎度、DTAQ からの
        受信を行う、という方法が考えられますが
        この方法は、操作員が入出力操作をしない限りは
        結果は受け取れません。
        つねに割り込みで結果を受け取るようにしたいのであれば
        対話式ジョブをマルチスレッドとしておき、別のスレッドで
        つねに結果を監視する必要があります。
        しかし、RPG でマルチスレッドを開発するのは
        相当、面度なことになります。

        やはり最も簡単であるのは SBMJOB コマンドで
        パラメータ : MSGQ(*WRKSTN) にして投入すれば
        完了メッセージは QSYSOPR ではなく、投入元の表示装置に送られてきます。
        特定の表示装置に指定することもできます。
        お試しください。

        RE:バッチ処理から画面表示 なかやま さん [ 7月3日(水) 14時31分 ]

          IKD様

          早速のレスありがとうございます。
          バッチで定期的に行うチェックに対して
          特定の端末に詳細な情報を表示させてあげたいと思いました。
          SNDBRKMSGではなくもう少し詳しい情報をと考えましたが難しいですね。

          結局、SNDUSRMSGの応答要求でパスワードを返さないと消えなくして特定画面にメッセージ送信しま
          した。
          メッセージでアラート表示して別途、確認してもらう運用にしました。

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

    ジャーナル おかさか さん [ 8月1日(木) 17時36分 ]

      ジャーナルでロールバックを行う方法を教えて下さい。
       現在、下記の方法でジャーナルをしています
       1.ジャーナル・レシーバーの作成
              CRTJRNRCV JRNRCV(ALIB/FJRNRCV) THRESHOLD(15000)
       2.ジャーナル作成
          CRTJRN JRN(ALIB/FJRN) JRNRCV(ALIB/FJRNRCV) MNGRCV(*SYSTEM) DLTRCV(*YES) 
        3.ライブラリーに対してジャーナル開始 
              STRJRNLIB LIB(ALIB) JRN(BLIB/JRNL)   INHRULES((*ALL *ALLOPR *INCLUDE *BOTH)) 


        4.上記処理後にDSPOBJDコマンドを使用してジャーナル・レシーバーのジャーナル・イメージを
      確認すると『*AFTER』になっている
       この状態でジャーナルでロールバックが出来るのでしょうか?
      もし、出来ないのであれば どの様にすれば出来るのか教えて下さい。

      RE:ジャーナル UTU さん [ 8月2日(金) 16時23分 ]

        う〜ん具体的な情報がないと回答のしようがありませんが、
        この方法でまず試されたのでしょうか?
        またジャーナルイメージが「*AFTER」になっているのが原因かどうかも
        断定できませんので、その他も詳しく調べる必要があると思います。
        もし試されたのであれば具体的な方法・手順、その結果はどうだったのでしょうか?

        RE:ジャーナル 岡坂 さん [ 8月5日(月) 11時1分 ]

          ライブラリー名は違いますが、ジャーナルレシーバーを作成後にジャーナルを作成し
          その後STRJRNLIBコマンドで開始を行いました。(この時、ジャーナルイメージを*BOTHにしてま
          す)

          結果として、ジャーナルのロールバックは出来ません
          私としてはジャーナルイメージが「*AFTER」になっているのが原因ではないかと思い、この質問を
          致しました。(もし断定が出来ない場合は何処を調査、すれば良いのでしょうか?)

      RE:ジャーナル UTU さん [ 8月5日(月) 15時47分 ]

        エラーメッセージや症状を調べないことには、*AFTERであることが原因であるとは
        断定できません。
        ローレベルメッセージ等の実行の詳細をお調べ下さい。
        またCOMMIT ROLLBK も適切に行われているか調査の必要があります。

        想像だけで原因を特定することはできません。

    ISDN TA NB-64MAの設定 ひろゆき さん [ 9月2日(月) 12時1分 ]

      AS/400の全銀ベーシック(Toolbox)の設定で困っております。
      ご存知でしたら、ご教示ください。

      全銀ベーシック手順(Aセンター)・・・TOOLBOXを使用
      OS:V5R2 
      回線記述:BSC(TOOLBOXで定義を作成)

      通信回線:INS64
      モデム:NB-64MA(ISDNターミナルアダプタ)

      以前は、正常につながっておりました。
      電話番号が変更になり、AS/400のどこを探してもそれらしき設定が見当たりません。
       (通常は、制御装置のパラメータの接続番号に設定しますが電話番号とは、異なる10桁の値がセッ
      トされています。)
      モデムの設定変更が必要なのでしょうか?
      根本的な勘違いしているのでしょうか?
      どうぞ宜しくお願い致します。

      RE:ISDN TA NB-64MAの設定 IKD さん [ 9月3日(火) 10時26分 ]

        WRKLIND で現在の回線記述を調べてみてください。

        変更は WRKLIND または CHGLINBSC + F4 で, できると思います。
        CHGLINBSC ではパラメータ : 呼び出し番号 (CALLNBR) を変更します。

        RE:ISDN TA NB-64MAの設定 ひろゆき さん [ 9月3日(火) 11時38分 ]

          ご指摘ありがとうございます。
          確認いたしました。

          自動返答 . . . . . . . . . . . . . :   AUTOANS     *YES     
          自動返答タイプ . . . . . . . . . . :   AUTOANSTYP  *DTR     
          自動ダイヤル呼び出し . . . . . . . :   AUTODIAL    *YES     
          ダイヤル 呼び出し コマンド の タイプ . . . :   DIALCMD     *V25BIS  
          呼び出し番号 . . . . . . . . . . . :   CALLNBR     *NONE

          変更前の電話番号は、登録されておりませんでした。

          RE:ISDN TA NB-64MAの設定 TIG さん [ 9月3日(火) 11時45分 ]

            全銀BSCの相手先電話番号の設定ですが、ToolBox メニューで

              1. 全銀ベーシック手順通信メニュー

              2. 全銀手順通信構成作成 (CRTZGNCFG)

              3. CRTZGNCFGの追加のパラメーター(F10)を実行すれば
                 電話番号のパラメーター設定が表示される

            上記メニューより相手先の電話番号の設定が行えると思います。

            RE:ISDN TA NB-64MAの設定 ひろゆき さん [ 9月3日(火) 12時3分 ]

              ご指摘ありがとうございます。
              私の考えが間違っていなければ、その電話番号は通信制御装置の
              接続番号 . . . . . . . . . . . . . :   CNNNBR      9999999999
              に設定されると思います。
              ここには、電話番号ではなく・・・なぜか相手先センター確認コードが設定されていました。
              間違っておりましたら、ご指摘ください。

            RE:ISDN TA NB-64MAの設定 TIG さん [ 9月3日(火) 12時57分 ]

              御社のシステム構成でなぜ相手先センターの確認コードが
              設定されているかはわかりませんが、
              手順として全銀BSCの通信相手先電話番号は下記CRTZGNCFGコマンドの
              TELNBRで設定すると思います。
              現在の設定値を確認するかもう一度再作成する必要があるのでは
              ないでしょうか?
              構築された担当者にお尋ね下さい。


              接続タイプ  . . . . . . . . . . CNN            *SWTPP                         
              AセンターあるいはBセンター    AORB           *A                             
              回線名  . . . . . . . . . . . . LIND                                          
              資源名  . . . . . . . . . . . . RSRCNAME     > 1                              
              制御装置名  . . . . . . . . . . CTLD         > 1                              
              装置名  . . . . . . . . . . . . DEVD         > 1                              
              遠隔ロケーション名  . . . . . . RMTLOCNAME   > 1                              
              テキスト  . . . . . . . . . . . TEXT         > 1                              
                                                                                            
              構成タイプ  . . . . . . . . . . TYPE           *MANUAL                        
              電話番号  . . . . . . . . . . . TELNBR                                    

                  

              RE:ISDN TA NB-64MAの設定 ひろゆき さん [ 9月3日(火) 13時20分 ]

                ありがとうございます。私もご指摘の通りと思います。
                担当者は、既に退職しそのときの構築状況がわかりません。
                それでモデムを疑ったしだいです。
                もし、そちらでもモデムNB-64MAをご使用でしたら
                AS/400用に設定変更された通信条件の項目があればご教示ください。
                はっきり申し上げてAS/400側か、モデム側なのかわかりません。

                よろしくお願いいたします。

                RE:ISDN TA NB-64MAの設定 TIG さん [ 9月3日(火) 15時57分 ]

                  こちらにはモデムはありません。
                  モデムが疑わしいのであれば一度モデムの取扱説明書等で
                  設定について調べることをお薦め致します。
                  AS/400側もまず以前の電話番号が設定されているところを
                  重点的に調べてみて下さい。

                  RE:ISDN TA NB-64MAの設定 ひろゆき さん [ 9月3日(火) 17時13分 ]

                    ありがとうございます。モデムの取扱説明書も再度読み直し、AS/400側も再度調べてみます。

      RE:ISDN TA NB-64MAの設定 SDF さん [ 9月3日(火) 18時43分 ]

        モデム:NB-64MA(ISDNターミナルアダプタ)
        これって、専用回線用でしょ。
        電話番号は当然無い。
        専用回線を公衆回線に、変更したのでは。

        RE:ISDN TA NB-64MAの設定 ひろゆき さん [ 9月4日(水) 11時0分 ]

          ありがとうございます。早速確認してみます。

          RE:ISDN TA NB-64MAの設定(解決) ひろゆき さん [ 10月10日(木) 17時3分 ]

            皆々様
            ありがとうございました。
            とりあえず通信が出来るようになりました。

            モデムのダイレクトコール機能を使用し
            AS/400は、ラインの自動ダイヤル呼び出しを*YES→*NOに設定しました。
            この設定が正しいのか、他にもっと良い設定があるのかわかりませんが・・・

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

    QTEMPの中のテーブル一覧取得方法(AS400) いろはす さん [ 12月6日(金) 10時1分 ]

      QTEMPの中のテーブル一覧をSQLで取得するためにはどのようにしたらよいでしょうか?

      QTEMPにテーブルを作成するストアドを同一PGMで呼び出すと、2回目以降はテーブルが既に存在する
      為、
      ストアドがエラーとなります。

      ストアド内でQTEMPに作成したテーブルの存在チェックをして、ある場合はテーブルを消して作り直
      す制御を
      最終的には組み込みたいです。

      皆様のお知恵をお貸し下さい。

    JOBLOGの出力先 しゅう さん [ 1月24日(金) 15時43分 ]

      JOBLOGがQEZJOBLOGに保存されず、QDFTJOBDで指定されているOUTQと印刷装置に直接
      出力されます。(QEZDEBUGも同様)
      V5R4M0のI5ですが、QEZJOBLOG,QEZDEBUGに割り振る指定はありませんでしょうか?

    HTTPサーバが起動しているかのチェック方法 シャリース さん [ 2月4日(火) 12時57分 ]

      お世話になります。
      弊社ではIBMiにインクルードされているアパッチをたててRPG-CGIの処理をおこなっています。
      中古で購入したIBMi(Ver5.4)にHTTPサーバを立てて運用しているのですが、
      気が付くとHTTPサーバがダウンしている時がたまに有ります。
      原因は解らないのですが、どうやらシステムメッセージが一杯になるとそのタイミングで
      ダウンしている様です。システムメッセージログを折り返しに設定しているのですが状況は変わら
      ずでした。

      そこで苦肉の策として、WRKACTJOBで画面をたたくとHTTPが立ち上がっていればサブシステムに
      スレッドがいくつかぶら下がっているので稼動しているかどうか判断つくのですが
      これをDLYJOBで常に動いているかどうかチェックして動いていなければ、
      HTTPサーバを再起動するというジョブをWRKJOBSCDEに組み込みたいと考えています。

      しかしHTTPサーバがACTIVEの状態なのかどうか調べるコマンド(方法)が解りません。
      ご存知の方がいらっしゃいましたらご教示願います。

      RE:HTTPサーバが起動しているかのチェック方法 IKD さん [ 2月4日(火) 13時37分 ]

        このサイトの Tools に「34. TCP/IPサーバーの検査」という記事があります。
        CHKSVR というTools のコマンドを使えば次のように HTTPサーバーが
        活動しているかどうかを検査することができます。
        HTTPサーバー以外のサーバーの活動を検査することもできます。
        原理は指定した PORT 番号が使用可能であるかどうかを検査するものです。
        ( System i 既存のコマンドで検査できるコマンドはありません。)

          PGM                                                     
          CHKSVR     PORT(*HTTP)                                  
          MONMSG     MSGID(CPF9800) EXEC(DO)                      
          SNDPGMMSG  MSG('HTTP サーバーは活動していません。 ')    
          ENDDO                                                   
          ENDPGM   

    無料でできる IBM i の Web化 管理人 さん [ 2月12日(水) 11時17分 ]

      このサイトの「HTTPサーバーとWeb開発」に「105.無料でできる IBM i の Web化」を
      公開致しました。
      是非ご参考になさってください。

    ネットワークドライブ割当 NG さん [ 2月18日(火) 9時31分 ]

      データ転送にて
      STRPCCMDにてPCSFT5.exeをCLにて実行していますが、
      その定義(.ttoファイル)は、iSeriesの共有フォルダに格納しています。
      ユーザーはそのCLを実行するにあたり、手動でネットワークドライブの
      割当を実施していますが、
      CL等で指定できないでしょうか?

      RE:ネットワークドライブ割当 @kira さん [ 2月18日(火) 11時45分 ]

        もう少し具体的にご説明いただけないでしょうか?

        > その定義(.ttoファイル)は、iSeriesの共有フォルダに格納しています。

        iSeriesのIFSを共有フォルダにしているという意味でしょうか?

        > ユーザーはそのCLを実行するにあたり、手動でネットワークドライブの
        > 割当を実施していますが、

        「手動でネットワークドライブの割り当て」とは、
        具体的にどのようなことを行っていますか?

        RE:ネットワークドライブ割当 NG さん [ 2月18日(火) 13時17分 ]

          > もう少し具体的にご説明いただけないでしょうか?
          > 
          > > その定義(.ttoファイル)は、iSeriesの共有フォルダに格納しています。
          > 
          > iSeriesのIFSを共有フォルダにしているという意味でしょうか?
          → そうです。
          > 
          > > ユーザーはそのCLを実行するにあたり、手動でネットワークドライブの
          > > 割当を実施していますが、
          > 
          > 「手動でネットワークドライブの割り当て」とは、
          > 具体的にどのようなことを行っていますか?
          > 
          ありがとうございます。
          ユーザーは、
          コンピューター右クリック〜ネットワークドライブの割り当て
          ドライブを、Iドライブ フォルダ(パス)を\\AS/400のIPアドレス\共有フォルダ名

          CLでは、
          STRPCCMD PCCMD('C:\PCOMWIN\PCFT5 I:\共有フォルダ名\○○○.TTO') PAUSE(*NO)
          で実行します。

          ユーザーがドライブ割り当てせずに、CLで組み込めたらと・・

      RE:ネットワークドライブ割当 @kira さん [ 2月19日(水) 11時44分 ]

        > ユーザーは、
        > コンピューター右クリック〜ネットワークドライブの割り当て
        > ドライブを、Iドライブ フォルダ(パス)を\\AS/400のIPアドレス\共有フォルダ名

        このときに、「ログオン時に再接続する」にチェックを入れれば、
        PCを再起動しても、ネットワークドライブが割り当たったままになります。
        よって、毎回再設定する手間は省けます。

        これで問題解決になりますでしょうか?

        RE:ネットワークドライブ割当 NG さん [ 2月19日(水) 17時57分 ]

          > > ユーザーは、
          > > コンピューター右クリック〜ネットワークドライブの割り当て
          > > ドライブを、Iドライブ フォルダ(パス)を\\AS/400のIPアドレス\共有フォルダ名
          > 
          > このときに、「ログオン時に再接続する」にチェックを入れれば、
          > PCを再起動しても、ネットワークドライブが割り当たったままになります。
          > よって、毎回再設定する手間は省けます。
          > 
          > これで問題解決になりますでしょうか?

          ありがとうございます。
          現在業務で、ネットワークドライブ割り当てを行う担当者は
          ログオン時に再接続設定にしていますのでOKかと思います。

          今回、今まで行っていない担当者(不特定?)が、
          AS/400のデータベースに対して登録・更新した際、
          そのデータをデータ転送をする仕組みをつくりたいのですが、
          (転送先は自分のパソコンではなくPCサーバー、カンマ区切り)
          今までのように、データ転送ユーティリティーを利用して
          (転送先のPCファイル名をサーバーに)と考えまして・・・

          話がそれるかもしれませんが、
          別のサーバーに対して、カンマ区切り形式で
          別のサーバーのディレクリに保存する方法は
          別にありますか?
          現状データ転送しか思い浮かばず、その際ネットワークドライブの割り当て
          処理がネックになっていましたので・・

          何かすいません・・

          RE:ネットワークドライブ割当 @kira さん [ 2月20日(木) 15時46分 ]

            > 話がそれるかもしれませんが、
            > 別のサーバーに対して、カンマ区切り形式で
            > 別のサーバーのディレクリに保存する方法は
            > 別にありますか?
            > 現状データ転送しか思い浮かばず、その際ネットワークドライブの割り当て
            > 処理がネックになっていましたので・・

            CPYTOIMPFコマンドで、IFSにカンマ区切りのファイルを生成し、
            それをAS400のFTPコマンドで、PCサーバーに転送してはいかがでしょうか。

            RE:ネットワークドライブ割当 NG さん [ 2月20日(木) 18時7分 ]

              > > 話がそれるかもしれませんが、
              > > 別のサーバーに対して、カンマ区切り形式で
              > > 別のサーバーのディレクリに保存する方法は
              > > 別にありますか?
              > > 現状データ転送しか思い浮かばず、その際ネットワークドライブの割り当て
              > > 処理がネックになっていましたので・・
              > 
              > CPYTOIMPFコマンドで、IFSにカンマ区切りのファイルを生成し、
              > それをAS400のFTPコマンドで、PCサーバーに転送してはいかがでしょうか。
              > 
              なるほど。
              試してみます。
              ほんとに丁寧にありがとうございました。

    COBOLでのExcelデータ作成について 新米 さん [ 5月8日(木) 15時26分 ]

      現状COBOLでExcelデータを作成しデータ転送で「名前.xls」で受け取りExcelを作成しています。
      制御データを
      ID;PWXL
      B;Y10;X10 (Y:縦軸 X:横軸)
      F;W1 1 12 (12はシート幅)

      でコーディングしています。

      Excel2003ではよいのですが2013だとエラーメッセージ(レコード形式と拡張子があっていません)
      が表示されてしまいます。
      解決方法をご存知の方はお答えをお願いします。 

      RE:COBOLでのExcelデータ作成について @kira さん [ 5月13日(火) 10時51分 ]

        どのようなことをされているのか、
        もう少し詳しくご説明下さい。

        RE:COBOLでのExcelデータ作成について 新米 さん [ 5月14日(水) 10時35分 ]

          >COBOLプログラムでExcelの制御・項目名・項目値の各データをファイルに出力し、データ転送で拡
          張子をxlsで受け取ることでExcel(一覧表的な)を作成しています。

          制御情報を 
          ID;PWXL
          B;Y10;X10  (縦軸・横軸の行と列の数 Y:縦軸 X:横軸)
          F;W1 1 12 (1つ目横軸のシート幅は12)
          F;W2  2  10  (2つ目横軸のシート幅は10)

          シートデータを
          C;Y行ナンバー;X列ナンバー;Kデータ

          最後に
          E
          を出力します。

          CSV形式をBIF4等で受けてもできるのですが項目名が付かないです。

          こんな説明しかできないのですが、よろしくお願いいたします。

          RE:COBOLでのExcelデータ作成について @kira さん [ 5月15日(木) 15時17分 ]

            新米さんが作成されているファイルは、
            Excelファイルフォーマットではなく、
            SYLKフォーマットというものだと思います。

            拡張子を .xls ではなく、 .slk にしたら読み込めませんでしょうか?

            RE:COBOLでのExcelデータ作成について 新米 さん [ 5月22日(木) 12時3分 ]

              > 新米さんが作成されているファイルは、
              > Excelファイルフォーマットではなく、
              > SYLKフォーマットというものだと思います。
              > 
              > 拡張子を .xls ではなく、 .slk にしたら読み込めませんでしょうか?
              > 

    JOBQに投入されたジョブについて MMT さん [ 5月15日(木) 10時30分 ]

      いつも勉強させて頂いています。
      現在、AS400→i5への移行を行っているのですが、夜間バッチにてJOBQ(QCTL)に投入された
      ジョブの動きが、AS400とi5で違います。
      使用しているCLは同じものが動いています。

      <処理概要>

      1.夜間バッチのCLが起動
      2.上記CLから
        SBMJOB JOB(YAKAN) JOBQ(QCTL) JOBPTY(8) CMD(CALL YAKAN) MSGQ(*WRKSTN)
        でジョブ投入
      3.その後パワーダウン


      <AS400の動き>
      パワーダウンしIPL後にSBMJOBされたYAKANが起動する

      <i5の動き>
      パワーダウン前にSBMJOBされたYAKANが起動する

      使用しているOBJは全く同じものなので、環境の問題かとも思われますが
      JOBQのHLDやRLSを行っているような所はありません。
      なぜAs400側がIPL後に起動するかが不明なのです。

      何かお気づきの方いらっしゃいましたら、ご教授お願いいたします。


      RE:JOBQに投入されたジョブについて IKD さん [ 5月16日(金) 12時10分 ]

        <i5の動き> と指摘されている動作は一般的なもので正常です。

        IPL 後に JOBQ が実行されるのは特殊な設定があるのではないかと
        思われます。

        JOBQ が活動するためには, その JOBQ に関連づけられた SBS が
        活動していなくてはなりません。
        WRKJOBQ + [実行] すれば、この状況を知ることができます。
        恐らく AS400 では特殊な設定をされていたのでは
        ないでしょうか ?

        それは別としても JOBQ: QCTL 、MSGQ(*WRKSTN) の指定は
        JOBQ: QBATCH MSGQ(*SYSOPR) とするのが一般的です。

        このあたりの事情も含めて起動CLP: QSTRUP に登録されているはずですので
        調べてみてください。
        QSTRUP を見ればご質問の理由がわかるはずです

      RE:JOBQに投入されたジョブについて koma さん [ 5月17日(土) 12時18分 ]

        QCTLのサブシステム記述を比較されてはどうでしょうか?
        特に、ジョブ待ち行列項目のところをチェックしてみてください。

    PCOMの転送 ID/Passwd DG さん [ 5月26日(月) 14時21分 ]

      こんにちは

      今迄WinXpとOffice2003を使用していたのですけどやっと入替えになりました。
      その際にExcelのVBでPCOMを絡めた物を作っていたのですけどWin7/Office2013になってPcomも5.8に
      なったら問題が発生しました。

      転送時にID/Passwdをそのパソコンで一回目は入力する必要はWinXPでも行っていましたので納得でき
      ました。
      2回目以降に関してはパソコンの電源を落さない限りID/Passwdは保持されるのです。
      AS400のログオン先/パスワードは記録されるのですけど毎回【OK】をクリックしなければなりません。
      エクセルのマクロで処理しているのですけどこの処理を4回ほど行うのですけど結構煩わしくなてき
      たのです。
      この処理問題を解決された方居ませんでしょうか?

      RE:PCOMの転送 ID/Passwd ASD さん [ 5月28日(水) 11時8分 ]

        PCOMM 5.8 のサポートは XPまで。
        WIN7PRO PCOMM 6.0 だけど 問題はない。

      RE:PCOMの転送 ID/Passwd Mew さん [ 5月29日(木) 8時36分 ]

        ASD様

        レスありがとう御座います
        エクセルのVBと絡めて
        Sub test()

        Dim Xmemo
        Dim strS   As String
        Dim oShell As Object
        Dim FSO    As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set oShell = CreateObject("WSCript.shell")

        strS = FSO.GetFile("C:\Program Files\Personal Communications\pcsft5.exe").ShortPath & _
        " " & _
        FSO.GetFile("C:\Program Files\Personal Communications\Private\TEST.TTO").ShortPath
        Xmemo = oShell.Run(strS, 1, True)

        Set oShell = Nothing
        Set FSO = Nothing

        End Sub

        で転送していたんです。
        そこで上記の問題になりました
        6.0では問題ないのですね。羨ましいです

        RE:PCOMの転送 ID/Passwd DG さん [ 5月29日(木) 17時51分 ]

          > ASD様
          > 
          > レスありがとう御座います
          > エクセルのVBと絡めて
          > Sub test()
          > 
          > Dim Xmemo
          > Dim strS   As String
          > Dim oShell As Object
          > Dim FSO    As Object
          > Set FSO = CreateObject("Scripting.FileSystemObject")
          > Set oShell = CreateObject("WSCript.shell")
          > 
          > strS = FSO.GetFile("C:\Program Files\Personal Communications\pcsft5.exe").ShortPath
           & _
          > " " & _
          > FSO.GetFile("C:\Program Files\Personal Communications\Private\TEST.TTO").ShortPath
          > Xmemo = oShell.Run(strS, 1, True)
          > 
          > Set oShell = Nothing
          > Set FSO = Nothing
          > 
          > End Sub
          > 
          > で転送していたんです。
          > そこで上記の問題になりました
          > 6.0では問題ないのですね。羨ましいです

          失礼しました名前間違えました

    DFUプログラムで削除と新規追加をさせない方法 シャリース さん [ 6月5日(木) 19時2分 ]

      データベースのある1項目だけを更新させる機能のために
      プログラムではなく、DFUを作成し、
      エンドユーザーに提供しようと考えています。

      しかしDFUからレコードの削除や新規追加をさせたくありません。
      そのようにしたい場合、DFUプログラム作成の時、
      どのように指定したら良いでしょうか。

      そもそもDFUではレコードの更新のみの設定はできないのでしょうか。
      アドバイスお願いいたします。

      RE:DFUプログラムで削除と新規追加をさせない方法 TIM さん [ 6月6日(金) 9時36分 ]

        作成したDFUをカスタマイズすればレコードの更新のみにできるのでは。。。
        下記を参考に試してみてはどうでしょうか!

        このAS/400 Tips&Techniques の Topics =>「DFU,Query,SQL」の
         
          1.DFU の画面をユーザーでカスタマイズしたい
          4.DFU でユーザーにレコードを追加させたくない

        RE:DFUプログラムで削除と新規追加をさせない方法 シャリース さん [ 6月10日(火) 16時9分 ]

          > 作成したDFUをカスタマイズすればレコードの更新のみにできるのでは。。。
          > 下記を参考に試してみてはどうでしょうか!
          > 
          > このAS/400 Tips&Techniques の Topics =>「DFU,Query,SQL」の
          >  
          >   1.DFU の画面をユーザーでカスタマイズしたい
          >   4.DFU でユーザーにレコードを追加させたくない
          > 
          > 

    物理ファイルのサイズについて MMT さん [ 7月2日(水) 17時58分 ]

      いつも勉強させて頂いています。
      さて、ある物理ファイル(LFは5本)があり初期レコード数(SIZE)が*NOMAX
      になっているにも関わらず、RPGのWRITE、DFUで追加を行うと
      ファイルがいっぱいですのエラーメッセージが返されます。
      これは物理ファイルが壊れていると考えてよろしいでしょうか?
      以前も合計レコード数が124000件になると同じ現象がありました。
      ※他のPFでは発生しません。
      RGZPFMはまだ行っておりませんが、夜間で行う予定にはしております。
      ちなみに、OSのバージョンはV5R1M0です。
      DSPFDの情報は下記の通りです。

        ファイル . . . . . . . . . . . . . . . . . : FILE       XXXXXX        
          ライブラリー . . . . . . . . . . . . . . :            HOGELIB        
        情報のタイプ . . . . . . . . . . . . . . . : TYPE       *ALL           
        ファイル属性 . . . . . . . . . . . . . . . : FILEATR    *ALL           
        システム . . . . . . . . . . . . . . . . . : SYSTEM     *LCL           
      ファイル記述の見出し                                                     
        ファイル . . . . . . . . . . . . . . . . . : FILE       XXXXXX        
        ライブラリー . . . . . . . . . . . . . . . :            HOGELIB        
        ファイルのタイプ . . . . . . . . . . . . . :             物理          
        ファイル・タイプ . . . . . . . . . . . . . : FILETYPE    *DATA         
        補助記憶域プール ID. . . . . . . . . . . . :            01             
      データベース・ファイル の属性                                                     
        外部記述ファイル . . . . . . . . . . . . . :             YES           
        ファイル・レベル識別コード . . . . . . . . :            1250924130819  
        作成日 . . . . . . . . . . . . . . . . . . :            09/05/23       
        テキスト ' 記述 '. . . . . . . . . . . . . : TEXT        データ
        配布ファイル . . . . . . . . . . . . . . . :             NO
      DBCS 使用可能  . . . . . . . . . . . . . . :             YES  
      メンバーの最大数 . . . . . . . . . . . . . : MAXMBRS        1 
      制約の数 . . . . . . . . . . . . . . . . . :                0 
      トリガーの数 . . . . . . . . . . . . . . . :                0 
      メンバー数 . . . . . . . . . . . . . . . . :                1 
      アクセス・パスの保守 . . . . . . . . . . . : MAINT      *IMMED
      アクセス・パス回復 . . . . . . . . . . . . : RECOVER     *NO  
      強制キー順アクセス・パス . . . . . . . . . : FRCACCPTH   *NO  
      メンバー・サイズ . . . . . . . . . . . . . : SIZE       *NOMAX
      記憶域割り振り . . . . . . . . . . . . . . : ALLOCATE    *NO  
      連続記憶域 . . . . . . . . . . . . . . . . : CONTIG      *NO  
      入れたい記憶装置 . . . . . . . . . . . . . : UNIT       *ANY  
      強制書き込みレコード数 . . . . . . . . . . : FRCRATIO   *NONE 
      最大ファイル待機時間 . . . . . . . . . . . : WAITFILE   *IMMED
      最大レコード待機時間 . . . . . . . . . . . : WAITRCD       60 
      削除済みレコード許容最大% . . . . . . . . : DLTPCT     *NONE 
      削除済みレコードの再使用 . . . . . . . . . : REUSEDLT    *NO  
      コード化文字セット識別コード . . . . . . . : CCSID       5026 
      読み取り操作可能 . . . . . . . . . . . . . :             YES  
         書き込み操作可能 . . . . . . . . . . . . . :             YES             
         更新操作可能 . . . . . . . . . . . . . . . : ALWUPD      *YES            
         削除操作可能 . . . . . . . . . . . . . . . : ALWDLT      *YES            
         レコード様式レベルの検査 . . . . . . . . . : LVLCHK      *NO             
         アクセス・パス . . . . . . . . . . . . . . :             キー順          
         アクセス・パス・サイズ . . . . . . . . . . : ACCPTHSIZ  *MAX4GB          
         キーの最大長 . . . . . . . . . . . . . . . :              20             
         最大レコード長 . . . . . . . . . . . . . . :              200            
         ファイルは現在ジャーナル処理中 . . . . . . :             NO              
       アクセス・パス記述                                                         
         アクセス・パスの保守 . . . . . . . . . . . : MAINT      *IMMED           
         固有キー値必要 . . . . . . . . . . . . . . : UNIQUE      NO              
         キー順序 . . . . . . . . . . . . . . . . . :             指定されていない
         アクセス・パスのジャーナル処理 . . . . . . :             NO              
      -------途中略--------
           メンバーの満了日 . . . . . . . . . . . . : EXPDATE    *NONE              
           アクセス・パスの保守 . . . . . . . . . . : MAINT      *IMMED             
           アクセス・パスの回復 . . . . . . . . . . : RECOVER     *NO               
           メンバー・サイズ . . . . . . . . . . . . : SIZE       *NOMAX             
           現在のレコード数 . . . . . . . . . . . . :                112465         
           削除済みレコード数 . . . . . . . . . . . :                 11535         
           記憶域割り振り . . . . . . . . . . . . . : ALLOCATE    *NO               
           連続記憶域 . . . . . . . . . . . . . . . : CONTIG      *NO               
           入れたい記憶装置 . . . . . . . . . . . . : UNIT       *ANY               
           強制書き出しレコード数 . . . . . . . . . : FRCRATIO   *NONE              
           共用オープン・データ・パス . . . . . . . : SHARE       *NO               
         許される削除済みレコードの最大 (%) . . . : DLTPCT     *NONE                
         メンバー・アクセスの数 . . . . . . . . . :                     0           
         データ空間活動統計 . . . . . . . . . . . :                                 
           データ空間サイズ(バイト数) . . . . . :           26419200              
           物理ファイルのオープン・アクセス . . . :                           431   
           物理ファイルのクローズ・アクセス . . . :                           423   
           書き出し操作 . . . . . . . . . . . . . :                             4   
           更新操作 . . . . . . . . . . . . . . . :                            97   
           削除操作 . . . . . . . . . . . . . . . :                        11,535   
           論理読み取り . . . . . . . . . . . . . :                       408,899   
           物理読み取り . . . . . . . . . . . . . :                        68,794   
           消去操作 . . . . . . . . . . . . . . . :                                 
           データ空間コピー操作 . . . . . . . . . :                                 
           再編成操作 . . . . . . . . . . . . . . :                                 
           アクセス・パスの作成/再作成 . . . . . :                             1   
           キー選択で拒否されたレコード . . . . . :                                 
           非キー選択で拒否されたレコード . . . . :                       112,465   
           GROUP-BY 選択で拒否されたレコード  . . :                                 
         アクセス・パス活動統計 . . . . . . . . . :                                 
             アクセス・パス論理読み取り . . . . . . :                       124,987          
             アクセス・パス物理読み取り . . . . . . :                                        
             アクセス・パス・サイズ . . . . . . . . :                    6279168             
             アクセス・パス項目の数 . . . . . . . . :                112465                  
             アクセス・パス有効 . . . . . . . . . . :             YES                        
             暗黙のアクセス・パスの共用 . . . . . . :             NO                         
             アクセス・パスのジャーナル処理 . . . . :             NO                         
             固有部分キー値の数 . . . . . . . . . . :                                        
               キー・フィールド 1 . . . . . . . . . :                          6             
               キー・フィールド 1 - 2 . . . . . . . :                       1937             
               キー・フィールド 1 - 3 . . . . . . . :                       4703             
               キー・フィールド 1 - 4 . . . . . . . :                      89606             
           最終変更日/時刻 . . . . . . . . . . . :              26/07/02  17:26:37          
           抜き出し日/時刻 . . . . . . . . . . . :              26/07/02  17:54:39          
           最終抜き出し日/時刻 . . . . . . . . . :              26/07/02  17:16:04          
           最終保管日/時刻 . . . . . . . . . . . :              26/07/02  03:13:05          
           最終復元日/時刻 . . . . . . . . . . . :              13/07/28  12:14:36          
           最終使用日付 . . . . . . . . . . . . . . :            26/07/02                    
           使用日数カウント . . . . . . . . . . . . :              250                       
        メンバーの合計数  . . . . . . . . . . . . :                 1   
        使用可能でないメンバーの合計数  . . . . . :                 0   
        合計レコード数  . . . . . . . . . . . . . :            112465   
        合計削除レコード  . . . . . . . . . . . . :             11535   
        合計メンバー・サイズ  . . . . . . . . . . :          32698368   
                                                                        

                  

      RE:物理ファイルのサイズについて ASD さん [ 7月3日(木) 17時46分 ]

        最近 停電でASが落ちましたか。
        停電がなければ、ファイルの損傷は、まずない。

        そもそも DFUなど 信用できない。
        DDS CRTPF の組み合わせで、DFUと相性が悪いパターンがある。
        RPGみたいに、融通がきかない。

        *NOMAX の意味 ASD さん [ 7月4日(金) 11時40分 ]

          無制限ではなく、システムがレコード数を決めるです。

          RE:*NOMAX の意味 MMT さん [ 7月7日(月) 14時9分 ]

            > 無制限ではなく、システムがレコード数を決めるです。
            > 

            ASDさんありがとうございます。
            *NOMAXは無制限ではなかったのですね。勉強になりました。

      RE:物理ファイルのサイズについて IKD さん [ 7月4日(金) 10時59分 ]

        物理ファイルの量が制約を受けるのはレコード数だけでなく
        アクセス・パスのバイト数やメンバー当たりのバイト数他の
        16項目の制約事項があります。

        DB2/400データ・ベースイ・プログラミング の
        [物理ファイルメンバーのサイズ] - [データベース・ファイルのサイズ]

          制約                         | 制約値          | 現状の数値      | 判定
        -------------------------------+-----------------+-----------------+---------------
         レコード内のバイト数          | 32,768 バイト   | 200 バイト     |  ○
         レコード内のフィールド数      |  8,000 個       |                 |
         メンバー当たりのレコード数    | 2,147,483,646   | 112,465         |  ○
         メンバー当たりのバイト数      | 266,757,734,400 | 32,698,368      |  ○
         アクセス・パスのバイト数      | 4,294,966,272   |  6,279,168      |  ○
              :                        :                 :

        ざっと調べても今のところ制約を受けている項目は見つかりませんでしたが
        「ファイルが一杯です」のエラー・メッセージの CPF ID とメッセージの詳細を
        調べてみればどの項目で制約を受けているのかが、きっとわかるはずです。

        正しい原因がわかれば正しい対処の方法もわかるでしょう。
          

        RE:物理ファイルのサイズについて MMT さん [ 7月7日(月) 14時8分 ]

          > 物理ファイルの量が制約を受けるのはレコード数だけでなく
          > アクセス・パスのバイト数やメンバー当たりのバイト数他の
          > 16項目の制約事項があります。
          > 
          > DB2/400データ・ベースイ・プログラミング の
          > [物理ファイルメンバーのサイズ] - [データベース・ファイルのサイズ]
          > 
          >   制約                         | 制約値          |
           現状の数値      | 判定
          > -------------------------------+-----------------+-----------------+---------------
          >  レコード内のバイト数          | 32,768 バイト   | 200 バイト    
           |  ○
          >  レコード内のフィールド数      |  8,000 個       |          
                 |
          >  メンバー当たりのレコード数    | 2,147,483,646   | 112,465         |
            ○
          >  メンバー当たりのバイト数      | 266,757,734,400 | 32,698,368      |  

          >  アクセス・パスのバイト数      | 4,294,966,272   |  6,279,168      |
            ○
          >       :                        :             
              :
          > 
          > ざっと調べても今のところ制約を受けている項目は見つかりませんでしたが
          > 「ファイルが一杯です」のエラー・メッセージの CPF ID とメッセージの詳細を
          > 調べてみればどの項目で制約を受けているのかが、きっとわかるはずです。
          > 
          > 正しい原因がわかれば正しい対処の方法もわかるでしょう。
          >   

        RE:物理ファイルのサイズについて MMT さん [ 7月7日(月) 14時11分 ]

          > 
          > ざっと調べても今のところ制約を受けている項目は見つかりませんでしたが
          > 「ファイルが一杯です」のエラー・メッセージの CPF ID とメッセージの詳細を
          > 調べてみればどの項目で制約を受けているのかが、きっとわかるはずです。
          > 
          > 正しい原因がわかれば正しい対処の方法もわかるでしょう。
          >

          IKDさん、詳しいご説明ありがとうございます。
          様々な要因が重なって現象が出るわけですね。
          ログを再度チェックして確認してみます。
             

    「HTMLインターフェースを MS-Word, MS-Excel そして PDF に変換」について 伊集院博 さん [ 2月12日(木) 15時51分 ]

      お世話になります。
      タイトルの仕組みについて教えて下さい。

      非常に面白い機能だと思います。
      この機能は、Auto-Web、RPG-CGIで作り込んだもの、
      RPG#で作り込んだもの、トナカイで変換かけたもの、
      の何れで利用できるのでしょうか?
      HTMLになっていれば可能でしょうか?
      ダウンロードするための条件は何でしょうか?

      現在、ブラウザに表示したデータをダウンロードさせるには
      ダウンロードボタンが押された際、あらためてダウンロード用のデータを作成し
      CSVデータに変換したものをIFS上に置いています。
      非常に面倒です。
      このやりたい事の代替機能になるでしょうか。

      RE:「HTMLインターフェースを MS-Word, MS-Excel そして PDF に変換」について IKD さん [ 2月13日(金) 20時47分 ]

        ご興味を持って頂いてありがとうございます。

        HTMLインターフェースのデータをボタンひとつでExcel や PDF に変換したい、とうい話は
        良く聞きます。
        現実のところそんなムシのいい機能はないのですで、VBA と組み合わせることなよって
        この機能はAutoWebだけでなく、すべての HTMLで可能となります。

        CSVに変換というのは私たちも気付きませんでした。
        よいヒントを与えて頂きましてありがどうございます。
        早速、週明けの MTG の課題とさせていただきます。

      RE:「HTMLインターフェースを MS-Word, MS-Excel そして PDF に変換」について IKD さん [ 2月17日(火) 9時14分 ]

        お世話になります。IKD です。

        MTG の結果、CSV 化も簡単にできることがわかりました。

        まずは AutoWeb 上に限定してお話しますと 次期 AutoWeb は
        CSS+JavaScript によって画面項目が HTML上に動的に配置されます。
        これまでは画面イメージ全体が送信されていましたが
        これに対して画面全体ではなく画面の項目別に分割して送信されます。
        つまり送信ストリムは初めから画面項目に分割されているので
        容易に CSV 化できる、というわけです。
        他のモジュールについても検討を進めます

        詳細は追って HP にて発表させていただきます。
        よろしくお願いいたします。
        ありがとうございました。

    ジャーナルレシーバー 塚原一成 さん [ 3月22日(日) 19時42分 ]

      ジャーナル管理についての質問です。
      ジャーナルのサイズがかなり大きく、ハンドで削除していたのですが、
      いつからか、ジャーナルレシーバーが解放された際にサイズがクリアされるように
      なりました。
      どの設定が変更されたのでしょうか?

      RE:ジャーナルレシーバー koma さん [ 5月3日(日) 9時17分 ]

        ジャーナルの設定がMNGRCV(*SYSTEM) DLTRCV(*YES)になっているとレシーバーが切り離された時点で
        自動削除されます。
        どのバージョンからかはわかりかねます。

    回線記述を変更手順について koyo さん [ 5月20日(水) 15時16分 ]

      AS400 V5R2についてお尋ねいたします。
      ギガビットハブに合わせの回線記述を変更したいと考えています。
      ・リンク速度:10M→1000M
      ・回線速度:10M→*AUTO
      ・二重:*HALF→*AUTO
      「オペレーション・ナビゲーターでイーサネット回線記述を使用する」を参考に、回線記述をオフに変更す
      るところで、「メッセージID:CPD5960, 装置***をこの時点にオフに構成変更することはできない。」となり
      ます。ネットワークサービスを止める必要があると思いますが、簡単な手順についてご教示頂けないでしょ
      うか?

      RE:回線記述を変更手順について しろくまくん さん [ 5月22日(金) 16時38分 ]

        ネットワークサービスを止めますと、
        PCOMMによる接続も使えなくなってしまいますので、
        コンソールから操作を行う必要があります。

        コンソールから接続し、社内のイーサネット回線記述を停止し、
        構成変更を再び行ってください。
        その後、イーサネット回線記述を開始します。

        ただしその間、社内ユーザーは使えなくなります。

        RE:回線記述を変更手順について koyo さん [ 5月23日(土) 7時39分 ]

          有り難うございます。手順としてコンソールからENDTCP→WRKLIND→CHGLINETH→STRTCPで宜しいでしょ
          うか?

    SlickGrid(JQUERY)を使用したサンプルの公開をお願いします 伊集院博 さん [ 6月17日(水) 11時5分 ]

      お世話になります。
      貴社のEPSでCGI-RPGを構築しています。
      最近、エンドユーザーより「Excelみたいにできないの」とか
      表示できる情報がエミュレーターと異なり非常に多いので
      表示するまでのレスポンスが問題になっています。

      そこで調べてみた所、SlickGridというJavaScriptが無料で提供されていて
      これが非常に高速らしいという事が書いて有りました。

      仕組みを良く理解していないのでとんちんかんな話かもしれませんが、
      データを内部配列に羅列して表示させれば早くなるのではと考えています。
      EPSで時間がかかるのは大量のデータをSETFLD関数で値をセットする所なので
      このロジックが無くなれば早くなるのではないかと考えています。

      そこでEPSでSlickGridを利用する方法が良くわからないです。
      何か良いサンプルがあればと色々インターネットで調べていますが見つかりません。
      もし公開して頂けるようであればお願い致します。

    SPOOLWTRのCVTSPLFでPDF化する際にパスワードがかけられますか 伊集院博 さん [ 6月17日(水) 19時15分 ]

      タイトルの通りですが、
      SPOOLWTRのCVTSPLFでPDF化する際にパスワードがかけられますか。

      PDF化して取引先にMAILを送る仕組みを作ったのですが
      できればPDF変換する時にパスワードがかけられると
      安心かと思いまして質問しました。

    SPOOLライターのLPRについて 伊集院博 さん [ 6月18日(木) 10時30分 ]

      立て続けの質問で申し訳ございません。

      弊社では現在プリンターセッションの廃止ができないか検討しています。
      そこで貴社のSPOOLライターのLPRで対応できないものかと考えています。

      弊社では1台のレーザープリンターに対して
      3つのプリンターセッションを設定しています。
      @ストックフォームをA4横に縮小して印刷する(*STD)
      A実寸A4縦
      B実寸A4横
      利用しているメーカーは、京セラミタ、XEROXのレーザープリンターを利用しています。

      これらを制御するのにプリンターの各メーカーに依頼して
      PDTファイルを用意して頂きプリンターセッション内で変換して印字しています。

      そこでSPOOLライターのLPRを使用する際に問題なのが、
      プロンプト指定にある「メーカー機種型式」「メンバー」に設定する
      内容をどうやって用意したら良いかがわかりません。

      弊社のように各プリンターメーカー毎の@〜Bの
      設定ファイルが用意してあると利用範囲が広がると思うのですが、
      今後、設定ファイルを増やしていくような予定は無いでしょうか。

      又は、設定ファイルを作成するためのマニュアルとか解説書はないでしょうか。

      RE:SPOOLライターのLPRについて ヘルプデスク さん [ 6月18日(木) 11時8分 ]

        弊社では、ゼロックスの複合機にて検証しております。
        LPRは、ハードウェアに依存するところが大きいですので、
        弊社では、全てのメーカーのプリンターを用意して検証することは出来ません。
        お客様の責任の範囲内としてお試し下さい。
        もし、不具合やご質問がございましたら、ご遠慮なくお問い合わせください。

        よろしくお願いします。

      RE:SPOOLライターのLPRについて IKD さん [ 8月18日(火) 11時26分 ]

        LPR を受けて印刷するには

         (1)PDFを受信して印刷できるプリンター
          (2)プリンター毎のWSCファイルを用意してLPR印刷する

        の2つの方法があります。
        PDF が印刷できるプリンターであれば WSC は必要ありません。
        LPR の出力に *PDF を指定してください。
        また WSC を作成するには RTVWSCSTコマンドによってソースを
        取得できますが、この方法につきまして解説を別途追加致します。

        お知らせですが非常に簡単にローカル・プリンターにLPRで印刷できる技術を
        開発致しました。
        これはWindows の LPD を起動しておいて、それに対して IBM i から
        LPR によってスプールを送信して、そのPCの通常使うプリンタに印刷するという
        手法です。
        LPR はLPRドライバとして用意されていますので操作は STRPRTWTR によって
        可能であり用紙替えのメッセージなど、これまでの印刷装置と同じ操作で
        まかなうことができます。
        現在、このLPRドライバ関連の文書化とリリースを送球に進めております。

        くわしくは弊社HPの What's New をご覧ください。
         ( http://www.officequattro.com )

    Queryでデータをユニークに WHO さん [ 8月29日(土) 8時38分 ]

      皆さんこんにちは

      教えて頂きたい事があって書き込みします。

      現在、下記の様なデータがありましてこれをQueryやCLなどでユニークな情報にしたいのです
      <EXデータ>
      作業a@商品a@情報1 情報2
      00001  A023  123  223
      00001  A023  235  658
      00002  B003  566  689
      00003  C566  456  456
      00003  C566  899  444

      これを作業b基準にデータをユニークにしたいのです
      <加工結果>
      00001  A023  123  223
      00002  B003  566  689
      00003  C566  456  456
      ※この情報1/2は今回不使用を想定しています

      こんな事がQueryやCLで出来たら凄い助かるのです
      何方か教えて貰えませんでしょうか?

      RE:Queryでデータをユニークに ユーザーサポート さん [ 9月1日(火) 10時37分 ]

        Queryで、制御レベルを定義して、
        出力の形式を「合計のみ」にすれば、ユニークなデータのみを抽出できます。

        お試しください。

    TESTNのバグ にゃんた さん [ 10月7日(水) 14時52分 ]

      お世話になっております。
      AS/400のRPGのTESTN命令について質問です。
      以前(10年くらい前)にTESTNで数値チェック(0〜9)をしようとした際、バグがあったのですが
      現在、TESTNについてのバグは解消されていますか?
      私のコーディングではTESTNは使わなくなりましたがメンテしているPGにTESTNが使われていて調査
      しております。
      よろしくお願いします。

      RE:TESTNのバグ サポートデスク さん [ 10月8日(木) 16時28分 ]

        TESTNにバグがあったとは聞いたことがありません。
        TESTN自体の使用法は複雑ですが、RPGの演算命令ですから、簡単にはバグはないと思います。
        また、バグであるということを、どのように確認されたのでしょうか?

        どのような使い方をされて、どのような場面でのバグがあったのでしょうか?

    RPGV READ 命令 LOCK 情報の取得 NH さん [ 5月12日(木) 9時46分 ]

      RPGでレコードロックを行う方法はCHAINすればうまくできるのはわかっていますがREAD の場合ロックされている1件前のデータが表示されます。READの場合はロックされているレコード情報を取得できないのでしょうか?コーデイングは下記のようにしています。C           @READ     TAG                                             C                     SETOF                     96    レコードロック 検査用 C                     READ JM01PF                 9699                C   99                GOTO @END                                       C           *IN96     IFEQ '1'                                        C                     MOVE JAUK#     P#UK#                            C                     MOVELCPFMSG    P#CPF                            C                     CALL 'RCDLK01C'PRLKC1                           C                     GOTO @READ                                      C                     ENDIF                                          JAUK#の値は ロックされている1件前の情報になります 

      RE:RPGV READ 命令 LOCK 情報の取得 IKD さん [ 5月16日(月) 14時55分 ]

        レコード・ロックされているレコードの情報(レコードの中身:フィールド値)は読めません。
        もし読むことができればロックされていないことになります。
        ロックされているので(更新モード)では読むことはできませんが
        読み取りモードで別ファイルの定義としてオープンすれば読むことはできます。

        ロックされているレコードのRRNを読み取って、読取りモードで RRN でCHAIN するなど
        処理はやや面倒になりますが。

        RE:RPGV READ 命令 LOCK 情報の取得 NH さん [ 5月17日(火) 12時40分 ]

          回答有難うございました。ロックされているデータの項目を取得できると思っていたのが間違っていたようです。対策として プログラム状況データ構造の91- 170 桁目の検索された例外データの情報を使います。有難うございました。

    削除されたレコードがもう一度見れるか F.Jo さん [ 5月26日(木) 15時51分 ]

      物理ファイルの削除されたレコードがもう一度見れるか?(再構築未実施)

      RE:削除されたレコードがもう一度見れるか 管理人 さん [ 5月27日(金) 16時38分 ]

        このようなぶしつけな文面ではどなたも回答してくれません。
        技術や知識のある方にお願いするのですから
        それなりの礼を持った表現されないと回答者はあなたの
        部下ではないのです。

    DDSを使用したBOX命令の罫線について しゅう さん [ 6月15日(水) 21時39分 ]

      いつも勉強させていただいています
      このたび、請求書の作り替えで罫線をinch単位で帳票に出力させたく
      IBMのマニュアル等をみたところ、BOX命令なぢおAFPを使用すると
      行桁に関係なく罫線を引けることを知りましたが
      いかんせん、初めての試みのため、どのようにすれば出力が可能かを
      お教えいただきたく投稿いたしました

      試しに、DDS内にBOX命令を指定し、コンパイル時に*AFPDSを
      指定し、RPGでDDSのレコードをWRITEしましたが、
      スプールがHLD状態となります。
      ※プリンターはAFP対応プリンターではありません。

      なにか、オプションや設定方法があるのでしょうか?
      ご存じの方、ご教授頂ければ非常に助かります。

      宜しくお願いいたします。
      なお、RPG内でも16進定義(?)で可能のようですが
      DDSを使用し開発したいと考えています。

      RE:DDSを使用したBOX命令の罫線について IKD さん [ 6月16日(木) 11時59分 ]

        *AFPDS で CRTPRTF したとしてもプリンター(装置)が *AFPDS対応でなければ
        スプールが HLD になるのは当然かと思います。
        日本語対応の印刷装置は基本的に *SCS です。

        印刷罫線でBOXキー・ワードを使う例はあまり聞いたことはありません。
        印刷罫線は APW で罫線ファイルを作成して、これと印刷スプールを
        MRGAPW コマンド(APWのコマンド)で混合して罫線つきのスプールを
        作成することが一般的です。この方法で罫線つきの *SCSスプールを
        作成することができます。
        APW は有償ライセンスです。これが導入されていない場合は
        RPG で *SCSストリームで罫線を追加するしかありません。
        当然、かなり勉強が必要です。

        DSPLIB QAPS でライブラリー QAPS が見つかれば APW は導入されていますが
        見つからなければ導入されていないことになります。

    レコードロックについて NH さん [ 7月1日(金) 14時7分 ]

      レコード ロックについてお教え下さい。1.論理ファイルに対してレコードロックをかけた場合、関係する論理ファイルもレコードロック がかかっているのでしょうか? 物理ファイル 在庫マスター/ZAIKOPF  論理ファイル1             ZAIKOL1 論理ファイル2             ZAIKOL2  ZAIKOL1 にレコードロック発生した場合、ZAIKOL2 もレコードロック状態になるのでしょうか  (論理ファイルのキー設定により必ずしもレコードロックになるとは限らない ???)2.レコードロックは同一ファイルに複数レコードロックをかけることができるものでしょうか? 例:在庫マスターを読んで(READ又は CHAINで)画面表示し同時に在庫マスターにレコードロック   をかけたい3.UNLCK 命令について 指定したファイルのすべてのレコードロック状態が解除されると思っていいのでしょうか以上ご教授宜しくお願いします。

      RE:レコードロックについて IKD さん [ 7月1日(金) 22時38分 ]

        論理ファイルであっても更新用としてオープンして
        READ や CHAIN 命令でレコードを読取るとそのレコードは
        別の更新プログラムからはレコード・ロックされて読めなく
        なります。(読取り待機 .. 待機時間は CRPF, CRTLF で指定されている時間、
        省略時は 90秒の待機) 

        これは物理レコード単位のレコード・ロックでありしかも今読取った 1レコードのみの
        レコードロックです。(読取りプログラムではロックされず読取ることはできます。)

        物理レコードを排他ロックするのですからそれを基底とするすべての論理ファイルからも
        そのレコードはロックされます。

        あまり知られていないかも知れませんが ILE-RPG では更新用にオープンしているファイルでも
        READ(N) や CHAIN(N) 命令を使うとレコードを読取った時点でレコード・ロックは解除されますので
        ダミーの UPDATE命令や UNLOCK など使用する必要はありません。

        例えば SFLレコードによる更新を例にすると
        更新対象ファイルを READ 命令で読取って SFLレコードに出力するようにRPGを記述すると
        最後に READ 命令で読取ったレコードだけがレコード・ロックとして残ります。
        これは他人とそのファイルを共有して更新作業をやるとなると問題を生じる場合が
        ありますので READ ではなく READ(N) で更新レコードを読むべきでしょう。

        レコード・ロックは 1レコード単位です。
        ひとつのプログラムでひとつのファイルに対して複数のレコードがロックされることは
        ありません。

        レコード・ロックは基本的にそのレコードを更新用に他人と共有してしまったときの
        更新の入れ違いの問題を発生させなくするために必要な機能です。
        在庫レコードであれば引当済み数と引当て可能在庫数の取り合いにおいて
        レコード・ロックの機能がないと在庫が十分ないのに2人の受注者に引当て可能と
        してしまう可能性があります。

        不明な点があればもう一度お問い合わせください。



        RE:レコードロックについて NH さん [ 7月6日(水) 9時29分 ]

          > 論理ファイルであっても更新用としてオープンして> READ や CHAIN 命令でレコードを読取るとそのレコードは> 別の更新プログラムからはレコード・ロックされて読めなく> なります。(読取り待機 .. 待機時間は CRPF, CRTLF で指定されている時間、> 省略時は 90秒の待機) > > これは物理レコード単位のレコード・ロックでありしかも今読取った 1レコードのみの> レコードロックです。(読取りプログラムではロックされず読取ることはできます。)> > 物理レコードを排他ロックするのですからそれを基底とするすべての論理ファイルからも> そのレコードはロックされます。> > あまり知られていないかも知れませんが ILE-RPG では更新用にオープンしているファイルでも> READ(N) や CHAIN(N) 命令を使うとレコードを読取った時点でレコード・ロックは解除されま
          すので> ダミーの UPDATE命令や UNLOCK など使用する必要はありません。> > 例えば SFLレコードによる更新を例にすると> 更新対象ファイルを READ 命令で読取って SFLレコードに出力するようにRPGを記述すると> 最後に READ 命令で読取ったレコードだけがレコード・ロックとして残ります。> これは他人とそのファイルを共有して更新作業をやるとなると問題を生じる場合が> ありますので READ ではなく READ(N) で更新レコードを読むべきでしょう。> > レコード・ロックは 1レコード単位です。> ひとつのプログラムでひとつのファイルに対して複数のレコードがロックされることは> ありません。> > レコード・ロックは基本的にそのレコードを更新用に他人と共有してしまったときの> 更新の入れ違いの問題を発生させなくするために必要な機能です。> 在庫レコードであれば引当済み数と引当て可能在庫数の取り合いにおいて> レコード・ロックの機能がないと在庫が十分ないのに2人の受注者に引当て可能と> してしまう可能性があります。> > 不明な点があればもう一度お問い合わせください。> > > > 

          RE:レコードロックについて NH さん [ 7月6日(水) 9時56分 ]

            レコードロックニついて回答有難うございました。この件についてマニュアルをいろいろ調べましたが質問させて頂いた件についてなかなか適確な情報が見つからなかった為、質問させて頂きました。回答の内容は理解できました有難うございました。ちなみに回答にあるような内容はどこにそのような情報があるのでしょうか?追加質問当社はAS400(i5)を使用して28年になりますが、今回質問させて頂いたレコードロックを考慮せずにプログラムが作成されている為、更新したファイルの一部が変になることがあります。一つのファイルに複数のレコードロックはないことはわかりました。が下記の様な入力プログラムの時はどうしたらよいのでしょうか?入力画面              ファイル商品1        レコード1             商品2        レコード20商品3        レコード30商品4                レコード40この場合 レコード1,20,30,40のレコードに対して他プログラムから更新されないようにロック(更新中)する必要があるのですが、レコードロックは最後の 商品4にしか適用されない為レコードロックの機能は使用できない?解決方法をお教えできないでしょうか?できれば参考コーデイングサンプルでもあれば助かります。

      RE:レコードロックについて IKD さん [ 7月7日(木) 8時15分 ]

        (1)レコード排他的ロックについて
         
            DB2/400データ・ベース・プログラミングの手引き SC88-5326-01

            に記述があるはずですが、このマニュアルは最新ではないかもしれません。
           レコード・レベルの排他的ロックは RPGプログラマーの手引きにも解説はあるはずですし
            RPG解説書の CHAIN や READ にも CHAIN(N) や READ(N) の解説もあるはずです。

            レコード・レベルの排他的ロックの機能については、ほとんどのRPGプログラマーは    ご存知
        であると思います。
            これを意識しておかないと複数ユーザーからの同時更新について考慮することは
            できませんから。

        (2)ファイル・レベルの排他ロックの方法

          確かにファイル・レベルで排他ロックを行いたい場合があります。
            月次更新バッチ・プログラムの実行中に日次の入力を行われると
            整合性が合わなくなってしまいます。
          そこで月次更新のプログラムを実行中は他からの更新を禁じるようにする必要があります。
            これを行うのが ALCOBJコマンドです。
            ALCOBJ コマンドによって他から更新を行わないように、あるいはもっと強く
          読取りさえ禁止させることができます。

            ALCOBJ     OBJ((&FILLIB/&FILE *FILE *SHRUPD))
            MONMSG     MSGID(CPF1000) EXEC(GOTO CMDLBL(ERROR))
             :
            CALL       PGM(CVTS36/PCKILL)
            DLCOBJ     OBJ((&FILLIB/&FILE *FILE *SHRUPD))

            [説明]
            ALCOBJ *SHRUPD で他からの更新プログラムの実行を抑制します。
          もし ALCOBJ を実行するときは先に更新プログラムが実行中であれば
            MONMSG によって更新排他ロックができないことを監視します。
            プログラムの実行が終われば
            DLCOBJ で排他ロックを解放して終了します。

      RE:レコードロックについて IKD さん [ 7月7日(木) 11時39分 ]

        ご質問の内容が同じファイルの複数レコードを同時にレコード・ロックを
        かけたいということであればRPG では、できません。
        実現するには別々の更新ファイルとして定義しておいて
        各々にレコードを更新用として読み取ると4レコードを同時に
        更新用としてロックすることはできますが
        一般的にそのような必要性にはであったことはありません。

        RE:レコードロックについて nh さん [ 8月3日(水) 11時37分 ]

          御礼が遅くなりました。ご説明を頂いた内容をもとに今後も開発に努力していきます。

    iSeries サーバーからのデータ転送について toto さん [ 8月8日(月) 14時52分 ]

      いつもお世話になっております。

      「iSeries Access for Windows」の「iSeries サーバーからのデータ転送」にて
      iSeriesサーバーからPCにデータ転送中、エラーコード:CWBTF1015が表示されました。

      このコード:CWBTF1015は、どのようなエラーなのでしょうか?

    画面アトリビュートの設定(標識以外) よんちゃんねる さん [ 12月12日(月) 13時20分 ]

      画面DDSのアトリビュート(カラー、反転)など標識が足りなくなりアトリビュート項目を1項目
      つくりアトリビュートコードを設定しCOLORやDSPATR(RI)などの代替しようとしています。
      ただこの機能を使用したのがもうかなり以前で画面のどの項目にどのように1バイト項目を設定すれ
      ばよいかわかりません。たしか1バイト前だったと思ったのですがDDSエラーになってしまいました。
      物忘れの激しい老いぼれにご教授お願いします。

      RE:画面アトリビュートの設定(標識以外) よんちゃんねる さん [ 12月12日(月) 15時59分 ]

        > 画面DDSのアトリビュート(カラー、反転)など標識が足りなくなりアトリビュート項目を1項

        > つくりアトリビュートコードを設定しCOLORやDSPATR(RI)などの代替しようとしています。
        > ただこの機能を使用したのがもうかなり以前で画面のどの項目にどのように1バイト項目を設定す

        > ばよいかわかりません。たしか1バイト前だったと思ったのですがDDSエラーになってしまいました。
        > 物忘れの激しい老いぼれにご教授お願いします。
        > 

        自己解決しました。

        SAMPLE

        0029.00      A            ABC           10A  B  3 20
        0030.00      A                                      DSPATR(&FILD)
        0031.00      A            FILD           1A  P

        FILDにアトリビュートコードを移送でアトリビュート設定ができました。

    RUNRMTCMDについて まさお さん [ 1月10日(火) 18時58分 ]

      いつもお世話になっております。

      AS400からPC側のEXEを、RUNRMTCMDにて実行したいと考えています。
      しかし、実行してみたところ、AS400側で「必要なパスワードがないかまたは無効です」という
      結果になり、PC側でプロンプトの画面すら出力されません。
      (パラメータにてログオン用のユーザーIDとPASを指定しており、
       共に10文字以内)
      何か解決のヒントをご教示いただけないでしょうか。

      ・ASとクライアントアクセスのバージョンは共にV7R1
      ・PC側のOSはWin7
      ・PC側の設定
       →ログイン用のIDとPASを用意
       →サービス:Cwbrxd,Interactive Services Detectionを有効化
      ・クライアントアクセスの設定
       →IBM i Access for Windowsのプロパティーの着信リモートコマンドで、
        コマンドモード:通常、汎用セキュリティの許可をチェック

    スプールファイルが削除出来ない TO さん [ 1月11日(水) 18時43分 ]

      いつもお世話になっています。

      WRKSPLFでSTSがMSGWになっているスプールファイルを削除したいのですが、
      「OPT=4」と「DLTSPLF」を実行しても「MSGID=CPF34A4:印刷中のファイルは削除できない」で
      削除することが出来ません。

      プリンターの電源OFF、WRTWTRで終了、WRKCFGSTSでオフに構成変更、WRKACTJOBでJOB終了
      してみましたが、やはり「MSGID=CPF34A4」で削除することが出来ません。

      どなたか削除する方法をご教授頂けないでしょうか?

      RE:スプールファイルが削除出来ない IKD さん [ 1月13日(金) 20時55分 ]

        「CPF34A4:印刷中のファイルは削除できない」となっている原因は
        そのスプールが印刷中(WRKOUTQ で見ると「状況」が PRT になっているからである、
        と CPF34A4 のメッセージにはあります。

        回復として WRKOUTQ でそのスプールを「9= 書き出しプログラムの処 」で
        ライターを「4= 停止」で停止させてから元に戻って「4= 削除」で
        削除してください。
        とにかくライターを停止させることが必要です。

    ツール使用しOracleへデータ移行した場合 江口正彦 さん [ 5月26日(金) 16時40分 ]

      お世話になります。

      AD/400からOracleへツールを使用して、データ移行する計画です。
      その際、AS/400からはRRNの順番で抽出され、Oracleへデータ移行されるのでしょうか。
      教えてください。

      よろしくお願いいたします。

    RPGVのコンパイルの結果 NH さん [ 6月20日(火) 9時37分 ]

      大量のRPGVをコンパイルする必要があります。
      コンパイルした結果(プログラム名,コンパイル日付等)
      をファイルに出力する方法はあるのでしょうか?
      できればお教え願えれば幸いです。

    IPアドレス変更関連について IPアドレス変更関連について さん [ 6月27日(火) 10時46分 ]

      型式 : 9406-170
      バージョン : V4R3M0

      上記、2000年問題時に購入したものを未だに使用しております。
      今回ネットワークの変更の為、AS/400のIPアドレス、ゲートウェイ等を変更しないといけません。
      色々なサイトを拝見し、手順は把握できたのですが、いかんせんPCOMMしかありません。

      もし変更が失敗し、PCOMMで接続できなくなった場合、どの様な対処方法がありますでしょうか?
      コンソール機はずいぶん前に処分してしまい、PCOMMしかありません。

      対処方法があればご教示をお願い致します。

      RE:IPアドレス変更関連について IKD さん [ 6月29日(木) 20時10分 ]

        CONSOLE は専用でなくても ノートPCで代替え可能です。
        IPアドレス変更はCONSOLE を接続した状況で
        行わないと確かに危険です。

        ただし特約店に相談すればCONSOLE PCくらいは貸してくれます。
        どこにも頼らず無償で解決するのは業務用であれば
        無理だと思います。
        特約店にご相談ください。

        RE:IPアドレス変更関連について アドレス変更関連について さん [ 7月3日(月) 10時19分 ]

          IKD様

           ご返信有難うございます。
          AS/400を導入した特約店に相談しているのですがあまりに対応が遅く、返信が
          ない状況ですので自分で行おうと思い、相談させて頂きました。

          別の特約店を探して相談してみます、有難うございました。

      RE:IPアドレス変更関連について IKD さん [ 7月4日(火) 8時20分 ]

        特約店はお金にならないと動かないところは
        信頼して付き合うのが難しいですね。

        実は弊社でもCONSOLEは特約店から必要なときに借りています。
        専用CONSOLEはロー・エンドのIBM i の価格に比べて
        あまりにも高すぎます。
        ただのノートPCなのに。

        V4R3M0 から新しい中古への買換えもアリかと思います。
        新しいリリースの IBM i と驚くほど速くなっていますし
        中古も多く出回っています。(リースアップの物件とか)
        HDD も安くなっています。
        Ver5.4以降がお勧めです。

    AS/400のデータをファイルサーバーの漢字表記のフォルダ内に転送する方法  西本 和弘 さん [ 6月22日(金) 22時32分 ]

      AS/400のデータをCSV形式で、ファイルサーバーのフォルダ内に作成したいのですが、
      フォルダ名が漢字表記の為、FTP転送で行なうとエラーとなってしまいます。
      FTPで転送する方法でも、それ以外でも構いませんので方法があれば、ご教示願います。

      ・FTPコマンド
      >CD   13古川                                   
      ・エラー内容                 
      550 The filename, directory name, or volume label syntax is incorrect.

      参考:下記のコマンドでFTPで転送しようしたところ、エラーが発生しました。

      以下、コマンド
      ------------------------
      USER FTPUSR FTPUSR                                 
                                                   
            
      NAMEFMT 0                                        
        
      LTYPE C 932                                      
        
                 
      CD   03MIYAGI                                     
                                          
      CD   13古川                                      
      LCD  KEGD13                                      
        
      PUT  THTWRKV                      THTWRK.WORK      
      RENAME THTWRK.WORK                THTWRK.CSV       
      QUIT                                         

      以下、ログ
      -----------------------------------    
      > USER FTPUSR ******                             
      331 Password required for FTPUSR.                
      230 User logged in.                              
      Windows_NT                                        
                
      > NAMEFMT 0                                      
      500 'SITE NAMEFMT 0': command not understood     
      クライアントNAMEFMTは0。                       
      > LTYPE C 932                                     
                             
      FTPクライアントTYPEが変更された。サーバーTYPEは変更されていません。
      データ・タイプはC。 CCSIDの値は932。                          
                 
      > CD   03MIYAGI                
      250 CWD command successful.                              
      > CD   13古川                                    
                         
      550 The filename, directory name, or volume label syntax is incorrect. 


      このエラーが発生する為、転送できない。

      RE:AS/400のデータをファイルサーバーの漢字表記のフォルダ内に転送する方法  IKD さん [ 6月24日(日) 20時28分 ]

        エラー・メッセージのとおりです。

        CD   13古川
        550 The filename, directory name, or volume label syntax is incorrect. 

        ==> ファイル名、ディレクトリー名またはボリューム・ラベル名が文法的に正しくない。

        つまり 13古川という名前のディレクトリーに CD(Chande Directory)しようとしたが
        この名前(13古川)という名前が文法的に正しくない、とのエラーです。

        Ftp の実行にはディレクトリーを正しい名前で指定してやれば
        CD の必要はありません。
        もう一度見直してください。

        RE:AS/400のデータをファイルサーバーの漢字表記のフォルダ内に転送する方法  西本 和弘 さん [ 6月25日(月) 6時6分 ]

          ご回答頂きありがとうございます。
          AS400からCD命令を送った際に、13古川の古川が全角文字の為、シフト文字が含まれてエラーになっ
          ていると推察しました。
          (PCのコマンドプロンプトから実行すると、CD 13古川が成功した為です。)
          シフト文字が含まれているものについて、正しく処理が行われるようにする方法があれば、
          ご教示願います。

      RE:AS/400のデータをファイルサーバーの漢字表記のフォルダ内に転送する方法  IKD さん [ 6月25日(月) 7時25分 ]

        13古川 というディレクトリーは IFS のディレクトリー名でしょうか?
        シフト文字があるからという理由は推察に過ぎません。
        Windowsから13古川を指定しているのであれば
        WindowsのFtp が 全角文字を含む文字列を正しく変換していない可能性が
        原因と考えられます。
        したがって CHGFTPA で受信テーブルを QSYS/QEBCDIC などに指定してみてください。
        ただしこの方法は FTPの動作を変更してしまいますので
        他のFtpの使用に影響が出てしまいます。
        いずれにせよ漢字名をフォルダー名に使用するのは
        徒にトラブルを誘発して時間を消費しますからなるべく英文字で
        トラブルのないようにされることをお勧めします。

    CPYTOIMPFコマンドについて 西本 和弘 さん [ 5月8日(水) 12時11分 ]

      CPYTOIMPFコマンドを実行すると、論理Fのキー順にソートされる現象が発生することがあります。
      毎回発生する訳ではないので、原因が特定できずに困っています。
      CPYTOIMPFコマンドで並び順がソートされる原因と対策について、ご教授頂けると幸いです。

      ※物理ファイル、論理ファイル、実行したコマンド文を記載いたします。

      物理ファイル:YBS005   キーなし
      論理ファイル:YBS005L1  キーあり、選択条件なし

      コマンド文
      0129.00 /* &FILE:YBS005--->&CSV:YBS005V */                                     
      0130.00 CPYTOIMPF  FROMFILE(&LIBD/&FILE) TOFILE(&LIBD/&CSV) +     
      0131.00              MBROPT(*REPLACE) RMVBLANK(*BOTH)             

      上記コマンド実行後、YBS005ではなく、YBS005L1の並び順でYBS005Vに作成されている。

      RE:CPYTOIMPFコマンドについて IKD さん [ 5月10日(金) 12時35分 ]

        使用されている例を見るとCPYTOIMPF でデータ・ヘースからデータ・ベースへ
        コピーされているようですがあえてCPYTOIMPFを使う理由は
        何でしょうか?
        データ・ベースからデータ・ベースへコピーするのであれば
        一般的には CPYF を使います。
        また CPYTOIMPF ではコピー先が IFSストリーム・ファイルである
        場合に使用します。
        データ・ベースどうしのコピーにCPYTOIMPFを使う理由が
        わかりません。

        RE:CPYTOIMPFコマンドについて 西本 和弘 さん [ 5月23日(木) 17時7分 ]

          IKD様

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

          CPYTOIMPFコマンド使う理由はDDSのデータをカンマ付き文字列として、
          CSV形式でPCのフォルダに確認したい為です。

          今動いているシステムは
          CPYTOIMPFコマンドでDDSのデータ(YBS005)を3000桁の文字列のフィールドにカンマ付きでコピーし、
          FTP転送でCSVデータとして、PCのフォルダに格納しております。

          もし、CPYTOIMPF以外でも実現できる方法があれば教えて頂けますと幸いです。

      RE:CPYTOIMPFコマンドについて IKD さん [ 5月26日(日) 20時19分 ]

        ご質問の趣旨は
        CPYTOIMPF でデータ・ベースから別のデータ・ベースのひとつのフィールドに
        カンマつきのデータとしてコビーしてそれをPCにダウンロードしたいと
        いうことでよろしいでしょうか?

        どうもCSVを作りたいとの希望のようですが
        そうであればコピー先ファイルはデータ・ベースではなく
        IFSのストリーム・ファイルとすべきです。
        IBM はまさかコピー先もデータ・ベースにしてCSVを作成するとは
        想定していないはずです。
        CPYTOIMPF コマンドでは TOFILEパラメータではなく
        TOSTM パラメータをお使いください。

        IFS(統合化ファイル・システム)に関してはマニュアルを参照してください。

    ASからPCへデータ転送が上手くできない miyo さん [ 6月11日(火) 9時56分 ]

      AS(V7R2M0)から、PCへ、PCのDOSプロンプトからデータをゲットしようとしていますが、
      途中でエラーになってしまいます。
      42088件を転送したいのですが、PCのCドライブには31952件しかダウンロードできませんでした。
      QUOTE TYPE C 943 でも同様です。
      何が原因でしょうか?
      ちなみに、エラーになった行と、その直前の行の、2行だけをダウンロードすると、エラーになりま
      せんでしたので、データ自身のエラーではなさそうです。
      ----------------------------------------
      ftp> QUOTE TYPE C 932
      200 REPRESENTATION TYPE IS CCSID 932.
      ftp> GET XXXPDMLIB/WTSAP021.VLANV04B C:\EEE.TXT
      200 PORT SUBCOMMAND REQUEST SUCCESSFUL.
      150 RETRIEVING MEMBER VLANV04B IN FILE WTSAP021 IN LIBRARY XXXPDMLIB.
      426-UNABLE TO CONVERT DATA FROM CCSID 5026 TO CCSID 932: REASON 3028.
      426 DATA TRANSFER ENDED.
      ftp: 11000277 バイトが受信されました 2.26秒 4863.08KB/秒。

      RE:ASからPCへデータ転送が上手くできない IKD さん [ 6月17日(月) 17時48分 ]

        エラーが発生したときはエラー・メッセージを見ないと
        エラーの原因はつかめません。

        UNABLE TO CONVERT DATA FROM CCSID 5026 TO CCSID 932: REASON 3028

        とエラー・メッセージは表示されています。
        つまり CCSID 5026から CCSID 932 (Shift-JIS)に変換することができないと
        言っています。
        【対策】CHGFTPA で変換テーブルを明示的に指定しなおすかまたは
                PCOMM や iAccessなどの変換テーブルを保有しているアプリで
            ダウンロードしてください。

    Query/400の管理 nh さん [ 6月24日(月) 10時30分 ]

      Query/400で使用しているライブラリー名、ファイル名を一覧表又はファイルに出力
      する方法はありませんか?

      RE:Query/400の管理 IKD さん [ 6月24日(月) 16時46分 ]

        QUERY/400が参照しているファイル名やライブラリー名がどこかに
        登録されているわけではありません。

        QUERY/400を RTVQMQRYコマンドでソース・ファイルを取り出して
        プログラムで調査することはできますが RTVQMQRYコマンドには
        すべてのQUERYを取り出せる *ALLオプションはありません。
        このため DSPOBJD でQTEMPにQUERYの一覧を抽出してから
        CLPで LOOPして RTVQMQRY でソースに取出してから
        ソース内を検索するプログラムを書く必要があります。
        難しくはありませんが結構、面倒な作業になります。

        RE:Query/400の管理 nh さん [ 6月25日(火) 11時27分 ]

          再度調べなおしたところ、DSPPGMREF コマンドの オブジェクト・タイプ
          の指定に *QRYDFN がありました。*QRYDFN 指定,出力ファイル指定して実行すると
          ライブラリー名、ファイル名が正しく出力されました。
          ライブラリー名、ファイル名がブランクの場合 Query を再度作成しなおせば
          正しく出力されます。

    WRITEした際のRRN SK さん [ 10月16日(月) 15時54分 ]

      WRITEした際のRRNを取得する方法はありませんでしょうか?

      他社のRRNを取得する可能性があるので、読み直しや最終+1は避けたいです。

      RE:WRITEした際のRRN SK さん [ 10月16日(月) 15時59分 ]

        削除済みレコードを再利用している場合も困りますね。

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