이 샘플에서는 작업공간에 있는 원격 프로젝트의 목록을 가져오는 방법을 보여줍니다. 또한 원격 프로젝트에 추가된 하위를 순회하는 방법을 보여줍니다.
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 하위 프로젝트는 MVS 파일 시스템 하나 또는 하나에만 해당합니다. IOSImage 오브젝트가 발견되면 (isConnected) 메소드를 호출하여 시스템이 연결되어 있는지 판별할 수 있습니다. 다음 코드 스니펫은 printSubproject 샘플 메소드에서 가져온 것입니다.
if (subProject.getSystems()[0].isConnected()) {
printMembers(subProject, indent);
} else {
......
}
프로젝트 검색 및 설정 메커니즘은 더 이상 사용되지 않으며 향후 버전에서는 변경됩니다.
getPersistentProperty 메소드를 사용하여 프로젝트 특성을 검색할 수 있습니다. printSubproject 샘플 메소드의 다음 코드 스니펫은 지정된 하위 프로젝트의 COBOL 컴파일러 옵션을 검색합니다.
String compileOptions = subProject.getPersistentProperty( IPhysicalResourceCoreConstants.COBOL_COMPILE_OPTIONS);
마찬가지로, printMember 샘플 메소드는 다음 코드 스니펫을 사용하여 지정된 자원과 연관된 COPYLIB를 검색합니다.
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);
}