2013-10-11 2 views
0

파일의 컴파일 시간 테스트를 만들고 싶습니다. 설정은 다음과 같습니다.진행중인 컴파일 시간 동안의 파일 이름 4gl

1. We have procedure files proc1.p, proc2.p, ... proc1000.p. 
2. All procedure files proc1.p, proc2.p, ... proc1000.p have a common include file incl.i 

나는 컴파일 시간 동안 다른 동작을 호출하기 위해 부모 프로 시저의 이름을 수행 incl.i에서 전처리 변수를 가지고 싶습니다. 내가 뭘하려

/* incl.i */ 범위-DEFINE procName을 {& FILE-NAME}

이가 {& FILE-NAME} 작동하지 않습니다이의 이름으로 평가 & 파일을 포함하십시오.

이제이 절차 : 파일 이름은 프로 시저 파일의 이름을 포함하지만 컴파일시에는 알 수 없습니다.

아이디어가 있으십니까? include에 새로운 입력 매개 변수를 추가하고 싶지 않으므로 proc1.p ... proc1000.p를 업데이트하십시오.

답변

3

전처리 기는 지옥으로가는 길입니다 ... 그러나 부모 절차에서 & GLOBAL-DEFINE을 만들 수 있다고 주장한다면. 다음과 같은 내용 :

/* parent.p 
*/ 

&GLOBAL-DEFINE parentName {&FILE-NAME} 

{include.i} 


/* include.i 
*/ 

display "{&parentName}". 
+0

감사합니다. Tom이 사진을 가지고 있습니다. 이것은 작동하지만 FILE-NAME 값을 매개 변수로 보내는 것보다 낫지 않습니다. 이것은 피하고 싶습니다. 특히, 필자가 말했듯이, include가 포함 된 모든 파일을 업데이트하고 싶지 않습니다. +1 노력! –

+0

그런데 OpenEdge Architect (및 Dev Studio)에서는 "& Preprocess"라는 뷰가 있는데이 뷰는 사전 프로세스를 "읽는"데 사용할 수 있습니다. 매우 유용합니다. 그렇지 않으면 전 공정이주의 깊게 사용되어야한다는 데 동의합니다. –

+0

네, 부모님을 만져야 할 것입니다.하지만 최소한 매개 변수가 필요한 모든 장소가 아니라 단지 한 줄로되어있을 것입니다. –

관련 문제