如何用C API as400锁定DATAAARA

如何用C API as400锁定DATAAARA,c,db2,ibm-midrange,db2-400,C,Db2,Ibm Midrange,Db2 400,如何使用C API通过MI锁定DATAARA?锁定/解锁功能仅适用于用户空间对象 QXXRTVDA-检索数据区功能仅显示信息而不锁定 cmd系统ALCBJ MYDAXXX*DTAARA;如果dataara已从另一个作业锁定,则不等待 当前代码不好 while( system("ALCOBJ MYDAXXX *DTAARA ") != 0) {sleep(1);} 您应该使用lock MI函数,该函数提供了一个在QSYSINC/MIH/lock中定义的等待时间参数。您可能希望将QXXRTVDA

如何使用C API通过MI锁定DATAARA?锁定/解锁功能仅适用于用户空间对象

QXXRTVDA-检索数据区功能仅显示信息而不锁定

cmd系统ALCBJ MYDAXXX*DTAARA;如果dataara已从另一个作业锁定,则不等待

当前代码不好

while(  system("ALCOBJ MYDAXXX *DTAARA ") != 0) {sleep(1);}

您应该使用lock MI函数,该函数提供了一个在QSYSINC/MIH/lock中定义的等待时间参数。您可能希望将QXXRTVDA和锁函数包装到您自己的函数中。使用unlock进行反向操作。 所有MI函数都在ILE C/C++中详细描述,以供AS/400 MI库参考,SC09-2418-00为V3R7发布,这是自1996年11月以来的最新图书版本。
在那本书中,你会像往常一样找到有用的例子。

你应该使用lock MI函数,它提供了一个等待时间参数,在QSYSINC/MIH/lock中定义。您可能希望将QXXRTVDA和锁函数包装到您自己的函数中。使用unlock进行反向操作。 所有MI函数都在ILE C/C++中详细描述,以供AS/400 MI库参考,SC09-2418-00为V3R7发布,这是自1996年11月以来的最新图书版本。
在这本书中,你会像往常一样找到有用的例子。

你可以指定ALCOBJ的等待时间。等待时间以秒为单位指定

ALCOBJ OBJ((MYDAXXX *DTAARA *EXCLRD)) WAIT(60)

您可以指定ALCOBJ的等待时间。等待时间以秒为单位指定

ALCOBJ OBJ((MYDAXXX *DTAARA *EXCLRD)) WAIT(60)

我不能使用锁定/解锁功能,它只能用于用户空间对象,不能用于DTAARA。@AlexandreKalendarev我不这么认为。要获取锁api所需的系统指针,应使用rslvsp api和WLI_DTAARA作为对象类型参数,该参数是mih/micommon.h中定义的_OBJ_type_T enum的成员,包含在include中。对象类型的完整列表在mih/miobjtyp.hI have error:object domain或object DATEST中偏移量的存储保护错误中定义。应用程序错误。MCH6801不受QC2UTIL1在语句00000000 12处的监控,指令X'0000'。代码为:some_object=rslvsp WLI_DTAARA,DATEST,MYLIB,_AUTH_ALL;mitime&超时,小时,分钟,秒,百分之一;锁定某个对象,超时,\u LENR\u锁定;我不能使用锁定/解锁功能,它只能用于用户空间对象,不能用于DTAARA。@AlexandreKalendarev我不这么认为。要获取锁api所需的系统指针,应使用rslvsp api和WLI_DTAARA作为对象类型参数,该参数是mih/micommon.h中定义的_OBJ_type_T enum的成员,包含在include中。对象类型的完整列表在mih/miobjtyp.hI have error:object domain或object DATEST中偏移量的存储保护错误中定义。应用程序错误。MCH6801不受QC2UTIL1在语句00000000 12处的监控,指令X'0000'。代码为:some_object=rslvsp WLI_DTAARA,DATEST,MYLIB,_AUTH_ALL;mitime&超时,小时,分钟,秒,百分之一;锁定某个对象,超时,\u LENR\u锁定;它对我有用。系统调用的返回码是什么?如果数据区域存在并且可以获得锁,则返回代码为0;如果数据区域不存在或者无法获得锁,则返回代码为1。作业日志中没有消息,因为系统会删除该消息。如果另一个作业有锁,我的程序会等待。谢谢芭芭拉,我写道:ALCOBJ OBJMYDAXXX*DTAARA*exc WAIT60不带RD*exc也适用于我。你说它不起作用是什么意思?数据区域是否未被锁定?还是说这不妨碍另一份工作得到锁?这对我很有效。系统调用的返回码是什么?如果数据区域存在并且可以获得锁,则返回代码为0;如果数据区域不存在或者无法获得锁,则返回代码为1。作业日志中没有消息,因为系统会删除该消息。如果另一个作业有锁,我的程序会等待。谢谢芭芭拉,我写道:ALCOBJ OBJMYDAXXX*DTAARA*exc WAIT60不带RD*exc也适用于我。你说它不起作用是什么意思?数据区域是否未被锁定?或者,这不是在阻止另一个作业获得锁吗?