Rexx-stacks

提供:Dev Guides
移動先:案内検索

Rexx-スタック

スタックは外部データキューと呼ばれることもありますが、一般的な使用法に従い、スタックと呼びます。 Rexxの論理的に外部にあるメモリブロックです。 プッシュやキューなどの命令はデータをスタックに配置し、プルやプルなどの命令はスタックからデータを抽出します。 キューに組み込まれた組み込み関数は、スタックにあるアイテムの数を報告します。

スタックの例を見てみましょう。

/*STACK:*/
/* */
/*This program shows how to use the Rexx Stack as either a*/

/*stack or a queue.*/
do j = 1 to 3
push ‘Stack: line #’ || j

/*push 3 lines onto the stack*/
end
do j = 1 to queued()

/*retrieve and display LIFO*/
pull line
say line
end
do j = 1 to 3 queue ‘Queue: line #’ || j

/*queue 3 lines onto the stack*/
end
do queued()

/*retrieve and display FIFO*/
pull line
say line
end
exit 0

プログラムの最初のdoループは、3行のデータをスタックに配置します。 これを行うには、プッシュ命令を使用します。 行に番号を付けて、LIFO順序で取得したときに順序が明確になるようにします。

プッシュ命令によってスタックに配置されたアイテムは、LIFOの順序で取得されます-

do j = 1 to 3
push ‘Stack: line #’ || j    /*push 3 lines onto the stack*/
end

次のコードブロックは、スタック上のすべての行を取得するためのループだけでなく、スタック上の行の数を発見するためにキューイングされた組み込み関数の使用を示しています-

do j = 1 to queued()   /*retrieve and display LIFO*/
pull line
say line
end

3つのアイテムはプッシュによってスタックに配置されたため、LIFOの順序で取得されます。

上記のプログラムの出力は次のようになります。

STACK: LINE #3
STACK: LINE #2
STACK: LINE #1