|
This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. -- [ Picked text/plain from multipart/alternative ] Thanks Chris, The simple answer is that they are level 2 DRDA programs using 2 phase commit, the connection switching is a DB2 thing, e.g. Exec SQL Set Connection :PLACE End-Exec, there is some setting up to do but basically you can be connected to many databases, and the most recent set connection points to the place you want to work. When you are done with all of the different DBs, you issue a COMMIT which will commit the work on all of the different databases. So having said that, it does not matter that it is a mainframe, it could just as well be another 400. I am not all that familiar with RPG but the call in a CL or COBOL would have the same parms so that makes sense, so lets see if I understand this, as I am retrieving the data from the Queue by key, I would get only those items having an equal key (if I was selecting for =), and that item once read is no longer available on the Queue. After all items with that key are retrieved I will get a 0 value in the length parm even though there may be other items in the queue with different key values. Other processes can be concurrently processing their own uniquely identified items from that queue? Heck if it's that simple I should have done that from the get go even though I was not aware of the need! -----Original Message----- From: Chris Bipes [mailto:chris.bipes@cross-check.com] Sent: Friday, September 13, 2002 11:40 AM To: 'midrange-l@midrange.com' Subject: RE: Multi threading Data Queues CRTDTAQ DTAQ(QTEMP/FUNINSUN) MAXLEN(1000) SEQ(*KEYED) KEYLEN(6) TEXT('This is a keyed queueu - key = job number?') I like to use the job number as a key. This would be the job number of the job placing entries onto the queue. Now since you are submitting a job to place data onto a queue, use thats job job number as the key. This is where it get out of my scope of experience, you switch the connection to a main frame? How is this done, (don't answer cause I don't want to know.) When you switch the connection and start the mainframe program(s), can you pass a parm equal to the key? Another possibility is to create a library to hold the queues, create a queue for each job such as trfq123456 where 123456 is the job number of the job creating the queue and populating. Change that connection to the main frame. Each job has its own queue? Since I know, and don't want to know, anything about your mainframe I can only give you ideas from the 400 side. On the AS400 side, to read keyed data queues: #RCVDQ PLIST PARM 'AUTHSND' QNAME 10 PARM #LIB QLIB 10 PARM 1000 QLEN 5 0 PARM QDATA 1000 PARM 0 QWAIT 5 0 ** PARM 'EQ' QORDER 2 ** PARM 6 QKEYLEN 3 0 ** PARM #JOBNBR QKEYVAL 6 ** denotes new paramaters for keyed queues. Use the same for the send to queue. -----Original Message----- From: Weatherly, Howard [mailto:Howard.Weatherly@dlis.dla.mil] There are at present ten different processes that retrieve data from the 400, for those tables that return n rows, a CL is called that does a STRQMQRY and outputs the rows to a temporary file, the file is immediately read and the data placed on a data queue. When all of the info on the 400 is retrieved, the connection is switched to the mainframe and processed. For those tables who's data is on a data queue the programs retrieve the entries until the size=0, then press on. The queues themselves are simple FIFO, no key no additional info requested. The queries, files and queues are shared by each of the processes where the same target table is needed and since each process may be doing something different with the data, for example one process might be adding a row, the other might be deleting a row (or rows), my dilemma is if I allow multiple of these processes to run , the data could perhaps become blended in the queues, or worse, if another process begins prior to another process getting its data, another process could potentially overlay the file (although this would need split nanosecond timing). But you said something about keys, I have no experience with that, how does that work? _______________________________________________ This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: MIDRANGE-L@midrange.com To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/cgi-bin/listinfo/midrange-l or email: MIDRANGE-L-request@midrange.com Before posting, please take a moment to review the archives at http://archive.midrange.com/midrange-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.