본문 바로가기

KnowledgeBase

RPGLE CODE STYLE GUIDE

https://www.nicklitten.com/rpg-ile-coding-style-standards-for-ibm-i-iseries-and-as400-programmers/

 

RPG Programming Standards - Code Style Guide for IBM i, iSeries and AS400 Programmers - Nick Litten is IBM-i, AS400 iSeries RPG

RPG Programming Standards? “RPG Programming Standards” have been debated since the invention of the wheel. With an entire generation of RPG programmers evolving from the early days of System/3x column based RPG code to modern free flowing web format code t

www.nicklitten.com

코드를 명확하게 하기 위해서 주석을 사용해라

프로그램이나 프로시져의 요약정보를 제공할 것
서브루틴, 프로시져 등의 타이틀을 제공할 것
쉽게 읽히지 않는 코드를 설명할 것

프로그램이나 프로시져의 시작에 간단한 요약정보를 포함시켜라

프로그램이나 프로시져의 제목정보
프로그램이나 프리시져의 목적의 간단한 설명
변경날짜, 변경자, 변경목적을 포함한 변경이력
인디케이터 사용에 대한 정보
파라메터와 리턴값 등에 대한 프로시져 인터페이스에 대한 설명
프로시져 호출 방법 예시

코드 섹션을 나누기 위해 일관된 '표시 라인' 주석을 사용해라

*-------------------------------------------------------------
요련거나
*====================================
요런거

관련된 소스라인을 그루핑하거나 두드러지게 보이기 위해 블랭크 라인을 사용해라

관련된 코드 사이를 블랭크 라인 1줄로 띄워서 사용할 것

81 ~ 100컬럼에 사용하는 END-LINE  주석의 사용을 피해라

오른쪽 라인에 써 두는 주석은 코드 유지보수시 유실될 수 있으며 라인 주석과 동기화되지 않기 쉽다.
필요하면 라인 주석으로 빼고, 단순히 코드를 반복설명하는 주석이라면 제거하라

모든 변수와 상수는 D-SPEC에 정의해라

한군데서 정의해라 중간에 정의해서 쓰지 말고, 키 리스트와 파라메터 리스트는 C-SPEC의 제일 첫 부분에 정의해라

문자 그대로가 특정한 의미를 갖고 있을 경우 D-SPEC에 상수로 정의해라

유지보수를 쉽게하는 문서화요소로 사용될 수 있다. 단 하나의 예외는 0과 1이 완벽하게 이해되게 사용될때이다
예를들면, 카운팅 되는 변수를 0으로 초기화 하는 경우

D-SPEC 변수 이름을 들여쓰기 해라

DWKTMPDAT 말고 D WKTMPTDAT

데이터 구조를 정의할 때 위치 표기법 대신 길이 표기법을 사용해라

D RTNCODE DS
D PACKEDNBR 1 8P 5

말고

D RTNCODE DS
D PACKEDNBR 15P 5 

이렇게 사용

데이터 구조에서 실제 위치가 중요할 경우에만 위치 표기법을 사용해라

프로그램 상태 데이터 스크럭쳐, 파일 정보 데이터 스트럭쳐 또는 API 리턴 데이터 스트럭쳐를 사용하는 경우, 필요한 필드 값만 사용할 경우,

D APIRtn DS
D PackedNbr 145 152P 5

더 좋은건 이렇게 잘라 쓴걸 길이 표기한 변수로 OVERLAY사용

D APIRtn DS
D Pos145 145 152
D PackNbr 15P 5
OVERLAY(Pos145)

필드 오버래핑 정의할때 위치 표기법 대신 overlay 키워드를 사용해라

컴파일 타임 배열을 사용한다면 **CTDATA form을 사용해라

이름지을때는 충분히 설명적이어야 한다.

모호하면 안됨, 읽기 쉬워야함, 명백해야함,
길이는 10~14자가 좋다. 
네이밍은 변수나 상수를 설명하는 이름이어야 함
서브루틴이나 프로시져 네이밍의 경우 CL명령어 마냥 동사/목적어 구조를 따른다.
네이밍 규약 표준화를 위해 네이밍 사전을 사용할 것.

RPG  예약어나, 명령어등을 사용할때는 대문자만 쓰고, 그 외에는 mixed case를 사용한다.

네이밍할때 특수문자 쓰지 말것 '_' 이것도 쓰지 말것 mixed case로 해결해라

인디케이터 왠만하면 쓰지마라 줄여나가라!!!!!!

가능하면 인디케이터 대신 내장함수를 써라 ex. %EOF, %ERROR, %FOUND, E opreration extender

인디케이터 사용시

EVAL *IN30 = *ON 사용할 것 SETON, SETOFF, MOVEA 사용하지 말것
해당 인디케이터를 사용하는 조건문과 가까운 곳에서만 사용할 것, 멀 면 의미있는 변수에 값을 넣어 써라

조건 인디케이터 절대 쓰지 마라 if 문으로 써라

인디케이터 사용에 대한 설명을 남겨라

IFXX, CABXX, CASXX, CAT, DOWUXX DOWXX, WHXX 쓰지 마라 구식 OPCODE

GOTO, CABXX, COMP 쓰지 마라

중첩 IF 대신 SELECT / WHEN / OTHER / ENDSL 사용해라

ENDIF, ENDDO, ENDSL, ENDCS 잘 사용해라

BITON, BOTOFF, MXXZO, TESTB, TESTZ 사용하지 마라 읽기 어렵다

프로토타입을 /COPY 멤버안에 넣어서 써라

CALL, CALLB -> CALLP ??