문제

나는 Rexx에게 아주 새로운 것, 정말로 기본적인 것들이 여기에 배열의 마지막 요소를 빨리 얻고 싶습니다.

Windows 용 REXX 4.2.0 오브젝트 :

test.0=2
test.1="foo"
test.2="bar"
say test.[test.0]
.

==> 원하는 결과 출력 :

bar
.


나의 쉬운 추측은 Open Object Rexx 인터프리터가 일하고 있다는 것입니다.대괄호는 z / OS에서 rexx와 함께 사용할 수 없습니다.

내 마음에 오는 첫 번째 물건 (RTFM하지 않았다) :

say test.test.0
say test.(test.0)
.

==> 출력이 좋지 않음 :

TEST.TEST.0
    5 *-* say test.(test.0)
Error 16 running Test.REX line 5:  Label not found
Error 16.1:  Label "SYNTAX" not found
.

사각형 브래킷의 다른 용도가 있습니까? 왜 C / Java / Python에서 오는 이유는 Test.test.0 또는 테스트를 위해 가고 있습니다. (test.0) 더미처럼?

# Reginald의 꼬리표현

그래서 z / OS에서 지금은 멈추고 있습니다 :

temp=test.0
say test.temp
.

도움이 되었습니까?

해결책

이미 귀하의 질문에 대한 답변을 발견했습니다.

메인 프레임 REXX (z / OS, Z / VSE, Z / VM)의 유일한 방법은 위에 코딩 된 것처럼 다음과 같습니다.

temp=test.0
say test.temp
.

REXX 인터프리터가 수행하는 것을 이해하기위한 최상의 문서는 복합 기호 (v2.1 링크). Interprecter가 줄을 처리하는 방법 때문에 test.test.0이 작동하지 않는 이유를 설명합니다. 이 경우 줄기 test.test.0을 찾고 있습니다.

코드

를 코드 할 수 있습니다

test.test.0 = 0
.

그리고 당신은 유효한 줄기 test.test.0 (대부분의 경우 쓸모 없을 것)을 가질 것입니다.

링크의 다음 주제는 많은 유용한 정보도 제공하는 줄기 변수에 대해 설명합니다.

z / OS TSO / E REXX 참조 z / OS TSO / E REXX 사용 설명서 (v2.1 링크 모두)


다른 팁

기타 순수한 (비 객체) REXX 대안 :

interpret "say test." || test.0
.

또는

say value("test." || test.0)
.

z / OS의 기본 REXX 인터프리터는 OREXX가 아닌 클래식 REXX입니다.oorexx ~ z / OS에서

(z / OS에서 적어도) '.0'변수는 자동으로 업데이트되지 않습니다.e.g. :

list.1 = 17
list.2 = 12
say 'List.0 is' list.0
.

는 초기화 된 변수의 기본값 (변수의 이름) 인 'list.0'을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top