× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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 thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.