====== Check Object Lock ====== **FREE ctl-opt dftactgrp(*no) actgrp(*caller) bnddir('MYBNDDIR'); /include '/usr/local/include/llist/llist_h.rpgle' /include '/usr/local/include/llist/lutil_h.rpgle' /include '/usr/local/include/libc_h.rpgle' /include '/usr/local/include/system_h.rpgle' /include '/usr/local/include/userspace_h.rpgle' dcl-pr system_listObjectLocks extpgm('QWCLOBJL'); qualUsName char(20) const; format char(8) const; qualObjName char(20) const; objectType char(10) const; memberName char(10) const; errorCode likeds(qusec_t); end-pr; dcl-ds object_t qualified template; name char(10); library char(10); type char(10); end-ds; dcl-pi *n; file char(10) const; end-pi; if (%addr(file) <> *null and file <> *blank); main(); else; dsply 'no file passed'; endif; *inlr = *on; dcl-proc main; dcl-s abnormallyEnded ind; dcl-s objects pointer; dcl-s value char(50); dcl-ds object likeds(object_t) based(entry); dcl-s lockCount int(10); objects = lutil_listObjects('*ALL' : file : '*FILE'); entry = list_iterate(objects); dow (entry <> *null); value = %str(entry); if (isLocked(object)); dsply %trimr(object + ' is locked'); lockCount += 1; endif; entry = list_iterate(objects); enddo; if (lockCount = 0); dsply 'Alle Objekte sind nicht gesperrt.'; endif; on-exit abnormallyEnded; if (objects <> *null); list_dispose(objects); endif; end-proc; dcl-proc isLocked; dcl-pi *n ind; object likeds(object_t) const; end-pi; dcl-s abnormallyEnded ind; dcl-s usName char(10); dcl-s usLib char(10) inz('QTEMP'); dcl-ds errorCode likeds(qusec_t); dcl-ds userspaceHeader qualified based(usPtr); userArea char(64); headerSize int(10); releaseLevel char(4); formatName char(8); apiUsed char(10); dateCreated char(13); infoStatus char(1); usSizeUsed int(10); offsetInput int(10); sizeInput int(10); offsetHeader int(10); headerSecSiz int(10); offsetList int(10); listSecSize int(10); nmbrEntries int(10); entrySize int(10); entryCCSID int(10); regionID char(2); langID char(3); subListInd char(1); us_gen_reser char(42); end-ds; clear errorCode; usName = %subst(%str(tmpnam(*omit)) : 7); userspace_create(usName + usLib : '' : 64000 : x'00' : '*ALL' : 'Test object lock'); clear errorCode; system_listObjectLocks(usName + usLib : 'OBJL0100' : object.name + object.library : '*FILE' : '*NONE' : errorCode); userspace_retrievePointer(usName + usLib : usPtr); return userspaceHeader.nmbrEntries > 0; on-exit abnormallyEnded; userspace_delete(usName + usLib : errorCode); end-proc; {{tag>devel ibm rpg}}