このサンプルは、ワークスペースに存在するリモート・プロジェクトのリストを取得する方法を示します。さらに、リモート・プロジェクトに追加された子を全探索する方法も示します。
z/OS® プロジェクトに関する情報を取得するには、「API サンプル」->「プロジェクト情報」アクションを選択します。
定義されるプロジェクトごとに、プロジェクトに関する基本情報と、追加されたデータ・セットおよびメンバーの階層リストが表示されます。プロジェクトの下の子ごとに、適用可能な COBOL コンパイラー・オプション・セットが表示されます。 この出力は、ワークベンチに関連付けられた標準出力に送信されます。これは、ワークベンチが開始された DOS ウィンドウ、またはランタイム・ワークベンチの場合はホスティング・ワークベンチの「コンソール」ビューに表示されます。

プロジェクトのリストを取得するプロセスは、システムのリストを取得するプロセスに似ています。
以下のコード・スニペットは、現行ワークスペースに定義されているプロジェクトとサブプロジェクトのリストの処理を繰り返します。
Object [] projectReferences =
LogicalProjectRegistryFactory.getSingleton().getProjects();
for (int i = 0; i < projectReferences.length; i++) {
ILogicalProject project =
(ILogicalProject) projectReferences[i];
System.out.println("----- Project[" + i + "]: " +
project.getName());
List subProjects = project.getChildren();
for (int j = 0; j < subProjects.size(); j++) {
ILogicalSubProject subProject =
(ILogicalSubProject)subProjects.get(j);
System.out.println(INITIAL_INDENT + "Subproject[" + j +
"]: " + subProject.getName());
printSubproject(subProject, INITIAL_INDENT +
INDENT_PREFIX);
}
}
コードは、LogicalProjectRegistryFactory クラスの getSingleton メソッドによって取得される LogicalProjectRegistry クラスを使用して、ワークベンチに定義されているすべての ILogicalProject インスタンスのリストを取得することから開始します。次に、既知のプロジェクトのリストの処理を繰り返し、getChildren メソッドを使用して各プロジェクトの子を取得します。 ILogicalProject オブジェクトには、子としての ILogicalSubProject オブジェクトのみを収めることができます。そして次に、ILogicalSubProject オブジェクトの処理が繰り返されます。
getName メソッドを使用すると、プロジェクトとサブプロジェクトの名前を個別に取得できます。
MVS™ サブプロジェクトに関連付けられたシステムが接続されているかどうかの判別は簡単です。ILogicalSubProject を参照したら、getSystems メソッドを使用して、特定のシステムを表す IOSImage オブジェクトを取得します。各 MVS サブプロジェクトは、1 つの MVS ファイル・システムのみに対応します。IOSImage オブジェクトを取得したら、(isConnected) メソッドを呼び出して、システムが接続されているかどうかを判別できます。 以下は、printSubproject サンプル・メソッドのコード・スニペットです。
if (subProject.getSystems()[0].isConnected()) {
printMembers(subProject, indent);
} else {
......
}
プロジェクトの取得および設定のメカニズムは推奨されていません。これは今後、変更される可能性があります。
getPersistentProperty メソッドを使用すると、プロジェクトのプロパティーを取得できます。以下の printSubproject サンプル・メソッドのコード・スニペットは、所定のサブプロジェクトの COBOL コンパイラー・オプションを取得します。
String compileOptions = subProject.getPersistentProperty( IPhysicalResourceCoreConstants.COBOL_COMPILE_OPTIONS);
Similarly, the printMember sample method uses it to retrieved the COPYLIB associated with the specified resource.
String copyLibraries = resource.getPersistentProperty(IPhysicalResourceCoreConstants.COBOL_COMPILE_COPYLIBRARIES);
所定のサブプロジェクトに追加された成果物、つまり、すべての ILogicalContainer オブジェクトを取得するには、members メソッドを使用します。以下のコード・スニペットは、printMembers メソッドから引用しています。ILogicalSubProject クラスは、ILogicalContainer クラスから継承します。
IAdaptable [] members = container.members();
for (int j = 0; j < members.length; j++) {
printMember((ILogicalResource) members[j], indent + INDENT_PREFIX);
}
printMember メソッドは、現行リソースに関する適切な情報を出力します。現行リソースが ILogicalContainer の場合、printMembers メソッドを再帰的に呼び出してサブツリーに下降します。
if (resource instanceof ILogicalContainer) {
ILogicalContainer memberContainer = (ILogicalContainer) resource;
......
printMembers(memberContainer, indent);
} else {
System.out.println(indent + "member[" + index + "] " + resource.getName()
+ " having COBOL copy libraries: " + copyLibraries);
}