이벤트 파일 형식

이벤트 파일에는 메시지가 발행되도록 하는 임의의 토큰 또는 행을 편집기가 소스 파일에서 찾을 수 있도록 하며 확장된 소스를 참조하는 메시지를 주어진 소스 파일의 대응 위치에 연관시킬 수 있도록 하는 정보가 들어 있습니다. 이벤트 파일은 도구의 특정 클래스에 유용한 시스템에서 읽을 수 있는 정보를 제공합니다. 반대로, 프로세서의 목록 파일은 사용자가 읽을 수 있는 정보를 제공합니다. 이벤트 파일에는 모든 프로세서에 공통인 형식이 있으므로 도구에서 필요한 정보를 확보하기 위해 프로세서 특정 코드를 작성할 필요가 없습니다.

이벤트 파일은 순차적으로 작성됩니다. 각 프로세서는 단순히 새 레코드를 추가합니다. 중요한 이벤트가 발생하는 경우, 레코드가 이벤트 파일에 작성됩니다.

현재, 다음 레코드 유형이 정의되어 있습니다.
  • 시간소인 레코드
  • 프로세서 레코드
  • 파일 ID 레코드
  • 파일 종료 레코드
  • 오류 정보 레코드
  • 프로그램 레코드
  • 맵 정의 레코드
  • 맵 시작 레코드
  • 맵 종료 레코드
  • 피드백 코드 레코드

다른 유형의 레코드가 이 한 파일에 포함되므로 각 레코드의 첫 번재 단어가 레코드 유형을 식별합니다. 구문 다이어그램에서 각 토큰은 정확히 하나의 공백으로 구분되어야 합니다.

시간소인 레코드

이 레코드는 이벤트 파일이 작성된 시기를 표시하며 어플리케이션이 이 레코드를 통해 이벤트 파일이 최신인지 여부를 판별합니다(시간소인이 파일 ID 레코드에 표시된 파일보다 오래된 경우 이벤트 파일이 해당 파일에 올바르지 않을 수 있음). 이 레코드가 항상 이벤트 파일의 첫 번째 레코드입니다.

주: 이 레코드는 프로세서가 작성하지 않으며 첫 번째 프로세서의 호출자가 작성합니다. 이로써, 각 프로세서가 파일이 있는지 판별하지 않고 이벤트 파일에 추가될 수 있습니다.

레코드는 다음과 같이 정의합니다.

**––– TIMESTAMP ––– version ––– timestamp ––––*|

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
timestamp
이벤트 파일이 작성된 날짜 및 시간(yyyymmddhhmmss 형식).

프로세서 레코드

이 레코드는 새 프로세서가 호출되었는지를 표시합니다. 해당 레코드는 항상 이벤트 파일의 시간소인 레코드 다음에 옵니다(둘 이상이 있을 수 있음).

프로세서 레코드는 다음과 같이 정의합니다.

**––– PROCESSOR ––– version ––– output-id ––– line-class –––*|

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
output-id
이 프로세서가 생성하는 출력 파일의 파일 ID. 이 프로세서의 출력이 다른 프로세서의 입력으로 사용되도록 고안된 경우, 이 파일 ID는 해당 파일과 이 레코드 다음에 오는 파일의 파일 ID 레코드를 표시합니다. 해당 프로세서가 편집기가 메시지를 표시하도록 예상하여 호출된 마지막 프로세서인 경우, 파일 ID는 0입니다.
line-class
행에 번호를 지정하는 데 사용하는 메소드. 펼쳐진 소스 표시를 포함하는 임시 파일 또는 내부 파일을 사용 중인 경우 0을 지정하십시오. 행 번호가 펼쳐진 소스의 행 번호를 표시합니다. 행 번호가 소스 파일 ID 필드에 표시된 소스 파일의 실제 행 번호를 표시하는 경우 1을 지정하십시오.
주: 한 프로세서의 출력이 다른 프로세서의 입력이 되도록 고안된 경우, 출력이 실제 파일에 없는 경우에도 출력의 FILEID 레코드에 이름이 들어 있어야 합니다. 출력을 사용하는 프로세서의 입력 FILEID 레코드에 이와 동일한 이름을 사용해야 합니다.

파일 ID 레코드

이 레코드에는 처리된 소스 파일의 전체 이름이 들어 있으며 파일 이름과 정수를 연관시킵니다. 처리된 각 소스 파일에 이 유형의 한 레코드가 있어야 합니다(포함된 임의의 소스 장치(copylib 멤버)와 매크로뿐 아니라 기본 소스 파일).

주: 처리 중에 파일이 여러 번 포함되는 경우 파일 ID 레코드가 각 포함 시 작성되어야 합니다.

파일 ID 레코드는 다음과 같이 정의합니다.

**––– FILEID ––– version ––– source-id ––– line ––– length ––––*
 *––– filename ––– sourcefile timestamp ––– temp flag ––*|

파일 ID 레코드가 이벤트 파일의 레코드 길이에서 허용하는 길이를 초과하는 경우(IFS 파일 컴파일 시 발생 가능) 형식이 다음과 같은 하나 이상의 파일 ID 연속 레코드가 파일 ID 레코드 다음에 옵니다.

**––– FILEIDCONT ––– version ––– source-id ––– line ––– length ––––*
 *––– filename ––– sourcefile timestamp ––– temp flag ––*|

예를 들면 다음과 같습니다.

FILEID     0 001 000000 383 /home/USER/directory/directory2/directory3/directory4asdfjkaskldjfhakjsdf haslkdjf alksjdfh laksjdf/directory5/dir9 askdjfhaksdjfhkalsjdfhlkajsdfhlajdshflkajshdflkajshdflkjahsdflkjhasdlfkjhaslkdfhalksdjfhalksdhfklashdfkashdflkahsdflkjhasdlkfhalskdfjha
FILEIDCONT 0 001 000000 000 lskfhalskdfhalsdhfalksdjfhlaksfhlasasdkjfhaksdjfhlkasjdfhlkajshdflkajshdfkjashdflkjhasdlkfhsadjkfdfhlakdshflkhs/REM1C01501.RPGLE 20030404130518 0

위의 예제에서 표시된 바와 같이 IFS 파일 이름에는 공백이 있을 수 있으므로 항상 길이를 사용하여 파일 이름을 판별해야 합니다.

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
source-id
문자 기반 파일 이름을 사용하지 않고 오류가 발생한 소스 파일의 오류 레코드를 상관시키는 파일 이름의 위치에 사용해야 하는 정수로 표시되는 파일 ID. 사용자 종료에서 수신되는 출력과 같이 입력 파일을 알 수 없는 경우 0을 사용하십시오.
line
새 파일이 참조되는 경우 소스 파일 행 번호, 또는 해당 파일이 파일에서 참조되지 않는 경우 0.
length
파일 이름의 길이. 최대 길이는 255입니다. 파일 ID 레코드만이 길이를 판별할 수 있으므로 FILEIDCONT 레코드에서 길이는 항상 0입니다.
filename
이 이름은 완전한 실제 파일 이름이어야 합니다. 이름이 없거나(예: 사용자로부터 텍스트 가져오기) 이름을 판별할 수 없는 경우, 널(null) 스트링이 와야 합니다.

이 이름은 servername을 포함할 수 있습니다.

sourcefile timestamp
소스 파일의 시간소인입니다.
temp flag
이 파일은 1로 설정되어 소스가 임시 파일임을 표시합니다. 그렇지 않은 경우, 0으로 설정됩니다. 임시 소스 파일은 열람 모드로만 열 수 있습니다. 현재 temp 플래그를 사용하여 SQL 사전처리기가 생성한 출력을 참조합니다.

파일 종료 레코드

이 레코드는 포함된 파일이 종료되었음을 표시합니다. 프로그램이 포함 체인을 이전 방향으로 탐색하도록 포함 파일의 중첩을 판별하는 메소드를 제공합니다. 포함 파일에 오류의 원인을 판별하는 데 충분한 정보가 없는 경우 유용합니다.

파일 종료 레코드는 다음과 같이 정의합니다.

**––– FILEEND ––– version ––– file-id ––– expansion –––*|

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
file-id
이 파일의 파일 ID.
expansion
임의의 중첩 포함사항 및 매크로 확장을 포함하여 이 파일의 펼쳐진 소스 행 번호.
주: 모든 파일 ID 레코드에는 대응 파일 종료 레코드가 있어야 합니다(출력 파일을 정의하는 프로세서 레코드를 따르는 파일 ID는 제외).

오류 정보 레코드

이 유형의 레코드는 메시지 자체가 표시되는 데 충분한 정보뿐 아니라 소스 파일에 메시지를 초래하는 행 또는 토큰을 찾기 위한 필수 정보를 포함합니다. 이 정보에는 위치 정보(예: 오류가 발생한 파일 및 행)와 오류 자체와 연관된 정보(예: 메시지의 심각도, 텍스트 및 번호)가 포함됩니다.

오류 정보 레코드는 다음과 같이 정의합니다.

**––– ERROR ––– version ––– file-id ––– annot-class –––*
 *––– stmt-line ––– start-err-line ––– token-start ––– end-err-line ––– token-end –––*
 *––– msg-id ––– sev-char ––– sev-num ––– length ––– msg –––*|

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
file-id
이 오류를 포함하는 소스 파일의 파일 ID 번호.
annot-class
이벤트 파일을 오류 목록 창에 로드 시 이 메시지를 두어야 하는 메시지 목록 위치를 표시합니다. 위치는 다음과 같이 정의합니다.
0
목록의 맨 위. 일반적으로, 파일의 특정 행과 연관되지 않는 매우 중요한 메시지에 사용됩니다. 이 유형의 여러 메시지 인스턴스의 정렬 순서는 정의되어 있지 않습니다. 일반적으로, 텍스트는 이 유형의 오류에 응답하지 않으므로 편집기 창에 위치할 수 없습니다.
1
목록의 중간. 일반적으로, 단일 행 또는 토큰과 연관된 메시지에 사용됩니다. 이 유형의 여러 메시지는 행 및 컬럼 번호로 정렬됩니다.
2
목록의 끝. 일반적으로, 파일의 특정 행과 연관되지 않는 덜 중요한 메시지에 사용됩니다. 이 유형의 여러 메시지 인스턴스의 정렬 순서는 정의되어 있지 않습니다. 일반적으로, 텍스트는 이 유형의 오류에 응답하지 않으므로 편집기 창에 위치할 수 없습니다.
stmt-line
오류를 포함하는 명령문의 첫 번째 행의 행 번호(위의 소스 파일 ID 번호와 연관된 소스 파일에 있음). 오류가 명령문의 첫 번째 행에서 발생하지 않는 경우 필수입니다. 이 번호는 행 클래스 필드를 사용하여 해석합니다.
start-err-line
오류의 상태를 포함하는 행 번호(위의 소스 파일 ID 번호와 연관된 소스 파일에 있음). 이 번호는 행 클래스 필드를 사용하여 해석합니다.
token-start
오류가 발생한 토큰의 시작 컬럼(또는 행의 문자). 이 정보를 사용할 수 없는 경우, 여기에 0을 지정하면 전체 행이 오류로 플래그되게 됩니다.
end-err-line
오류의 끝을 포함하는 행 번호(위의 소스 파일 ID 번호와 연관된 소스 파일에 있음). 이 번호는 행 클래스 필드를 사용하여 해석합니다.
token-end
오류가 발생한 토큰의 끝 컬럼(또는 행의 문자). 이 정보를 사용할 수 없는 경우, 여기에 0을 지정하면 전체 행이 오류로 플래그되게 됩니다.
msg-id
메시지 ID(예: AMPX999).
sev-char
심각도 코드 문자(I, W, E, S 또는 T).
sev-num
심각도 레벨 번호. 일부 시스템의 경우, 해당 번호는 심각도 코드 문자와 연관된 리턴 코드입니다(예: I=0, W=4, E=8, S=12, T=16).
length
메시지 텍스트의 실제 길이(다음 필드). 최대 길이는 1024바이트입니다.
msg
오류 메시지의 메시지 텍스트. 임의의 필드가 이미 대체되었어야 합니다.
주: 오류 레코드는 한 파일 ID만을 지정할 수 있도록 하므로 파일에 있는 오류가 제대로 플래그 지정되지 않을 수도 있습니다.

프로그램 레코드

이 레코드는 동일한 소스 파일의 새 프로그램이 컴파일 중임을 표시합니다. 여러 프로그램이 한 파일에 포함된 경우 사용됩니다. 이 레코드가 작성되면 펼쳐진 소스 행이 1에서 다시 시작되는 것으로 간주됩니다. 파일의 첫 번째 프로그램을 표시할 필요는 없습니다.

주: 프로그램의 모든 ERROR 레코드는 해당 프로그램의 PROGRAM 레코드 다음 및 기타 프로그램의 PROGRAM 레코드 앞에 와야 합니다.

프로그램 레코드는 다음과 같이 정의합니다.

**––– PROGRAM ––– version ––– line –––*|

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
line
이 프로그램이 시작하는 파일의 위치.

맵 정의 레코드

이 레코드는 매크로가 정의되는 중임을 표시합니다. 오류가 매크로가 사용된 위치 대신 매크로 정의를 다시 반영하도록 하는 데 사용됩니다.

맵 정의 레코드는 다음과 같이 정의합니다.

**––– MAPDEFINE ––– version ––– macro-id ––– line ––– length ––– macro-name –––*|

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
macro-id
이 매크로 정의를 표시하는 정수. 이 정수는 특정 파일에서 순차적으로 증가해야 합니다.
line
매크로 정의가 시작하는 현재 파일의 실제 행.
length
매크로 이름의 길이.
macro-name
정의 중인 매크로의 이름.

맵 시작 레코드

이 레코드는 소스 확장이 시작 중임을 표시합니다. 임의의 텍스트 대체를 완료 중인 경우 사용됩니다.

맵 시작 레코드는 다음과 같이 정의합니다.

**––– MAPSTART ––– version ––– macro-id ––– line –––*|

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
macro-id
맵 정의 레코드에 지정된 매크로 ID.
line
확장(예: 매크로 호출)이 시작되는 현재 파일의 실제 행.

맵 종료 레코드

이 레코드는 소스 확장이 완료되었음을 표시합니다. 텍스트 대체의 맨 끝에 사용되어 작성된 행 수를 표시합니다.

맵 시작 레코드는 다음과 같이 정의합니다.

**––– MAPEND ––– version ––– macro-id ––– line ––– expansion –––*|

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
macro-id
맵 정의 레코드에 지정된 매크로 ID.
line
확장(예: 매크로 호출)이 시작되는 현재 파일의 실제 행.
expansion
임의의 중첩 확장을 포함하여 이 매크로 확장으로 생긴 행 수.

피드백 코드 레코드

이 레코드에는 컴파일이 중단된 지점의 리턴 코드 및 이유 코드가 들어 있습니다.

피드백 코드 레코드는 다음과 같이 정의합니다.

**––– FEEDBACK ––– version ––– return-code ––– reason-code –––*|

version
이후 버전과의 호환성에 사용되는 이 레코드의 개정판. 현재 버전은 "1"입니다.
return-code
프로세서가 리턴하는 리턴 코드.
reason-code
프로세서가 리턴하는 이유 코드.