Как заблокировать DATAAARA на C API as400 - PullRequest
0 голосов
/ 12 октября 2018

Как заблокировать DATAARA с помощью MI, используя C API?Функция lock () / unlock () только для объектов пользовательского пространства.

Функция QXXRTVDA () - Retrieve Data Area отображает только информацию без блокировки.

Система cmd («ALCOBJ MYDAXXX * DTAARA»);не нужно ждать, если dataara уже блокируется от другого задания.

Текущий код (не подходит)

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

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Вы можете указать время ожидания для ALCOBJ.Время ожидания указывается в секундах.

ALCOBJ OBJ((MYDAXXX *DTAARA *EXCLRD)) WAIT(60)
0 голосов
/ 13 октября 2018

Вы должны использовать функцию MI lock (), которая предоставляет аргумент wait_time, определенный в QSYSINC / MIH / LOCK.Возможно, вы захотите обернуть функции QXXRTVDA () и lock () в свои собственные функции.Используйте unlock (), чтобы сделать обратное.Все функции MI подробно описаны в «Справочнике по библиотеке MI ILE C / C ++ для AS / 400, SC09-2418-00», выпущенном для V3R7, текущей версии книги с ноября 1996 года. В этой книге вы найдете полезные примеры, как обычно.

...