JP1でCOBOLからの返り値を取得する方法

このQ&Aのポイント
  • COBOL(NetExperess5.0)で作成したプログラムをexe形式にしてJP1のAJS2で動かす方法についてご教示ください。
  • JP1AJS2でCOBOLの実行結果を返り値として取得する方法を教えてください。その後の処理の判定に使用したいです。
  • COBOL側でSTOP RUN 99 と終了した場合、JP1で次処理へ進めない問題が発生します。他の方法をご存知の方は教えてください。
回答を見る
  • ベストアンサー

JP1でCOBOLからの返り値を取得したい

COBOL(NetExperess5.0)で作成したプログラムをexe形式にしてJP1のAJS2で動くようにしています。 このときJP1AJS2でCOBOLの実行結果を返り値として取得して、その後の処理の判定に使用したいと考えてるのですが、どのように設定すればよいのでしょうか。 COBOL側でのコーディング例とJP1での設定例を教えていただけませんか。 ちなみにCOBOLのコーディングでSTOP RUN 99 といった感じで終了させると、異常終了になってしまうのでJP1で次処理へ進めないのです。 STOP RUNで操作するわけではないのかなとも思っていますが、他の方法とかご存知の方教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

JP1に詳しいものではありませんが、一般的な考え方として参考になればと回答します。 >STOP RUN 99 といった感じで終了させると、異常終了になってしまうのでJP1で次処理へ進めないのです。 ここで、異常終了にしないで次の処理に進めるか等の判定を行う機能はJP1には無いですか? 通常はジョブステップの実行結果を判定して次に実行するジョブステップをコントロールするような機能があると思いますが如何でしょうか。

kuriosprj
質問者

お礼

大変ヒントになりました。 確かにJP1での判定機能で閾値を設定すればいいという事がわかりました。 ありがとうございました。

関連するQ&A

  • COBOLの文字列検索を教えて下さい。

    cobol初心者です。 「100バイトのレコードを複数件読み込み、決まった文字列を検索する」というPGMを作ろうとしています。 03 REC-1 PIC X(100) 03 REC-2 PIC X(05) という定義があるとき REC-1 = "abcdefghijklmnopqrstu…"       というデータに対して、 REC2 = "hijkl"                    の検索をしたい場合 どのようなコーディングで調べることができるのでしょうか? 何レコード目の何バイトでヒットしたかを表示したいので、 INSPECT命令は使用せず、REC-1を1バイト単位で取り出して、 1文字ずつ判定しようと思っています。 レコードを越えてのヒットは行いません。 この場合配列を使うという考え方は正しいですか? 読み込んだ100バイトのレコードを1バイト単位で取り出して比較するには、 REDEFINEを用いて再定義すると考えています。 その場合のREADでの読み込み方がよくわかりません。 コーディング例等を載せてもらえると助かります。 cobolをはじめたばかりで、基本的な知識が抜けているかもしれません・・・ よろしくお願い致します。

  • LinuxへのJP1/Base、AJS3設定

    お世話になります。 日立の自動運用ツールJP1/Base、AJS3の自動起動、終了の設定でお伺いします。 過去Windowsサーバでの同ソフトの構築は経験しましたが、このたび初めてLinuxで環境構築を行うことになりました。 しかしながら私はLinux、UNIXはまったくの素人です。 マニュアルを確認しましたが JP1/Baseは起動シェルをモデルファイルから複写 JP1/AJS3は起動シェルのコメントを外す という記述があり、これで完了との記述でした。 Linuxではシステム起動時に自動起動、終了でOS側への設定は必要ないのでしょうか、または予め設定されているのでしょうか? また必要ないと仮定した場合、起動順序(JP1/Base→JP1/AJS3)は守られているのでしょうか? 今回対象のOSはRedHat5.7です。 ご指導よろしくお願いします。

  • COBOLで文字変数Aと絶対に一致しない特殊値は?

    COBOLでプログラミングをしています。ある変数AとBがあり、どちらも領域はPIC X(1)です。 この変数Aを、いかなるときでも変数Bと一致させたくないとき、Bに入れる「END OF FILE」のような特殊な値って無いのでしょうか? そのような値が存在するならば、AかBにその特殊な値を入れておけばいいと思うのですが、 もし無いとすれば、以下のような処理をスマートにCOBOLで作るには、どのように作るのが一般的ですか? PERFORM文を用いて終了条件がA=Bのとき、 最初の処理では必ずPERFORMの中の処理を行い、 2回目からは終了条件で実行するかどうかを判定するような処理 よろしくお願いします。

  • MicroFocusを使ったCOBOLプログラミング

    MicroFocusを使ったCOBOLプログラミング 環境:MicroFocusNetExpress4.0 OS:WinXP 業務でCOBOLを使っているのですが、 実行結果に疑問があり投稿しました。 ■PGのイメージ X PIC 9(3) O-SUM PIC 9(3) COMPUTE O-SUM = X + X O-SUMに、X + Xの計算結果を与えるものです。 X=1の場合は、O-SUM=2となります。 異常値があった場合の検証として、Xが「A」となるINデータを用意して 実行したところ、デバッグモードでは 「数値項目に異常があります」とポップアップが表示されそれ以上実行されませんが、 ビルドして作られたEXEを実際に動かしてみると、異常終了しません。 (コマンドプロンプトからEXEを実行しています) さらに、O-SUMの計算結果が2となるデータが出来あがりました。 X=BだとO-SUM=4、X=DだとO-SUM=8…というように、 A→1 B→2 C→3 D→4 と暗黙で変換されているように見受けられる結果となりました。 なぜ変換されたような結果になりデータ異常を検知できないのか、 また、変換されないよう回避するための方法と、 データ異常を検知する方法をご存知の方がみえましたら、ご教示ください。

  • JP1/IM-Manager とTELstaff

    よろしくお願いします。 サーバジョブの監視に「JP1/Integrated Management - Manager」を採用し、ジョブの異常終了時に「JP1/Integrated Management - TELstaff」を使用してメールを送信する予定です。メールの送信について はJP1/IM-Manager の自動アクション機能を使用する予定です。 この場合 ・JP1/IM-Manager とTELstaffは同じサーバにインストールされている必要がありますか? ・またジョブ運用はJP1/AJS3を採用しますが、上記メール送信をもっと簡易に実現する方法があれば教えて下さい。 以上、よろしくお願いします。

  • COBOL 9(02)で定義した変数にマイナス値をセットすると?

    COBOLについて教えてください。 現在、既存のシステム(COBOL)を机上でチェックしているのですが、 関数からの戻り値変数を (例)RC 9(02) で定義して、 異常発生時に、MOVE -1 で値セットしているロジックがありました。 S9タイプではないので、誤動作を起こすと思うのですが、 実際このような処理を行うと、変数RCにはどんな値がセットされるのでしょうか? 実行環境が無いので、動作確認ができず、困っています。(バグかと思うのですが、該当のロジックは幸いにも今まで実行されていなかったようです) よろしくお願いします。

  • COBOLのプログラムがビルドできません;;

    今年の4月からシステム関係の会社に就職する者です。 就職にあたって会社からの課題としてCOBOLのプログラムを転記して実行するというものが出たのですが、どうしてもビルドエラーになってしまい困っています。 IDENTIFICATION DIVISION. PROGRAM-ID.  KADAI005 ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. / DATA DIVISION. FILE SECTION. / WORKING-STORAGE SECTION. 01 W-九九TBL. 03 W-行 OCCURS 9. 05 W-列 OCCURS 9. 07 W-積 PIC 9(02). 01 W-指標1 PIC 9(02). 01 W-指標2 PIC 9(02). 01 W-合計 PIC 9(04). / PROCEDURE DIVISION. メインコントロール        SECTION. メインコントロールS. メインコントロール   PERFORM 初期処理. PERFORM 主処理. PERFORM 終了処理. メインコントロールE. EXIT. 初期処理             SECTION. 初期処理S. ワークエリアの初期化 MOVE ZERO TO W-九九TBL W-合計. 初期処理E. EXIT. 主処理              SECTION. 主処理S. PERFORM VARYING W-行 FROM 1 BY 1 UNTIL W-行 > 9 PERFORM VARYING W-列 FROM 1 BY 1 UNTIL W-列 > 9 COMPUTE W-積(W-行,W-列) = W-行 * W-列      COMPUTE W-合計 = W-合計 + W-行 * W-列    END-PERFORM END-PERFORM. DISPLAY "合計 =" W-合計. DISPLAY "5×4=" W-積(5,4). DISPLAY "2×7=" W-積(2,7). 主処理E. EXIT. 終了処理             SECTION. 終了処理S. プログラム終了 STOP RUN. 終了処理E. EXIT. 提出期限が明日に迫っていて焦っています; 回答よろしくお願いします。

  • COBOLのCALL文がいまいちつかめません。

    いつもお世話になっています。 WINDOWSでCOBOL85を使いながら、COBOLの勉強をしています。 JAVAを基本情報試験のために勉強したくらいの初心者です。 シーケンシャルファイルでマッチング処理を行う、 小さなプログラムを課題としている途中、 CALL文を使ってサブプログラムを作ってみてくださいと言われました。 そこで質問なのですが、 メインプログラムの集団項目をUSING指定で引数として、 サブプログラムで受け取り、処理をするまではいいのですが、 戻り値をどのようにして受け取ればいいのかが イメージがつかめません。 ・戻り値を受け取るための命令 ・戻り値は1つだと思うのですが、どの変数?に返ってくるのか (集団項目ごと返ってくる?) など、何かあればご助言をいただけないでしょうか? ソースは次の通りです。 よろしくお願いいたします。 ■メイン IDENTIFICATION DIVISION. PROGRAM-ID. MACHING_TEST. (省略) WORKING-STORAGE SECTION.   01 JUDGE_F.    03 KEY_F     PIC 9(01).    03 CHANGE_F     PIC X(06).    03 EXCEP_M     PIC 9(01). (省略) CALL "JUDGE_FEMALE" USING JUDGE_F ON EXCEPTION   DISPLAY N"エラーです。プログラムを終了します"   STOP RUN   NOT ON EXCEPTION    IF EXCEP_M = 9 THEN MOVE "ERRER!" TO FEMALE_OUT ELSE  IF EXCEP_M = 1 THEN MOVE CHANGE_F TO  FEMALE_OUT  END-IF    END-IF    END-CALL. (以下略) ■サブ IDENTIFICATION DIVISION. PROGRAM-ID. JUDGE_FEMALE. DATA DIVISION. LINKAGE SECTION. 01 JUDGE_F.  03 KEY_F PIC 9(01).  03 CHANGE_F PIC X(06).  03 EXCEP_M PIC 9(01). PROCEDURE DIVISION USING JUDGE_F. IF KEY_F = 1  THEN   MOVE "オトコ" TO CHANGE_F   MOVE 1 TO EXCEP_M  ELSE   IF KEY_F = 2 THEN  MOVE "オンナ" TO CHANGE_F  MOVE 1 TO EXCEP_M ELSE  MOVE 9 TO EXCEP_M END-IF END-IF. PROGRAM-END.  STOP RUN.

  • JP1からSASプログラムが起動できない

    お世話になっております。 質問させてください JP1マネージャが登録されているAサーバより JP1エージェントが登録されているBサーバに格納されている test.batをジョブユニットから起動することはできるのですが。 そのなかでSAS9.3のプログラムを非対話で起動しようとすると 「sas.exe -SYSIN プログラムファイルのパス」 終了コード111となって異常終了してしまいます。 (111はJP1のジョブに戻ってきた値です) SAS以外のバッチのコマンド等は実行できています。 終了コード111の意味をご存じないでしょうか

  • cobolのコントロールブレイク

    趣味の一環としてcobolのファイル入出力プログラムを勉強しているのですが、 リング構造を利用したコントロールブレイク機能の実装で躓いてしまいました。 知恵をお貸しいただければ幸いです。 ソースコードここから IDENTIFICATION DIVISION. PROGRAM-ID. BREAKDV1. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT INF ASSIGN TO "C:\cobol\sample.cbl" STATUS FST. SELECT OUF ASSIGN TO "C:\cobol\data.txt". DATA DIVISION. FILE SECTION. FD INF. 01 F1R PIC X(72). WORKING-STORAGE SECTION. 01 INKEY PIC 9(01). 01 SAVKEY PIC 9(01). 01 FST PIC X(02). PROCEDURE DIVISION. ACCEPT INF OPEN INPUT INF OUTPUT OUF PERFORM 読込処理 THRU 読込出口 PERFORM UNTIL INKEY = HIGH-VALUE MOVE SAVKEY TO INKEY PERFORM UNTIL INKEY NOT = SAVKEY PERFORM 同一処理 THRU 同一出口 PERFORM 読込処理 THRU 読込出口 END-PERFORM PERFORM 合計処理 THRU 合計出口 END-PERFORM PERFORM 総計処理 THRU 総計出口 CLOSE INF OUF STOP RUN. 同一処理. DISPLAY "SAME" WRITE F1R DISPLAY F1R 同一出口. EXIT. 合計処理. DISPLAY "TOTAL" 合計出口. EXIT. 総計処理. DISPLAY "END" 総計出口. EXIT. 読込処理. PERFORM UNTIL FST NOT "00" READ INF END MOVE HIGH-VALUE TO INKEY NOT END CONTINUE END-READ END-PERFORM 読込出口. EXIT. ソースコードここまで(処理内容は仮のものです) 参考文献ではこのような組み方でよいはずなのですが、コンパイルした際に BREAKDV1.cbl:19: Error: syntax error, unexpected "end of file" とエラーが発生してしまいました。 このエラーを解消する方法をお教え下さい。 開発環境: Windows7SP1+MinGW32、サクラエディタ

専門家に質問してみよう