瞬时数据

IccDataQueueIccDataQueueId 这两个临时数据类允许您将数据存储在临时数据队列中,以便后续处理。

您可以执行以下操作:
  • 从瞬时数据队列读取数据

    readItem 方法用于从队列中读取项。 它返回对包含信息的 IccBuf 对象的引用。

  • 将数据写入瞬时数据队列

    IccDataQueue writeItem将新数据项添加到队列中,并从指定的缓冲区中获取数据。

  • 删除瞬时数据队列

    empty 方法将删除队列中的所有项。

IccDataQueue用于表示临时存储队列。 IccDataQueueId用于按名称识别队列。 对象 IccDataQueueId 初始化后,即可用其替代队列名称进行识别,此举还具备通过C++编译器进行额外错误检测的优势。

IccDataQueue中的可用方法 IccTempStore中的方法类似。 有关这些信息的更多信息,请参阅 临时存储器

管理瞬时数据的示例

在C++示例程序中 ,可以找到演示如何使用 IccDataQueue IccDataQueueId示例程序以及预期输出,文件为 ICC$DAT 。 此处提供的代码没有终端 IO 请求。

图 1 显示了前两行,其中包括基础类的头文件以及为应用程序设置操作环境的标准 main 函数。

图 1。 包含基础类和标准 main 函数的头文件的代码
#include "icceh.hpp"
#include "iccmain.hpp"

图 2 为样本程序定义了一些缓冲区。

图 2。 定义缓冲区的代码
const char* queueItems[] =
{
"Hello World - item 1",
"Hello World - item 2",
"Hello World - item 3"
};

在图3中IccUserControl 运行方法包含此示例的用户代码。

图 3。 用户代码
void IccUserControl::run()
{

图4中的片段首先创建一个标识对象,类型为 IccDataQueueId ,包含“ICCQ”。 然后创建 IccDataQueue ,表示瞬态数据队列“ICCQ”,并清空其中的数据。

图 4: 用于创建瞬时数据队列的代码
 short itemNum =1;
IccBuf buffer( 50 );
IccDataQueueId id( "ICCQ" );
IccDataQueue queue( id );
queue.empty();

图 5 中的循环将这三个数据项写入瞬时数据对象。 数据通过为此目的创建的 IccBuf 对象传递。

图 5。 将数据写入瞬时数据队列的循环
 for (short i=0 ; i<3 ; i++)
{
buffer = queueItems[i];
queue.writeItem( buffer );
}

写出了三条记录,现在把它们读回来,显示它们被成功地写了出来。 代码如 图 6中所示。

图 6。 用于检索已写入记录的代码
 buffer = queue.readItem();
while ( queue.condition() == IccCondition::NORMAL )
{
buffer = queue.readItem();
}

图 7 显示了 run的结束,这会将控制权返回给 CICS®。

图 7。 运行结束
 return;
}