バージョン 4.2.5
 —  オペレーション  —

Natural ニュークリアスへの Natural オブジェクトのリンク

Natural ニュークリアスは、Natural カーネルを構成するサービスプログラム(メモリ管理、文字列操作、オペレーティングシステムインターフェイス、コンパイラ、ランタイム環境など)の集合体です。 これは、オペレーティングシステムや TP システムに依存しません。

このドキュメントでは、Natural オブジェクトを Natural ニュークリアスにリンクする利点を説明し、さらに前に進む方法を示します。

以下のトピックについて説明します。


利点

Natural オブジェクトを Natural ニュークリアスにリンクすると、以下の利点があります。

Top of page

ULDOBJ ユーティリティ

Natural カタログ化オブジェクトを Natural ニュークリアスにリンクするには、ULDOBJ ユーティリティを使用します。 ULDOBJ ユーティリティを使用して、Natural カタログ化オブジェクトからオブジェクトモジュールを生成し、Natural ワークファイルに書き込みます。 次に、生成されたオブジェクトモジュールをリンケージエディタで処理し、Natural ニュークリアスにリンクします。

z/OS および z/VSE 環境:Natural 共有ニュークリアスを使用している場合は、生成されたオブジェクトモジュールはニュークリアスの環境依存部分にリンクする必要があります。

Top of page

ULDOBJ を使用したオブジェクトモジュールの生成

Start of instruction setULDOBJ ユーティリティを呼び出すには

  1. ライブラリ SYSMISC にログオンし、ULDOBJ コマンドを発行します。

      10:12:19            ***** NATURAL OBJECT MAINTENANCE *****           2005-01-05  
      User: XYZ                 - NATURAL ULDOBJ UTILITY -          Library: SYSMISC
                                                                    Opsys .. z/OS
                                                                                    
                                                                                    
                          Specify parameters below ....                        
                                                                                    
                                    Object ...... ________    (Enter '.' to exit)
                                    Library ..... SYSMISC_
                                    OP System ... ________                          
       
     
     
     
     
     
      
    
  2. 以下のパラメータを指定し、確定します。

    Object 処理されるカタログ化オブジェクトの名前。 オブジェクトは、プログラム、サブプログラム、サブルーチン、ヘルプルーチン、またはマップのいずれでもかまいません。
    Library カタログ化オブジェクトを含むライブラリの名前。
    OP System

    オブジェクトモジュールが生成されるオペレーティングシステムの名前 (オブジェクトモジュールが従うルールはオペレーティングシステムごとに異なります)。以下のいずれかのオペレーティングシステムの名前を指定する必要があります。

    z/OS z/OS システム
    z/VSE z/VSE システム
    BS2000 BS2000/OSD システム
    CMS VM/CMS システム

    ULDOBJ ユーティリティに、処理された各オブジェクトについて以下の情報を含むレポートが表示されます。

    最初の入力のデータが処理されると、ULDOBJ ユーティリティに別のオブジェクトとライブラリを入力するプロンプトが表示されます。 同じ Natural ワークファイル用に複数のオペレーティングシステムのオブジェクトモジュールを生成することは意味がないので、オペレーティングシステムの入力は要求されません。

Start of instruction setULDOBJ ユーティリティを終了するには

Top of page

サブルーチンのリンクに関するその他の考慮事項

カタログ化オブジェクトは、ULDOBJ ユーティリティでアンロードし、Natural ニュークリアスにリンクした後は、Natural システムファイルから削除してかまいません。

ただし、これは "サブルーチン" タイプのオブジェクトには当てはまりません。 サブルーチンには以下の 2 つの名前があります。

Natural はこれら 2 つの名前を内部的に関連付けますが、これはカタログ化オブジェクトが Natural システムファイル内に存在している場合のみ可能です。 カタログ化オブジェクトが削除されると、この関連付けは失われ、ニュークリアスにリンクされたサブルーチンは実行できなくなります。

Top of page

オブジェクトモジュール生成のオペレーティングシステム依存性

オブジェクトモジュールは、オペレーティングシステムによって異なる方法で生成されます。 以下のような違いがあります。

プラットフォーム: 要件:
z/OS

NAME 制御ステートメントがオブジェクトモジュールの最後のカードとして生成されます。 これは置換機能を指定します。 次に例を挙げます。

         
NAME TEST (R)

TEST はカタログ化オブジェクトの名前です。

z/VSE

オブジェクトモジュールのフォーマットは LIBR になります。 CATALOG 制御ステートメントがオブジェクトモジュールの最初のカードとして生成され、"/*" が最後のカードとして生成されます。 次に例を挙げます。

         
CATALOG TEST.OBJ REPLACE-YES
... ... object module ...
/+

TEST.OBJ はカタログ化オブジェクトの名前です。

LIBR ユーティリティの実行時に、SYSIPTULDOBJ ユーティリティによって作成されたワークファイルに割り当てます(ASSIGN SYSIPT=work-file-1)。

BS2000/OSD

オブジェクトモジュールのフォーマットは LMS になります。 ADD 制御ステートメントがオブジェクトモジュールの最初のカードとして生成され、END ステートメントが最後のカードとして生成されます。 次に例を挙げます。

         
ADDR >TEST
... ... object module ...
END

LMS ユーティリティの実行時に、SYSDTAULDOBJ ユーティリティによって作成されたワークファイルに割り当てます(SYSFILE SYSDTA=work-file-1)。 生成されるファイル名は Nvr.MOD で、vr は現在の Natural のバージョンおよびリリース番号を表します。

ユーティリティの実行中に複数のカタログ化オブジェクトがアンロードされる場合は、相互にオブジェクトデッキが追加されます。

Top of page

Natural ニュークリアスへの Natural オブジェクトのリンク例

例えば、SYSLIB ライブラリ内のオブジェクト LOGPROG および EDITPROG を Natural ニュークリアスにリンクする場合は、次の手順に従います。

  1. リンクするカタログ化オブジェクトを指定します。

    Object         Library
    -------------- --------------  
    LOGPROG        SYSLIB 
    EDITPROG       SYSLIB  
  2. バッチ Natural ジョブストリームを設定します。 z/OS 環境の場合は、以下のカードを含めます。

    //CMWKF01  DD DSN=ULD.NAT.PGMS,UNIT=SYSDA,DISP=(,KEEP),  
    //            SPACE=(CYL,(3,1),,RLSE),VOL=SER=VVVVVV,
    //            DCB=(RECFM=FB,BLKSIZE=800,LRECL=80)
    //CMSYNIN DD *
    LOGON SYSMISC
    ULDOBJ LOGPROG,SYSLIB,OS
    EDITPROG,SYSLIB
    .
    FIN
    /* 
  3. リンケージエディタジョブストリームを設定します。

    //JOBCARD JOB (ACCTING),CLASS=A,MSGCLASS=X
    //*
    //* GENERATE OS LOAD MODULE FROM ULDOBJ UTILITY
    //*
    //LINK1    EXEC PGM=IEWL,PARM='LIST,LET,XREF,NCAL,RENT,REUS'
    //SYSLMOD  DD DSN=NATURAL.USER.LOAD,DISP=SHR
    //SYSUT1   DD UNIT=SYSDA,SPACE=(1024,(200,20))
    //SYSPRINT DD SYSOUT=X
    //SYSLIN   DD DSN=NAT.ULD.PGMS,DISP=OLD,UNIT=SYSDA,VOL=SER=VVVVVV  
    /*

    この手順で、ロードモジュール LOGPROG および EDITPROGNATURAL.USER.LOAD データセットに配置されます。

    追加のリンクエディットジョブにより、手順 5 でニュークリアスにリンクする前に、これらのモジュールをまとめて 1 つのロードモジュールとしてリンクできます。

    //JOBCARD JOB (ACCTING),CLASS=A,MSGCLASS=X
    //*
    //* OPTIONAL JOB TO LINK CATALOGED OBJECTS TOGETHER
    //*
    //LINK2    EXEC PGM=IEWL,PARM='LIST,LET,XREF,NCAL,RENT,REUS'  
    //SYSLMOD  DD DSN=NATURAL.USER.LOAD,DISP=SHR
    //SYSUT1   DD UNIT=SYSDA,SPACE=(1024,(200,20))
    //SYSPRINT DD SYSOUT=X
    //SYSLIN   DD *
    INCLUDE SYSLMOD(LOGPROG)  LOGON NATURAL PGM
    INCLUDE SYSLMOD(EDITPROG) EDITOR NATURAL PGM
    NAME XXXXXX(R)
    /*
  4. スタティックにリンクされる Natural プログラムを、リンクされる Natural プログラムの NSTATIC テーブルのソースモジュール NATCONFG で定義します。

    NTSTAT INPL,TYPE=W
    NTSTAT INPLLIB,TYPE=W
    NTSTAT AERROR,TYPE=W
    NTSTAT LOGPROG          <==== your entries  
    NTSTAT EDITPROG         <====

    TYPE=W は、指定したプログラムへの、通常の参照ではなく "弱い" 外部参照が生成されることを示します。

  5. Natural ニュークリアス用のリンケージエディタジョブストリームを確認し、以下を含めます。

    //*
    //* INCLUDE DDNAME AND DSN OF DATASET WHERE OBJECTS RESIDE  
    //*
    //SYSLMOD DD DSN=NATURAL.USER.LOAD,DISP=SHR
    //NATLIB DD DSN=NATURAL.V2.USER.LOAD,DISP=SHR//*
    //SYSLIN DD*
    ...
    ...                         INCLUDE MODULES FOR NUCLEUS
    ...
    INCLUDE NATLIB(NATPARM)     NATPARM MODULE
    INCLUDE SYSLMOD(LOGPROG)    LOGON NATURAL PGM
    INCLUDE SYSLMOD(EDITPROG)   EDITOR NATURAL PGM
    ...
    ...                         INCLUDE ENTRY AND NAME CARDS
    ...
    /*

    カタログ化プロジェクトを一括してリンクした場合(手順 3 のオプション)は、個別のロードモジュールの代わりにこのロードモジュールをニュークリアスのリンクに含めます。

Top of page