REXX обеспечивает организацию и ведение собственных очередей отдельно от очередей межзадачных взаимодействий OS/2. Очереди, о которых будет идти речь в этом разделе, используются только в процедурах REXX.
В процедурах работа с очередями REXX осуществляется с помощью следующих инструкций:
PUSH | Помещает строку в начало очереди (LIFO). |
QUEUE | Добавляет строку в конец очереди (FIFO). |
PULL | Считывает строку из начала очереди. Если очередь пуста, то строка считывается с консоли (STDIN:). |
Чтобы получить информацию о количестве элементов, оставшихся в очереди, используйте функцию QUEUED.
Доступ к очередям
REXX поддерживает два типа очередей. Доступ к этим очередям и их обработка осуществляется по именам.
Сеансовые очереди - Для каждого активного сеанса OS/2 автоматически обеспечивается одна сеансовая очередь. Сеансовая очередь всегда имеет имя SESSION, и REXX создает ее при первом запросе от программы или процедуры на помещение информации в очередь. Все процессы (программы и процедуры) в сеансе могут получить доступ к сеансовой очереди. Однако каждый конкретный процесс может получить доступ к сеансовой очереди, определенной только для того сеанса, в котором он выполняется, и эта сеансовая очередь не является уникальной для любого одиночного процесса, выполняющегося в сеансе.
Личные очереди - Личные очереди создаются (и удаляются) при выполнении Вашей конкретной программы. Вы можете сами дать имя очереди, либо оставить это на усмотрение языка REXX. Для того, чтобы Ваша программа могла использовать любую очередь, ей должно быть известно имя очереди.