瞬时数据
IccDataQueue 和 IccDataQueueId 这两个临时数据类允许您将数据存储在临时数据队列中,以便后续处理。
- 从瞬时数据队列读取数据
readItem 方法用于从队列中读取项。 它返回对包含信息的 IccBuf 对象的引用。
- 将数据写入瞬时数据队列
IccDataQueue writeItem将新数据项添加到队列中,并从指定的缓冲区中获取数据。
- 删除瞬时数据队列
empty 方法将删除队列中的所有项。
IccDataQueue用于表示临时存储队列。 IccDataQueueId用于按名称识别队列。 对象 IccDataQueueId 初始化后,即可用其替代队列名称进行识别,此举还具备通过C++编译器进行额外错误检测的优势。
IccDataQueue中的可用方法 IccTempStore中的方法类似。 有关这些信息的更多信息,请参阅 临时存储器。
管理瞬时数据的示例
在C++示例程序中 ,可以找到演示如何使用 IccDataQueue IccDataQueueId示例程序以及预期输出,文件为 ICC$DAT 。 此处提供的代码没有终端 IO 请求。
图 1 显示了前两行,其中包括基础类的头文件以及为应用程序设置操作环境的标准 main 函数。
#include "icceh.hpp"
#include "iccmain.hpp"图 2 为样本程序定义了一些缓冲区。
const char* queueItems[] =
{
"Hello World - item 1",
"Hello World - item 2",
"Hello World - item 3"
};在图3中 , IccUserControl 运行方法包含此示例的用户代码。
void IccUserControl::run()
{图4中的片段首先创建一个标识对象,类型为 IccDataQueueId ,包含“ICCQ”。 然后创建 IccDataQueue ,表示瞬态数据队列“ICCQ”,并清空其中的数据。
short itemNum =1;
IccBuf buffer( 50 );
IccDataQueueId id( "ICCQ" );
IccDataQueue queue( id );
queue.empty();图 5 中的循环将这三个数据项写入瞬时数据对象。 数据通过为此目的创建的 IccBuf 对象传递。
for (short i=0 ; i<3 ; i++)
{
buffer = queueItems[i];
queue.writeItem( buffer );
}写出了三条记录,现在把它们读回来,显示它们被成功地写了出来。 代码如 图 6中所示。
buffer = queue.readItem();
while ( queue.condition() == IccCondition::NORMAL )
{
buffer = queue.readItem();
}图 7 显示了 run的结束,这会将控制权返回给 CICS®。
return;
}