코드 검토 컴포넌트는 COBOL용 기본 제공 코드 검토
규칙을 지원합니다.
이 규칙은 COBOL용 코드 검토 컴포넌트에
기본 제공되고 매개변수를 필요로 하지 않습니다. 소프트웨어 분석 구성 편집기의
이름 지정 규칙, 성능 및
프로그램 구조 카테고리에서 이 규칙을 선택할 수
있습니다. 이 편집기 사용에 대한 자세한 정보는
소프트웨어 분석 구성 작성의 내용을 참조하십시오.
- 이름 지정 규칙:
- 소스 파일 이름과 일치하는 프로그램 이름을
사용함
- 이 규칙은 프로그램 이름이 소스 파일 이름과 다른 PROGRAM-ID
분할에 플래그를 지정하는 데 사용합니다. 소스 파일의
파일 확장자는 비교에서 제외됩니다.
- 성능:
- INITIALIZE 문을 사용하지 않음. 기본 MOVE 문 또는
VALUE 절을 사용합니다.
- 이 규칙은 INITIALIZE 문에 플래그를 지정하는 데 사용합니다.
- OCCURS DEPENDING ON 구를 사용하지 않음
- 이 규칙은 OCCURS DEPENDING ON 구에 플래그를 지정하는 데 사용합니다.
- 테이블 액세스에 서브스크립션을 사용하지 않음. 색인을 사용합니다.
- 이 규칙은 특성이 다음과 같은 데이터 항목에 플래그를 지정하는 데 사용합니다.
- 테이블 요소에 액세스할 때 서브스크립트로 사용됩니다.
- 테이블을 정의하는 OCCURS 절의 INDEXED BY
구에 지정되지 않습니다.
이 규칙에서 리터럴인 서브스크립트에는 플래그를 지정하지 않습니다.
- EXEC SQL: SELECT * 문을 사용하지 않음
- 이 규칙은 SELECT * 문이 포함된 EXEC SQL 문에
플래그를 지정하는 데 사용합니다.
- EXEC SQL: 커서를 선언할 때 ORDER BY 절 사용
- 이 규칙은 포함된 SELECT 문에 ORDER BY
절을 지정하지 않고서 커서를 선언하는 EXEC SQL 문에
플래그를 지정하는 데 사용합니다.
- 파일 설명 항목에서 BLOCK CONTAINS 절에 대해
0 RECORDS 지정
- 이 규칙은 0 RECORDS를 지정하지 않는 BLOCK CONTAINS
절에 플래그를 지정하는 데 사용합니다.
- 중첩된 IF 문이 아닌 EVALUATE 문을 사용함
- 이 규칙은 중첩된 IF 문에 플래그를 지정하는 데 사용합니다.
두 개 레벨 이상의 깊이로 중첩되면 가장 바깥쪽 중첩된
IF 문에만 플래그를 지정합니다.
지정된 수의
레벨보다 깊이 중첩된 IF 문을 사용하지 않음 템플리트와
비교하십시오.
- COMP-3 또는 팩형 10진수 데이터 정의에 홀수 자릿수
사용
- 이 규칙은 COMP-3 또는 PACKED-DECIMAL 유형으로
선언되고 홀수 자릿수를 사용하지 않은 데이터 정의에 플래그를
지정하는 데 사용합니다.
- 2진 서브스크립트 사용
- 이 규칙은 특성이 다음과 같은 데이터 항목에 플래그를 지정하는 데 사용합니다.
- 테이블 요소에 액세스할 때 서브스크립트로 사용됩니다.
- COMP, COMPUTATIONAL 또는 BINARY를
사용하여 선언되지 않습니다.
이 규칙에서 리터럴인 서브스크립트에는 플래그를 지정하지 않습니다.
- 프로그램 구조:
- ACCEPT 문을 사용하지 않음
- 이 규칙은 모든 ACCEPT 문에 플래그를 지정하는 데 사용합니다.
FROM
CONSOLE 또는 FROM SYSIN이 포함된 ACCEPT 문을 사용하지 않음 규칙과
비교하십시오.
- FROM CONSOLE 또는 FROM SYSIN이 포함된 ACCEPT 문을 사용하지 않음
- 이 규칙은 FROM CONSOLE 또는 FROM SYSIN
구가 포함된 ACCEPT 문에 플래그를 지정하는 데 사용합니다.
예외 없이
모든 ACCEPT 문에 플래그를 지정하려면 ACCEPT 문을
사용하지 않음 규칙을 사용하십시오.
- ALTER 문을 사용하지 않음
- 이 규칙은 ALTER 문에 플래그를 지정하는 데 사용합니다.
- 리터럴 프로그램 이름에
CALL 문을 사용하지 않음
- 이 규칙은 프로그램 이름을 리터럴로 지정하는 CALL
문에 플래그를 지정하는 데 사용합니다.
- CANCEL 문을 사용하지 않음
- 이 규칙은 CANCEL 문에 플래그를 지정하는 데 사용합니다.
- COPY SUPPRESS 문을 사용하지 않음
- 이 규칙은 SUPPRESS 구가 포함된
COPY 문에 플래그를 지정하는 데 사용합니다.
- CORRESPONDING 구를 사용하지 않음
- 이 규칙은 CORRESPONDING 구가 포함된
ADD, SUBTRACT 및 MOVE 문에
플래그를 지정하는 데 사용합니다.
- UPON CONSOLE을 포함한 DISPLAY 문을 사용하지 않음
- 이 규칙은 UPON CONSOLE이 포함된
DISPLAY 문에 플래그를 지정하는 데 사용합니다.
- ENTRY 문을 사용하지 않음
- 이 규칙은 ENTRY 문에 플래그를 지정하는 데 사용합니다.
- EXIT PROGRAM 문을 사용하지 않음
- 이 규칙은 EXIT PROGRAM 문에 플래그를 지정하는 데 사용합니다.
- GO TO 문을 사용하지 않음
- 이 규칙은 GO TO 문에 플래그를 지정하는 데 사용합니다.
EXIT 단락을
참조하는 명령문을 제외한 GO TO 문을 사용하지 않음 규칙과
비교하십시오.
- EXIT 단락을 참조하는 명령문을 제외한 GO TO 문을 사용하지 않음
- 이 규칙은 EXIT 단락으로 제어를 전송하는 명령문을 제외한 모든
GO TO 문에 플래그를 지정하는 데 사용합니다. EXIT 단락은
EXIT 문만 포함한 단락입니다.
예외 없이
모든 GO TO 문에 플래그를 지정하려면
GO TO 문을 사용하지 않음 규칙을 사용하십시오.
- ELSE 없이 IF를 사용하지 않음
- 이 규칙은 ELSE 절이 없는
IF 문에 플래그를 지정하는 데 사용합니다.
- NEXT SENTENCE 구를 사용하지 않음
- 이 규칙은 모든 NEXT SENTENCE 구에 플래그를 지정하는 데 사용합니다.
영역 지정된
범위에서 NEXT SENTENCE가 아닌 CONTINUE를 사용함 규칙과
비교하십시오.
- PERFORM 섹션을 제외하고 PERFORM을 사용하지 않음
- 이 규칙은 섹션이 포함된 명령문을 제외한 모든
PERFORM 문에 플래그를 지정하는 데 사용합니다.
참고: 이 규칙에서 PERFORM section-name 또는 PERFORM section-name-1 THRU section-name-2를
제외한 모든 PERFORM 문에 플래그를 지정합니다.
단락을 참조하는 인라인 PERFORM 문 및 PERFORM 문에
플래그가 지정됩니다.
- FILE-CONTROL 단락에 RESERVE 절을 사용하지 않음
- 이 규칙은 FILE-CONTROL 단락에서 RESERVE 절에 플래그를 지정하는 데 사용합니다.
- STOP RUN 및 STOP 리터럴 문을 사용하지 않음
- 이 규칙은 STOP RUN 및 STOP 리터럴
명령문에 플래그를 지정하는 데 사용합니다.
- PERFORM 문에 THRU 구를 사용하지 않음
- 이 규칙은 THRU 구가 포함된 PERFORM 문에
플래그를 지정하는 데 사용합니다.
- 데이터 설명에 레벨 88 항목을 사용하지 않음
- 레벨 88 항목을 사용하는 데이터 설명을 플래그 지정하려면 이 규칙을 사용하십시오.
각 레벨 88 항목은 플래그 지정됩니다.
- 섹션당 둘 이상의 EXIT 문을 사용하지 않음
- 이 규칙은 둘 이상의 EXIT 문이 있는 섹션에 플래그를 지정하는 데 사용합니다.
- Procedure Division에서 SECTION을 사용하지 않음
- 이 규칙은 Procedure Division에서 SECTION 선언에 플래그를
지정하는 데 사용합니다.
- XML PARSE 문을 사용하지 않음
- 이 규칙은 XML PARSE 문에 플래그를 지정하는 데 사용합니다.
- EXEC CICS®: NOHANDLE 후 EIBRESP
확인
- 이 규칙은 NOHANDLE 옵션을 지정하고 EIBRESP의 값을
확인하는 IF 문 또는 EVALUATE 문이
뒤에 오지 않는 EXEC CICS 문에 플래그를 지정하는 데
사용합니다.
다음 명령 중 하나가 뒤에 오지
않는 경우 EXEC CICS 문에
플래그가 지정됩니다.
- EIBRESP를 참조하는 IF 또는 EVALUATE 문
- 첫 번째 명령문이 EIBRESP를 참조하는 IF 또는
EVALUATE 문인 코드 블록으로 이어지는
PERFORM 문
- EXEC CICS: DFHRESP를
사용하여 리턴값 확인
- EXEC CICS 명령의 RESP 또는 RESP2
매개변수로 사용되는 데이터 항목에 이 규칙이 적용됩니다.
이 규칙은
다음 컨텍스트에서
DFHRESP 함수 호출의 리턴값이
아닌 항목과 데이터 항목 간의 비교에 플래그를 지정하는 데
사용합니다.
- 관계 조건에서
- 데이터 항목이 선택 대상인 SELECT 문의
WHEN 단위에서
이 규칙은 사용된 변수의
COBOL 정의 및 RESP() 또는 RESP2()에 의한
처리를 기록하는 경우를 제외하고 모든 EXEC CICS 블록을 검토합니다. IF, ELSE 및
EVALUATE WHEN 문의 조건과 같은 모든 관계
조건에서 이 변수를 검색합니다. 일치하는 항목이 있고 DFHRESP 매크로
이외의 모든 항목에 대해 동등 검사를 수행할 경우 관계 조건이
규칙 위반으로 기록됩니다. 또한, 응답 변수를 WHAT 조건으로
사용하는 EVALUATE 문에서 WHEN 절을
검토합니다. DFHRESP
매크로에 대한 참조 이외의 항목을 포함한 경우 WHEN 절에
규칙 위반 플래그가 지정됩니다.
- EXEC CICS: RESP 옵션 사용
- 이 규칙은 RESP 옵션이 없는 EXEC CICS
명령에 플래그를 지정하는 데 사용합니다.
이 규칙은
모든 EXEC CICS 블록을 검토하고 RESP()
옵션이 있는지 확인합니다. 옵션이 없으면 블록에
위반 플래그가 지정됩니다.
- EXEC SQL: EXEC SQL 명령문 후 SQLCODE의 값을 확인
- 이 규칙은 SQLCODE의 값을 확인하는 IF 문
또는 EVALUATE 문이 뒤에 오지 않는 EXEC SQL 문에
플래그를 지정하는 데 사용합니다.
다음 명령 중
하나가 뒤에 오지 않는 경우 EXEC SQL
문에 플래그가 지정됩니다.
- SQLCODE를 참조하는 IF 또는 EVALUATE 문
- 첫 번째 명령문이 SQLCODE를 참조하는 IF 또는
EVALUATE 문인 코드 블록으로 이어지는
PERFORM 문
- 각 섹션에서 EXIT 단락을 사용함
- EXIT 단락이 포함되지 않은 섹션을 플래그 지정하려면 이 규칙을 사용하십시오. EXIT 단락은
EXIT 문만 포함한 단락입니다.
- EVALUATE 문에 WHEN OTHER 구를 사용함
- 이 규칙은 WHEN OTHER 절이 없는
EVALUATE 문에 플래그를 지정하는 데 사용합니다.
- 영역 지정된 범위에서 NEXT SENTENCE가 아닌 CONTINUE를 사용함
- 이 규칙은 명시적 범위 종결자가 있는 명령문의 범위 내에 속한
NEXT SENTENCE 문에 플래그를 지정하는 데
사용합니다. 예를 들어, IF 문과 상응하는
END-IF 구 사이에 있으면 NEXT SENTENCE 문에
플래그가 지정됩니다.
명시적 범위 종결자가 있는
명령문은 ADD, CALL, COMPUTE,
DELETE, DIVIDE, EVALUATE, IF, INVOKE, MULTIPLY, PERFORM, READ, RETURN,
REWRITE, SEARCH, START, STRING, SUBTRACT, UNSTRING, WRITE 및
XML입니다.
예외 없이 모든 NEXT SENTENCE 문에
플래그를 지정하려면 NEXT SENTENCE 문을 사용하지 않음 규칙을
사용하십시오.
- ACCEPT DATE 또는 ACCEPT TIME이 아닌 CURRENT-DATE를 사용함
- 이 규칙은 ACCEPT DATE 및 ACCEPT
TIME 문에 플래그를 지정하는 데 사용합니다.
- 01, 05, 10, 15, ... 순서로 레벨 번호 사용
- 이 규칙은 레벨 번호의 특성이 다음과 같은 데이터 구조 정의에
플래그를 지정하는 데 사용합니다.
- 오름차순이 아닙니다.
- 1 또는 5의 배수인 값이 없습니다.
- 테이블 검색에 SEARCH가 아닌 SEARCH ALL을 사용함
- 이 규칙은 SEARCH ALL이 아닌 SEARCH를 사용하는
테이블 검색에 플래그를 지정하는 데 사용합니다.
- PERFORM 문에서 THRU 구를 사용함
- 이 규칙은 THRU 구가 없는 PERFORM
문에 플래그를 지정하는 데 사용합니다.