1

私は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.(test.0) に行くのですか?

これよりも Rexx での角括弧の使用に関する詳細情報を見つけることができません: #Reginald's tail expression

したがって、今のところ z/OS の下では、次のことにこだわっています。

temp=test.0
say test.temp
4

4 に答える 4

3

あなたの質問に対する答えはすでに見つかりました。

メインフレーム REXX (z/OS、z/VSE、z/VM) での唯一の方法は、上記でコーディングしたとおりです。

temp=test.0
say test.temp

REXX インタープリターが何を行っているかを理解するための最良の資料は、「z/OS TSO/E REXX リファレンス」の複合シンボル(V2.1 リンク) にあります。インタープリターが行を処理する方法が原因で、 test.test.0 が機能しない理由を説明しています。この場合、ステム test.test.0 を探しています。

コーディングできることに注意してください

test.test.0 = 0

そして、有効なステム test.test.0 が得られます (ただし、ほとんどの場合、おそらく役に立たないでしょう)。

リンクの次のトピックでは、ステム変数について説明しています。これにも多くの有用な情報があります。

z/OS TSO/E REXX Referencez/OS TSO/E REXX User's Guide (どちらも V2.1 リンク)を読むことを強くお勧めします。


于 2014-07-31T16:08:58.783 に答える
2

その他の純粋な (非オブジェクト) Rexx の代替手段:

interpret "say test." || test.0

また

say value("test." || test.0)
于 2014-07-31T16:12:36.973 に答える
0

z/OS のデフォルトの Rexx インタープリターは、OORexx ではなく Classic Rexx です。OORexxはz/OSに移植されていません。

于 2014-07-31T11:48:02.300 に答える
0

(少なくとも z/OS では) '.0' 変数は自動的に更新されないことに注意してください。例えば:

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

初期化された変数のデフォルト値 (変数の名前) である 'LIST.0' を指定します。

于 2014-08-04T10:02:40.587 に答える