시범용: ZAPP 파일로 애플리케이션 구성

Visual Studio Code와 별도의 ZAPP(Z APPlication) 파일 사용은 개발자와 개발자 팀이 IBM Z® Open Editor에서 편집할 수 있도록 애플리케이션 코드를 구성하는 방법을 단순화하는 새로운 실험적 방식입니다. 특성 그룹 설정에 표시된 대로 특성 그룹과 같은 구성 설정은 엔터프라이즈 애플리케이션의 구조를 설명하는 데 중점을 두었음에도 불구하고 VS Code 사용자 또는 작업공간 설정으로 입력되어야 했습니다. 본질적으로 이러한 구성 설정은 실제로 VS Code 편집기와 관련이 없습니다. 이렇게 되면 특성 그룹을 VS Code 외부에서 재사용할 수 있으며 다른 편집기 또는 IDE와 함께 사용할 뿐만 아니라 프로그램 빌드 및 다른 유사한 유스 케이스를 위한 명령행 조작에도 사용할 수 있습니다.

따라서 IBM은 소스 코드로 관리할 수 있고 나중에 다양한 편집기 및 명령행 도구에서 읽을 수 있는 YAML 또는 JSON 파일과 같은 독립적인 표시로 애플리케이션을 설명하는 ZAPP 파일이라는 새로운 개념을 만들었습니다. 비전은 Maven POM(Project Object Models)이 Java™용이거나 package.json 파일이 Node.js용인 것처럼 ZAPP 파일이 z/OS® 엔터프라이즈 애플리케이션에 유용하게 사용되는 것입니다.

ZAPP의 이 초기 버전은 몇 가지 Z Open Editor 유스 케이스만 지원하지만 사용자 커뮤니티의 피드백을 통해 시간 경과에 따라 스펙 항목을 추가하고 더 많은 도구를 지원하며 명령 인터페이스를 추가하여 발전시킬 수 있기를 바랍니다. 그런 다음, 어느 시점에 다른 사용자들이 ZAPP에 기여하는 데 사용할 수 있는 확장성 API와 오픈 스펙을 제공하고자 합니다.

ZAPP 유스 케이스

ZAPP의 이 초기 버전은 일부 아이디어에 대한 첫인상을 제공하고 피드백을 수집하기 위한 것입니다. ZAPP 파일은 현재 다음 구성을 지정하는 데 사용할 수 있습니다.

  • 로컬 또는 원격 포함 파일을 찾기 위한 특성 그룹: 특성 그룹 설정 절에 설명된 설정에 대한 완전한 대안을 제공합니다.

  • 언어 특정 컴파일러 옵션을 정의하기 위한 특성 그룹: IBM® 언어 서버가 소스 코드를 해석하는 방식에 영향을 줍니다.

  • RSE API에 대한 코드 페이지 맵핑: MVS에 업로드하고 MVS에서 다운로드되는 방법에 대한 파일 이름 패턴의 맵핑을 정의하며, 이는 MVS EBCDIC 코드 페이지 및 맵핑 파일 절에 자세히 설명되어 있습니다.

  • 사용자 빌드: IBM Dependency Based Build 오퍼링을 사용하여 원격으로 Z Open Editor에서 현재 편집된 프로그램을 빌드합니다. (IBM Knowledge Center에서 이 기능에 대한 자세한 문서를 찾을 수 있습니다.)

ZAPP 파일 시작하기

Git 및/또는 **파일 > 열기...**를 사용하여 VS Code에서 연 최상위 레벨 디렉토리를 사용하는 경우 일반적으로 .git 디렉토리가 포함된 최상위 레벨 디렉토리, 즉 개발 작업공간에서 ZAPP 파일을 작성하십시오. 또한 일반적으로 이 디렉토리에는 작업공간 설정을 저장할 수 있는 .vscode 디렉토리가 포함되며, 해당 디렉토리는 현재 ZAPP 파일에 대신 저장할 수 있는 사용자 빌드 설정 및 특성 그룹의 이전 홈이었습니다.

참고: 이 현재 버전의 ZAPP는 단일 루트 VS Code 및 Eclipse Che/Red Hat CodeReady Workspaces 작업공간만 지원합니다.

ZAPP 파일을 YAML 파일 또는 JSON 파일로서 편집하고 최상위 레벨 디렉토리에 다음 이름으로 파일을 작성하도록 선택할 수 있습니다. 파일의 이름은 YAML 또는 JSON 편집기가 사용할 스키마를 인식할 수 있도록 정확히 이와 같이 지정해야 합니다.

  • zapp.yaml

  • zapp.json

권장되는 형식인 YAML을 사용하도록 결정한 경우 Red Hat YAML VS Code 확장을 설치하는 것이 좋습니다. 이 VS Code 확장은 ZAPP에 유용한 코드 자동 완성, 문서 및 형식화 기능을 제공합니다. Z Open Editor는 Red Hat YAML 확장 설치를 자동으로 인식하며 VS Code 사용자 설정에서 이 확장에 대한 ZAPP 스키마를 구성할 수 있습니다. 또한 YAML의 ZAPP에 대한 코드 스니펫이 지원되므로 바로 생산적인 작업을 수행할 수 있습니다.

JSON을 사용하는 경우 기본 VS Code JSON 편집기도 코드 자동 완성 및 형식화를 제공합니다(현재 스니펫은 제공하지 않음).

Z Open Editor가 Red Hat YAML 확장 또는 VS Code JSON에서 작동하도록 자체 구성한 경우, VS Code 사용자 설정에서 다음과 같이 항목을 검색하십시오. Z Open Editor가 시작된 후 항목을 추가해야 합니다.

"yaml.schemas": {
  "file:///Users/user1/.vscode/extensions/ibm.zopeneditor-1.1.0/resources/zapp-schema-0.0.1.json": [
    "zapp.yaml"
  ]
},
"json.schemas": [
  {
    "fileMatch": [
      "/zapp.json"
    ],
    "url": "file:///Users/user1/.vscode/extensions/ibm.zopeneditor-1.1.0/resources/zapp-schema-0.0.1.json"
  }
]

첫 번째 ZAPP 파일을 작성할 준비가 되었습니다.

구성 설정 세트의 우선순위

참고: 이는 새 시범 기능이므로 사용자 및 작업공간 설정에 있는 ZAPP 파일의 컨텐츠를 지정하는 이전 방식이 아직 유효하며 이전 버전의 Z Open Editor를 사용하여 작성한 모든 설정을 여전히 사용할 수 있습니다. 하지만 여러 위치의 설정을 혼합하고 일치시킬 수는 없습니다.

Z Open Editor는 다음 순서로 특성 그룹 및 사용자 빌드 설정을 검색하고 발견된 첫 번째 세트만 사용합니다.

  1. 작업공간 디렉토리의 zapp.yaml

  2. 작업공간 디렉토리의 zapp.json

  3. 작업공간 디렉토리의 .vscode/settings.json. 이는 환경 설정 메뉴를 통해 입력하는 VS Code 작업공간 설정입니다.

  4. 환경 설정 메뉴를 통해 입력하는 사용자 설정. 이는 운영 체제에 따라 다른 사용자 특정 위치에 저장됩니다.

ZAPP 파일 예

샘플 GitHub 저장소를 복제하여 ZAPP를 시작할 수 있습니다.

https://github.com/IBM/zopeneditor-sample.

이 저장소에는 다음 설정 파일이 포함되어 있으므로 모든 변형을 시도하여 가장 적합한 것을 결정할 수 있습니다.

  • zapp.yaml 파일

  • zapp.json 파일

  • 레거시 작업공간 설정

참고: 이전 절에서 설명한 우선순위 규칙에 따라 zapp.json 파일을 시도하려는 경우 우선 zapp.yaml 파일을 삭제하거나 이름을 변경해야 합니다.

zapp.yaml 파일에는 다음 컨텐츠가 포함됩니다.

name: sam
description: Wazi's code samples with COBOL, PL/I, and HLASM applications
version: 1.1.0
author:
  name: IBM CORPORATION

property-groups:
  - name: cobol-local
    language: cobol
    type: local
    syslib:
      - "**/COPYBOOK"
    libraries:
      - name: MYFILE
        locations:
          - "**/COPYLIB"
  - name: pl1-local
    language: pl1
    compilerOptions: not(!)
    type: local
    syslib:
      - "**/INCLUDES"
  - name: hlasm-local
    language: hlasm
    type: local
    syslib:
      - "**/ASMCOPY"
  - name: zowe-mvs
    type: mvs
    system: zos1000.example.com
    syslib:
      - USER1.SAMPLE.COBCOPY
    libraries:
      - name: MYLIB
        locations:
          - USER1.SAMPLE.COPY

이 간단한 예제에서는 네 개의 특성 그룹을 정의합니다. 처음 세 개의 특성 그룹은 local 유형이며 각 언어에 대해 zopeneditor-sample 프로젝트를 위한 포함 파일의 위치를 정의합니다. 각 특성 그룹에 대해 정의된 특성의 철자는 작업공간/사용자 설정에 대해 문서화된 것과 정확히 동일하며 이 특성은 완전성을 위해 특성 그룹 참조 페이지에 나열됩니다.

차이점은 이러한 특성 그룹이 이제 편집기 설정과 혼합되어 있지 않으며 해당 특성 그룹을 YAML에서 훨씬 더 효율적으로 편집할 수 있다는 점입니다.

코드 자동 완성 기능으로 zapp.yaml 파일 편집

코드 자동 완성을 사용하려면 위에서 설명한 대로 Red Hat VS Code YAML 확장을 설치하고 구성해야 합니다. 다음과 같이 시도할 수 있습니다.

  1. 커서를 type: mvs가 있는 행 뒤에 두고(대략 34행) Enter를 눌러 새 행을 시작하십시오.

  2. Ctrl+Space를 눌러 코드 자동 완성 드롭 다운을 여십시오.

그러면 여기에 추가할 수 있는 두 가지 특성(languagecompilerOptions)이 표시되며 이러한 특성은 아직 이 원격 mvs 특성 그룹에 지정되지 않았습니다.

특성 그룹 코드 스니펫으로 zapp.yaml 파일 편집

ZAPP은 다음과 같이 새 특성 그룹을 빠르게 입력할 수 있도록 코드 스니펫도 제공합니다.

  1. 커서를 파일의 맨 끝 빈 행에 두십시오.

  2. Ctrl+Space를 다시 누르면 드롭 다운에 나열된 네 개의 코드 스니펫이 표시됩니다.

  3. 아래로 이동하고 Enter 키를 눌러 ZAPP Remote MVS Property Groups를 선택하십시오.

  4. 새 특성 그룹이 강조표시된 플레이스홀더로 삽입되었음을 확인할 수 있습니다.

  5. 다른 항목을 클릭하거나 입력하기 전에 플레이스홀더가 여전히 강조표시되어 있을 때 Tab 및 Shift+Tab 키를 사용하여 플레이스홀더를 탐색하고 이름, 언어(다른 드롭 다운 사용) 및 syslib 항목의 값을 입력하십시오.

  6. 줄 바꾸기를 추가하고 새 값(- USER1.SAMPLE.INCLUDES)을 입력하여 새 특성 그룹의 끝에 다른 syslib 항목을 추가하십시오.

유효한 YAML 파일을 제공해야 합니다. syslib 항목에 JSON의 문자열 배열이 필요하므로 각 값에 -를 사용하여 YAML에 정렬된 목록으로 문자열 배열을 입력해야 합니다.

전체 ZAPP 파일에 대한 코드 스니펫 템플리트도 있습니다. 다음과 같이 시도할 수 있습니다.

  1. zapp.yaml에 대한 현재 편집기 창에서 모두 선택을 수행하고 파일의 컨텐츠를 모두 삭제하십시오. 파일이 Git에서 관리되는 것처럼 나중에 삭제를 철회할 수 있습니다.

  2. 빈 문서의 첫 번째 행과 열에서 Ctrl+Space를 누르고 ZAPP Template 스니펫을 선택하십시오. 맨 아래로 스크롤하는 대신 이 스니펫 이름을 입력할 수 있습니다.

  3. 로컬 및 원격 특성 그룹이 포함된 스니펫이 삽입되었는지 확인합니다. 그런 다음 필요에 따라 수정할 수 있습니다.

Ctrl+Space를 사용하는 것 외에 다음 단계를 수행하여 도달할 수 있는 VS Code 스니펫 갤러리를 통해 스니펫을 삽입할 수도 있습니다.

  1. Cmd+Shift+P(Mac) 또는 Ctrl+Shift+P(Windows)를 누르십시오.

  2. 드롭 다운에서 스니펫 삽입을 선택하십시오. snippet을 입력하여 목록 범위를 좁힐 수 있습니다.

구문 오류 검토

올바르지 않은 YAML을 입력하거나 특성 이름의 철자를 잘못 입력하여 올바르지 않은 zapp.yaml 파일을 작성하면 Red Hat YAML 확장이 문제점 보기에 구문 오류를 표시합니다. 다음과 같이 시도할 수 있습니다.

  1. 특성에서 몇 개의 문자를 제거하여 철자를 틀리십시오.

  2. VS Code 문제점 보기로 전환하십시오. 표시되지 않는 경우 보기 > 문제점 보기 메뉴를 사용하십시오. 이 보기에는 정확한 구문 오류 및 이 오류가 발생한 행과 열이 표시됩니다.

Red Hat YAML 확장이 설치되지 않은 경우, 다음과 같이 출력 보기의 Z Open Editor에서 제공된 단순 오류 목록을 찾을 수 있습니다.

  1. 출력 보기로 전환하십시오. 표시되지 않는 경우 보기 > 출력 보기 메뉴를 사용하십시오.

  2. 출력 보기의 오른쪽에 있는 드롭 다운에서 IBM Z Open Editor를 선택하십시오.

  3. 몇 가지 구문 오류를 작성하십시오. Red Hat 확장에는 바로 오류가 표시되는 반면, 여기에는 저장을 시도할 때까지 오류가 표시되지 않습니다.

  4. 구문 오류가 있는 파일을 저장하십시오. 이제 출력 보기에 should NOT have additional properties(additionalProperty:lauage)와 같은 오류 메시지가 표시됩니다.

표시된 것처럼 여기에 있는 출력은 훨씬 단순하며 행 번호를 포함하지 않습니다. Red Hat 확장에 아웃라인 보기를 생성하는 전체 YAML 언어 서버가 포함되어 있으므로 이 확장은 ZAPP 파일 편집을 위한 최상의 솔루션입니다.

zapp.yaml 파일 형식화

Red Hat YAML 확장의 다른 기능은 일관되게 ZAPP 파일을 형식화하는 기능입니다. 여러 위치에서 서로 다른 들여쓰기를 사용한 경우 다음 두 가지 형식화 방법 중 하나를 사용하여 전체 파일의 형식을 간단하게 정정할 수 있습니다.

  • 단축키 Shift+Option+F(Mac) 또는 Shift+Alt+F(Windows)를 사용하십시오.

  • Cmd+Shift+P(Mac) 또는 Ctrl+Shift+P(Windows)를 누르고 "format"을 입력하여 문서 형식화를 선택하십시오.

기존 특성 그룹을 ZAPP 파일로 변환

이전 버전의 Z Open Editor를 사용하여 특성 그룹을 사용했고 이 특성 그룹을 ZAPP으로 변환하려는 경우, 하나 또는 두 개의 간단한 단계에서 이를 수행할 수 있습니다.

  1. 특성 그룹을 zapp.json 파일에 복사하십시오.

  2. (선택사항) zapp.jsonzapp.yaml로 변환하십시오.

자세한 단계는 다음과 같습니다.

  1. 빈 오브젝트 { }가 있는 빈 zapp.json 파일을 작성하십시오.

  2. JSON 파일에 코드 자동 완성을 사용하여 이름, 버전, 작성자와 같은 일부 필수 및 선택적 특성을 입력하십시오.

  3. 이전에 특성 그룹을 저장한 VS Code 작업공간 또는 사용자 설정 파일을 여십시오.

  4. 설정 파일에서 전체 특성 그룹 항목을 잘라내어 zapp.json의 오브젝트 내에 붙여넣으십시오. 결과는 다음 JSON 오브젝트와 유사합니다.

    {
      "name": "sam",
      "zopeneditor.propertygroups": [
        {
          "name": "SAM-Copybooks",
          "type": "local",
          "syslib": ["**/COPYBOOK", "**/INCLUDES", "**/ASMCOPY"]
        }
      ]
    }
  5. "zopeneditor.propertygroups""property-groups"로 변경하십시오.

  6. Shift+Option+F(Mac) 또는 Shift+Alt+F(Windows)를 눌러 파일을 형식화하십시오.

  7. 포함 파일이 해결되었는지 여부를 테스트하십시오.

결과 파일은 다음과 같습니다.

{
  "name": "sam",
  "property-groups": [
    {
      "name": "SAM-Copybooks",
      "type": "local",
      "syslib": ["**/COPYBOOK", "**/INCLUDES", "**/ASMCOPY"]
    }
  ]
}

다음과 같이 다른 써드파티 VS Code 확장을 사용하여 올바른 zapp.json 파일을 zapp.yaml 파일로 쉽게 변환할 수 있습니다.

  1. 이와 같은 변환을 수행할 수 있는 VS Code 확장을 설치하십시오(예: YAML+JSON).

  2. 이제 이 확장을 사용하여 zapp.json 파일을 마우스 오른쪽 단추로 클릭하고 YAML로 변환을 선택할 수 있습니다.

  3. 결과 파일의 이름을 zapp.yml에서 zapp.yaml로 바꾸십시오.

  4. 특성 그룹을 올바르게 해석하고 있는지 여부를 테스트하십시오.