?
Solved

DTAQ's

Posted on 2007-07-25
7
Medium Priority
?
942 Views
Last Modified: 2013-12-06
How do you change a dtaq?
0
Comment
Question by:dllssn
  • 4
  • 3
7 Comments
 
LVL 27

Assisted Solution

by:tliotta
tliotta earned 1500 total points
ID: 19567787
dllssn:

To do what?

In general, if I understand your question:

1. Call the Retrieve Data Queue Description (QMHQRDQD) API to hold current *dtaq attributes in a structure.
2. Execute the DLTDTAQ command.
3. Execute the CRTDTAQ command using values from the retrieved structure plus whatever changes you want made.

The steps might be preceded with retrieval of authorities and ownership and followed by setting authorities and ownership.

IOW, there is no "change *dtaq attributes" function. A *dtaq is a fairly low-level high-performance object. It has extremely small object overhead to achieve performance. As such, it has no significant object methods attached that can be used for your purpose. Even standard system methods such as lock and pointer validation are not directly exposed to HLL programs -- you are responsible for choosing when to test locks for example.

Tom

0
 

Author Comment

by:dllssn
ID: 19567838
I have a dtaq with the a library list that is incorrect. How do I change it?
0
 
LVL 27

Assisted Solution

by:tliotta
tliotta earned 1500 total points
ID: 19568481
dllssn:

Since there is no library list associated with a *dtaq, I can only assume a minor misunderstanding. If the *dtaq has been created in the wrong library, the simplest fix would be to move it to the correct library.

E.g.:

 ==>  movobj  badlib/mydtaq  objtype( *dtaq ) tolib( goodlib )

That command would move a *DTAQ named MYDTAQ out of library BADLIB and into GOODLIB.

A "library list" is an attribute of a job running on the system. The list determines the 'search path' for objects used by the job. You can insert and remove entries from a job's library list in order to alter the search path.

Usually, library lists are maintained as attributes of job description ( *JOBD ) objects. If a library list is changed on a *jobd, then every job that uses that *jobd in the future will start with the changed list.

Ask more, if clarification is needed.

Tom
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:dllssn
ID: 19568554
I am not making myself very clear. Sorry.
The dtaq data is actually a list of libraries. The data in the dtaq is not correct. How to I correct it?
0
 
LVL 27

Accepted Solution

by:
tliotta earned 1500 total points
ID: 19568951
dllssn:

Ah, much more clear.

Technically, you don't. A "queue" has entries that can be pulled from the queue; once pulled, they're gone forever. New entries can be "pushed" onto the queue.

An entry is pulled from the queue with the Receive Data Queue (QRCVDTAQ) API. A new entry is added to the queue with the Send Data Queue (QSNDDTAQ) API. Queues are used as high-speed communication objects between jobs or between two programs in the same job. Any number of programs can be adding entries to the queue, and any number of programs can be receiving entries from the queue. Queues are a way to scale work requests up or down; this is done by changing the number of programs sending to or receiving from the queue.

If you _really_ want to 'change' the entries on a *dtaq, simplest would be to clear the existing entries and then simply add the new entries in the order you want or with the data you want. You could also receive each existing entry into an array, and then turn around and re-add the ones you want with whatever changes are needed.

However, I would expect that a *dtaq is a very unusual object to hold a list of libraries. It could make some sense, I suppose, as a temporary storage object for an active job; but that job would necessarily have full control of the queue entries anyway.

In short, you don't 'change' anything in a *dtaq. You receive entries with an API and you add entries with another API. Receiving an entry automatically deletes that entry from the queue. It would only be 'changed' by virtue of being added back onto the queue with different data in a new entry. Entries are ordered in the queue by the order they arrive.

There is also the Retrieve Data Queue Message (QMHRDQM) API. "Retrieve" is different from "receive" in that the entry is not removed from the queue. However, that gives you no way to change the entry that remains on the queue.

A *dtaq can be created so that the entries all have keys. By adding keyed entries, you gain the ability to receive entries by key. This gives an ability to choose which entries to receive and also to receive in an order other than arrival sequence. But it still doesn't provide any 'change' capability.

The only way to 'change' is to remove the old and add the new. If the sequence is important, the entries must be added in the proper order or keys must be used to control the sequence.

Technical side-note -- certain low-level system functions can provide direct access to memory locations occupied by *dtaqs and the entries. This generally requires high authority for the required MI programming or *SERVICE special authority for access to System Service Tools plus a service ID. (And of course, knowledge of how to navigate machine pointers, offsets, etc., to locate the byte addresses, etc.)

How did you determine that a "*DTAQ" was the object type that is involved? I would expect some other type of object to hold a list of libraries.

An 500 point question deserves plenty of answering.

Tom

0
 

Author Comment

by:dllssn
ID: 19568999
Thanks - I think....................
0
 
LVL 27

Assisted Solution

by:tliotta
tliotta earned 1500 total points
ID: 19571754
For the moment, you're welcome. Don't hesitate to ask for clarification, details or even an example. The basics of *dtaqs are actually pretty easy.

Tom
0

Featured Post

Vote for the Most Valuable Expert

It’s time to recognize experts that go above and beyond with helpful solutions and engagement on site. Choose from the top experts in the Hall of Fame or on the right rail of your favorite topic page. Look for the blue “Nominate” button on their profile to vote.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I. Introduction There's an interesting discussion going on now in an Experts Exchange Group — Attachments with no extension (http://www.experts-exchange.com/discussions/210281/Attachments-with-no-extension.html). This reminded me of questions tha…
Windows 10 is here and for most admins this means frustration and challenges getting that first working Windows 10 image. As in my previous sysprep articles, I've put together a simple help guide to get you through this process. The aim is to achiev…
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…
Hi friends,  in this video  I'll show you how new windows 10 user can learn the using of windows 10. Thank you.
Suggested Courses

862 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question