2017-02-28 4 views

답변

6

짧은 대답 ACTGRP(*New)이 설정되어 있지 않으면
아니, 그들은 다시 초기화되지 않습니다 또는 당신은 다른 방법으로 기동 그룹을 확보.

긴 대답 *INLR하지 활성화 그룹으로의 RPG주기의 함수이며, 예상대로 대부분 작동합니다 (프로그램이 언로드되지 제외), 같은 당신이주기의 주요 프로그램을 사용하고있다. 선형 메인 프로그램의 경우 모든 베팅이 꺼져 있습니다. 매뉴얼에는 선형 모듈에서 사이클에 종속 된 기능이 "지정되지 않을 수 있습니다"라고되어 있습니다. 이 문서에서는 선형 모듈에서 *INLR이 예상대로 작동하지 않는다는 것을 직접 나타내지는 않지만 *INLR이주기에 연결되어 있고 선형 모듈에주기가 포함되어 있지 않다는 것을 알아야합니다. 선형 모듈은 MAIN 또는 NOMAIN 키워드를 사용하는 모듈입니다. 부수적으로, 변수 초기화뿐만 아니라 (또는 대신) LR을 제어하는 ​​다른 것들이 있습니다.

을 사용하면 프로그램이 시작될 때 새 활성 그룹이 작성되고 프로그램이 종료 될 때 내재적으로 종료됩니다. 따라서 프로그램은 LR이 켜지거나 꺼질 때마다 또는 프로그램이주기 메인 프로그램인지 또는 선형 메인 프로그램인지 여부에 상관없이 항상 닫힙니다.

이름 지정된 활성 그룹 또는 ACTGRP(*CALLER)을 사용하고 호출자가 이름 지정된 활성 그룹에서 실행 중이고 활성 그룹의 모든 프로그램이 종료 될 때 수동으로 활성 그룹을 재개하면 필드가 초기화됩니다. RCLRSC은 여기에 아무런 영향을 미치지 않습니다.

기본 활성 그룹 또는 ACTGRP(*CALLER)을 사용하고 호출자가 기본 활성 그룹에서 실행 중이고 수동으로 RCLRSC 인 경우 필드가 초기화됩니다. RCLACTGRP은 여기에 아무런 영향을 미치지 않습니다. 조심하십시오. 문제가 발생할 수 있습니다.

마지막으로이 옵션은 전역 범위의 변수에만 적용됩니다. 서브 - 프로 시저 내에서 정의 된 로컬 스코프 변수는 정적으로 정의되지 않는 한 항상 입력시 초기화되고 반환 될 때마다 해제됩니다. 정적 지역 변수는 전역 변수처럼 동작합니다. 즉, 프로 시저의 첫 번째 호출 중에 할당되고 초기화되며 호출간에 지속됩니다.

+0

자세한 답변은 @jmarkmurphy. inz 선언으로 변수를 초기화하면 어떻게됩니까? 프로그램이 호출 될 때마다 또는 메모리에 처음로드 될 때마다이 값으로 설정됩니까? 나는. inz 선언은 마지막 호출의 값을 덮어 쓰거나 이전 호출의 값을 유지합니까? – mike

+1

같은 답변입니다. 'Inz'는 프로그램이 초기화 될 때 초기화되는 변수를 결정합니다. – jmarkmurphy

+0

귀하의 대답은 제가 인증 그룹에 대해 읽었을 때 기대했던 것입니다. 그러나 디버깅을하지 않으면 테스트 하니스에서 반복적으로 호출하고 프로그램을 실행할 때마다 변수를 다시 초기화합니다. 프로그램은 명명 된 활성 그룹에서 실행됩니다. 코드는 모듈에 있으며 목표 릴리스 V7R1M0에서 컴파일됩니다. 변수를 다시 초기화하는 방법을 알아 내기 위해 내가 무엇을 할 수 있는지 잘 모르겠습니다. – mike

2

선형 기본 모듈은 전역 변수와 관련하여 노움 모듈처럼 동작합니다. 전역 변수는 프로 시저가 모듈에서 처음 호출 될 때 초기화되며 다시 초기화되지 않습니다. https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzasd/cycvslinear.htm

+0

이번 토론에 참여해 주셔서 감사 드리며, 처음으로 선형 모듈 (linear-main module)이라는 용어를 발견하게되었습니다. 귀하가 제공 한 링크를 연구하는 데 관심이 있습니다. – mike