临时存储器
临时存储类 IccTempStore 和 IccTempStoreId 允许您将数据存储在临时存储队列中。
- 从临时存储器队列中 读取项 (readItem 方法)
IccTempStore readItem从临时存储队列中读取指定的项目。 它返回对包含信息的 IccBuf 对象的引用。
- 将新项写入 到临时存储器队列的末尾 (writeItem 方法)
编写项 也称为 添加项。 这里讲的是写以前没有写过的项。 可以使用 rewriteItem 方法来编写已存在的项,这称为 更新项。
IccTempStore writeItem在队列末尾添加新项目,从指定的缓冲区中获取数据。 如果成功完成此操作,那么将返回添加的记录的项号。
- 更新临时存储器队列中的项 (rewriteItem 方法)
更新项也称为 重写 项。 IccTempStore rewriteItem用于更新临时存储队列中的指定项目。
- 读取临时存储队列中的下一个项目 ( readNextItem 方法)
- 删除 所有临时数据 (empty 方法)
不能删除临时存储器队列中的个别项。 要删除与 IccTempStore相关的所有临时数据,请使用 IccTempStore empty 方法。
IccTempStore用于表示临时存储队列。 IccTempStoreId用于按名称识别队列。 对象 IccTempStoreId 初始化后,即可用其替代队列名称进行识别,此举还具备通过C++编译器进行额外错误检测的优势。
IccTempStore中的可用方法 IccDataQueue中的方法类似。 有关更多信息,请参阅 瞬时数据。
临时存储器示例
我们提供了一份示例程序,演示了如何使用 IccTempStore 和 IccTempStoreId。 可以在 C++ 样本程序(作为文件 ICC$TMP) 中找到此程序及其期望的输出。 此处提供了样本,没有终端 IO 请求。
图 1 显示了前三行,其中包括基础类的头文件,为应用程序设置操作环境的标准 main 函数以及标准库。
#include "icceh.hpp"
#include "iccmain.hpp"
#include <stdlib.h>图 2 为样本程序定义了一些缓冲区。
const char* bufferItems[] =
{
"Hello World - item 1",
"Hello World - item 2",
"Hello World - item 3"
};在图3中 , IccUserControl 运行方法包含此示例的用户代码。
void IccUserControl::run()
{图4中的片段首先创建一个标识对象 IccTempStoreId ,其中包含字段“ICCSTORE”。 然后创建 IccTempStore ,表示临时存储队列“ICCSTORE”,并清空其中的记录。
short itemNum = 1;
IccTempStoreId id("ICCSTORE");
IccTempStore store( id );
IccBuf buffer( 50 );
store.empty();在 图 5中,此循环将三个数据项写入临时存储器对象。 数据通过为此目的创建的 IccBuf 对象传递。
for (short j=1 ; j <= 3 ; j++)
{
buffer = bufferItems[j-1];
store.writeItem( buffer );
}图 6 中的此代码段将项读回,修改项并将其重写到临时存储器队列。 首先,使用 readItem 方法从临时存储器对象读取缓冲区。 使用 IccBuf 类的 insert 方法更改缓冲区对象中的数据,然后 rewriteItem 方法覆盖缓冲区。 循环继续读取下一个缓冲区项。
buffer = store.readItem( itemNum );
while ( store.condition() == IccCondition::NORMAL )
{
buffer.insert( 9, "Modified " );
store.rewriteItem( itemNum, buffer );
itemNum++;
buffer = store.readItem( itemNum );
}在 图 7中,此循环再次读取临时存储器队列项以显示它们已更新。
itemNum = 1;
buffer = store.readItem( itemNum );
while ( store.condition() == IccCondition::NORMAL )
{
term->sendLine( " - record #%d = [%s]", itemNum,
(const char*)buffer );
buffer = store.readNextItem();
}图 8 显示了 run的结束,这会将控制权返回给 CICS®。
return;
}