OSCアプリケーション

本章では、OSCアプリケーションで実際の業務ロジックが実装されたプログラムが実行される前に必要な操作を中心に説明します。

1. 概要

OSCサーバーで動作するアプリケーション・プログラムは、COBOL、PL/I、Cプログラミング言語で開発されます。OSC COBOL、PL/I、Cプログラムは、一般COBOL、PL/I、Cプログラムとは異なり、EXEC CICS文、EXEC DLI文、EXEC SQL文を使用してシステム・リソースにアクセスします。

アプリケーションの開発者は、作成したプログラムをコンパイルして、生成されたバイナリをデプロイします。コンパイルする前に、前処理が必要な場合は前処理を行います。デプロイされたプログラムは、OSC SDテーブルにプログラム・リソース定義を登録した後、OSCシステムを起動すると動作します。

本章では、UNIXシェルを使用した開発準備プロセスについて説明します。

  1. OpenFrame Studioを利用してアプリケーションを開発することもできます。OFStudioについ ては、OpenFrame Studio『ユーザーガイド』を参照してください。

  2. OSCアプリケーション・プログラムでマップを使用する場合は、マップの開発と準備も一緒に 行われる必要があります。マップについては、OpenFrame OSC『マッピングサポートガイド』 を参照してください。

2. ソースの前処理

ソースの前処理は、メインフレームCICSのために作成されたCOBOL、PL/I、Cアプリケーションのプログラム・ソースをUNIX用のCOBOL、PL/I、Cコンパイラーでコンパイルできるように変換する作業です。

以下は、COBOL、PL/I、Cアプリケーションのプログラム・ソースを前処理する手順です。

  • COBOL

    COBOLプログラム・ソースの前処理は、以下の4段階で行われます。

    1. COBOL構文の前処理(cobolprep)

    2. OSC COBOL構文の前処理(osccobprep)

    3. EXEC DLIコマンドの前処理(dliprep)

    4. EXEC CICSコマンドの前処理(osccblpp)

    EXEC CICSコマンドを使用するすべてのCOBOLプログラムは、osccblppツールにより前処理します。cobolprep、osccobprep、dliprepは、必要な場合に使用します。

  • PL/I

    PL/Iプログラム・ソースの前処理は、EXEC CICS構文の前処理プロセスで行います。EXEC CICSコマンドを使用するすべてのPL/Iプログラムは、oscplippツールにより前処理する必要があります。

  • C

    Cプログラム・ソースの前処理は、EXEC CICS構文の前処理プロセスで行います。EXEC CICSコマンドを使用するすべてのCプログラムは、osccprepツールにより前処理する必要があります。

本節で紹介する各ツールの詳しい使用方法については、OpenFrame OSC『ツールリファレンスガイド』を参照してください。あるいは、システムのシェルで[-h]オプションを実行して確認することもできます。

2.1. cobolprep

cobolprepは、COBOL言語の構文を変換する前処理を行うツールです。

メインフレームとオープン環境は互いに異なるシステムをベースにしているため、オープン環境で提供するCOBOLコンパイラーとメインフレームのコンパイラーは同じではありません。そのため、オープン環境でメインフレームのCOBOLプログラムを起動するには、メインフレームで使用するCOBOL言語の構文をオープン環境に合わせて変更する前処理が必要になります。

以下の場合に、COBOLアプリケーションのプログラム・ソースの前処理が必要です。

  • オープン環境用のコンパイラーが認識できないか、サポートしていないCOBOL構文

  • 特定の機能を使用するために、追加的にメインフレームで使用するCOBOLアプリケーションのプログラム・ソースの前処理が必要な場合

以下は、COBTEST.cobファイルを前処理して、cobolprep_COBTEST.cobファイルを現在のディレクトリに作成する例です。

$ cobolprep COBTEST.cob

2.2. osccobprep

osccobprepは、OSCで使用されるCOBOLプログラムの中でメインフレーム環境の特徴のためUNIXのCOBOLコンパイラーによって正常に処理できない構文を前処理し、OSCシステムに合わせてコマンドを追加し、デバッグなどの用途で前処理するツールです。現在は、BLL、BMSMAPBR、EDFの前処理機能があります。

前処理の結果ファイルは、結果ファイル名または接頭辞をオプションで指定しない場合、ファイル名に「osccobprep_」という接頭辞が付きます。

BLL(Base Locator for Linkage)は、IBMのメインフレームCOBOLコンパイラーの中で、OS/VS COBOL以下の旧バージョンでサポートする特殊な構文構造です。詳しい説明は、IBMの『CICS Application Programming Guide』を参照してください。

使用方法

以下は、osccobprepツールの実行方法です。

Usage: osccobprep [options] file
  • [options]

    オプション 説明

    [-V]

    Verboseモードで実行します。

    [-a]

    BMSMAPBRの前処理を行います。

    [-b]

    BLLの前処理を行います。

    [-c]

    動的呼び出し機能やCBLPSHPOP機能を使用する場合に指定します。OSCシステムの基本機能であり、デフォルトで使用することをお勧めします。

    [-d]

    EDFの前処理を行います。

    [-f postfix]

    コピーブック・ファイルの拡張子を指定します(ピリオド(.)が使用された場合、ピリオドを含みます)。

    [-p dir]

    コピーブック・ファイルが存在するディレクトリ・パスを指定します。

    [-o1 prefix]

    前処理の結果ファイル名に付ける接頭辞を指定します。

    [-o2 file]

    前処理の結果ファイル名を指定します。

    [-o1]オプションと[-o2]オプションが一緒に使用された場合、[-o2]オプションが優先されます。

    [-h]

    ツールのヘルプを表示します。

    [-v]

    ツールのバージョン情報を表示します。

  • 入力項目

    項目 説明

    file

    前処理するファイル名を指定します。

使用例

以下は、osccobprepツールを使用してTCOB.cobプログラムのソースコードを前処理して、osccobprep_TESTCOB.cobファイルを作成する例です。プログラムで使用するコピーブックの拡張子は「.cob」、コピーブックのディレクトリ・パスは「$OPENFRAME_HOME/ osc/Copybook」に設定しています。

$ osccobprep -b -f .cob -p $OPENFRAME_HOME/osc/Copybook TESTCOB.cob

2.3. osccblpp

osccblppは、OSCで使用されるCOBOLアプリケーションのプログラム・ソースに存在するEXEC CICSコマンドを前処理するツールです。特に指定しない場合は、結果ファイル名に「osccblpp_」という接頭辞が付きます。

使用方法

以下は、osccblppツールの実行方法です。

Usage: osccblpp [-c] [-nl] [-ne] [-n] [-V] [-p <prefix>] <file> ...
     | osccblpp [-c] [-nl] [-ne] [-n] [-V] [-p <prefix>] [-o <output>] <file>
     | osccblpp [-h | -v]
  • [options]

    オプション 説明

    [-c]

    DFHCOMMAREAを追加しません。

    [-n]

    EXEC CICSコマンドの前処理を行いません。

    [-nl]

    データ部のLINKAGEセクションと手続き部でDFHCOMMAREAとDFHEIBLKを変更しません。

    [-ne]

    LINKAGEセクションにDFHEIBLKを追加しません。

    [-o output]

    出力ファイルの名前を指定します。

    [-p prefix]

    出力ファイル名の接頭辞を指定します。

    [-V]

    Verboseモードで実行します。

    [-h]

    ツールのヘルプを表示します。

    [-v]

    ツールのバージョン情報を表示します。

  • 入力項目

    項目 説明

    file

    前処理するCOBOLプログラムのソース・ファイルを指定します。一度に複数のモジュールを指定することができます。

使用例

以下は、SAMPLE00.cobファイルを前処理して、osccblpp_SAMPLE00.cobファイルを作成する例です。

$ osccblpp SAMPLE00.cob

2.4. oscplipp

oscplippは、OSC PLIアプリケーションのプログラム・ソース内に存在するEXEC CICSコマンドを前処理するツールです。特に指定しない場合は、結果ファイル名に「oscplipp_」という接頭辞が付きます。

使用方法

以下は、oscplippツールの実行方法です。

Usage: oscplipp [options] file ...
  • [options]

    オプション 説明

    [-d]

    前処理に関連するデバッグ・メッセージを出力します。

    [-f]

    外部プロシージャ・コールに対し、FETCH文を追加します。

    [-l]

    内部スキャナーに関連するデバッグ・メッセージを表示します。

    [-m]

    MF COBOLと連携する場合に指定します。

    [-o file]

    結果ファイルの名前を指定します。

    [-y]

    構文解釈の段階でのデバッグ・メッセージを表示します。

    [-I dir]

    インクルード・ファイルを検索するディレクトリ名を指定します。

    [-V]

    Verboseモードで実行します。

    [-h]

    ツールのヘルプを表示します。

    [-v]

    ツールのバージョン情報を表示します。

  • 入力項目

    項目 説明

    file

    前処理するPL/Iプログラムのソース・ファイルを指定します。一度に複数のモジュールを指定することができます。

使用例

以下は、sample00.pliファイルを前処理して、oscplipp_sample00.pliファイルを作成する例です。

$ oscplipp sample00.pli

2.5. osccprep

osccprepは、OSCで使用されるCプログラムの中でUNIXのCコンパイラーによって正常に処理できない構文を前処理し、OSCシステムに合わせてコマンドを追加する前処理ツールです。

前処理の結果ファイル名や接頭辞をオプションで指定しない場合、ファイル名に「osccprep_」という接頭辞が付きます。[-o]オプションを指定していない場合、拡張子は「.c」になります。

前処理プロセスでは、OSCが提供するdfheiptr.hヘッダー・ファイルを追加し、EXEC CICSで始まるコマンドをOSCが提供する関数に変更します。

[-o]オプションを指定しない場合は拡張子が「.c」に生成されるため、拡張子が「.c」のファイルは入力ファイルとして使用できません。

使用方法

以下は、osccprepツールの実行方法です。

Usage: osccprep [-p <prefix>] [-o <output>] [-V] <file> ...
     | osccprep [-h | -v]
  • [options]

    オプション 説明

    [-p <prefix>]

    前処理の結果ファイル名に付ける接頭辞を指定します。

    [-o <output>]

    前処理の結果ファイルの名前を指定します。

    [-p]オプションと[-o]オプションが一緒に使用された場合、[-o]オプションが優先されます。

    [-V]

    Verboseモードで実行します。

    [-h]

    ツールのヘルプを表示します。

    [-v]

    ツールのバージョン情報を表示します。

  • 入力項目

    項目 説明

    file

    前処理するファイル名を指定します。拡張子が「.c」のファイルは指定できません。

使用例

以下は、osccprepツールを使用してTEST.ccsプログラムのソースコードを前処理して、osccprep_TEST.cファイルを作成する例です。

$ osccprep TEST.ccs

以下は、osccprepツールを使用してTEST.ccsプログラムのソースコードを前処理して、TEST.cファイルを作成する例です。

$ osccprep -V -o TEST.c TEST.ccs

3. コンパイル

以下は、COBOL、PL/I、Cアプリケーションのプログラム・ソースのコンパイルに関する説明です。

  • COBOL

    COBOLコンパイラーを利用して共有オブジェクトを作成します。共有オブジェクト名はCOBOLプログラム・ソースのPROGRAM-ID値と同じである必要があります。

  • PL/I

    PL/Iコンパイラーを利用して共有オブジェクトを作成します。共有オブジェクト名はPL/Iプログラム・ソースのプロシージャ名と同じである必要があります。

  • C

    Cコンパイラーを利用して共有オブジェクトを作成します。Cプログラム・ソースには共有オブジェクト名と同じ名前の関数が存在する必要があります。(main関数を持つソースは、前処理の際に、main関数名をソース・ファイル名に変更します)

本節の説明で、コンパイラーと共有オブジェクトの作成に関する詳細は、COBOL、PL/I、Cコンパイラーのマニュアルを参照してください。

4. デプロイおよび適用

OSCシステムが提供するosctdlinitツールとosctdlupdateツールを使用して、コンパイルされたプログラムをOSCリージョンごとにデプロイおよび適用します。

プログラムのデプロイおよび適用方法は、以下のとおりです。

  1. プログラムを保存するディレクトリを、OSCアプリケーション・サーバーの環境設定であるosc.{servername}サブジェクト、GENERALセクションのTDLDIRキーに設定します。TDLDIRキーに設定したディレクトリの配下にmodディレクトリとrunディレクトリが存在しない場合は直接作成します。TDLDIRキーを設定しない場合、デフォルトで${OPENFRAME_HOME}/osc/region/{リージョン名}/tdlディレクトリを参照します。

  2. TDLDIRディレクトリの配下のconfigディレクトリにtdl.cfgファイルを作成します。tdl.cfgファイルは、インストーラーが提供するサンプル・ファイルを利用します。

    以下は、tdl.cfgファイルの作成例です。PL/Iプログラムを使用する場合でも、LANG項目はCOBOLに指定します。

    # shared memory version (1|1D|2|2D|3)
    VERSION=3
    
    # shared memory key
    SHMKEY=0x3AB6
    
    # shared memory and file creation permission
    IPCPERM=0750
    
    # number of dynamic loadable modules, rouded up to powers of 2
    MAXMODULES=2000
    
    # language environment
    LANG=COBOL
    
    # keeping extension
    KEEPEXT=asmo

    アセンブリ・モジュール(.asmo)を使用する場合は、上記例のようにKEEPEXTオプションに拡張子名を指定し、osctdlupdateツールを実行します。

  3. OSCリージョンごとにosctdlinitツールを実行します。TDLDIRディレクトリの配下のconfigディレクトリにあるtdl.cfgファイルの設定に従って初期化が行われます。

  4. コンパイルされたプログラムのバイナリは、TDLDIRディレクトリの配下のmodディレクトリに保存します。

  5. osctdlupdateツールにOSCリージョン名とプログラム名を指定してプログラムをデプロイします。ファイルの拡張子は省略し、プログラム名のみを指定します。アセンブリ・モジュールの場合は、ファイルの拡張子を省略できません。

    1. osctdlrmツールを使用して、使用中の共有メモリの情報を削除することができます。メモリ情報を削除した後、再度共有メモリを作成するには、osctdlinitツールを使用します。

    2. 環境設定のためのサブジェクトの設定方法については、OpenFrame OSC『環境設定ガイド』を参照してください。

5. プログラムとトランザクションの登録

管理者は、アプリケーション・プログラムを登録するためにプログラムとトランザクション定義マクロを準備し、事前にOSC SDテーブルに登録しておく必要があります。

以下は、OIVPMAINプログラムとOIVPトランザクションを定義するリソース定義マクロの例です。以下のマクロ・ファイルをoscsdgenツールを使用してOSC SDテーブルに登録します。または、OpenFrame Manager[OSC] > [Regions] > [System Definitions]メニューから登録・変更・削除することができます。

DEFINE  PROGRAM(OIVPMAIN)
        GROUP(OIVP)
        LANGUAGE(COBOL)

DEFINE  TRANSACTION(OIVP)
        GROUP(OIVP)
        PROGRAM(OIVPMAIN)
        TWASIZE(255)
  1. プログラムとトランザクション・リソース定義についての詳細は、OpenFrame OSC『リソース定義ガイド』を参照してください。

  2. OpenFrame Manager[OSC] > [Regions] > [System Definitions]メニューについての詳細は、OpenFrame Manager『ユーザーガイド』を参照してください。