Sidebar

Line Up for Data Queues

General
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

Simplify your interactive applications by using data queues

Brief: Data queues can be used to pass asynchronous data between programs. They are ideal for passing data to a background task. You'll learn how to define and program data queues, recognize their strengths and pitfalls and use them for slick interactive sorts.

You may have heard that data queues are the fastest way to get data between programs. But, why and how would you use them as you design a system? In this article, you will see several examples of data queues in action. These examples will allow you to see how they work and will give you ideas about how you can use data queues to design more efficient applications.

Data queues are similar to other queues (i.e., output, job, message queues) with which most of you have probably had experience. A queue simply accepts items to be processed whether or not the processing will occur immediately or later. Data queues accept data that can be processed any way that you care to process it and at any time.

What Are Data Queues?

Data queues act as repositories of data. Think of a data queue as a tank of gasoline that serves several pumps at a gas station. The tanker truck from the oil company periodically fills the tank, and customers draw from the tank by pumping the gasoline into their cars. All pumps are serviced with equal priority-the gasoline is used whenever a particular user needs it.

Similarly, programs can send data to a data queue and let it accumulate there. Other programs can receive data from the data queue at any time-perhaps more than one program at the same time, until the data in the data queue is exhausted. Once a data record is received from a data queue, the data queue "forgets" that record.

Data queues are objects of type *DTAQ that can contain data. A data queue can be manipulated by many programs at the same time. Like data areas (*DTAARA), data queues do not allow DDS to define fields; therefore, the data contained in data queues is flat. However, data queues are more like files in that they can contain many records.

Data Queue Attributes

Data queues come in three flavors: *FIFO, *LIFO and *KEYED. *FIFO (first-in, first-out) means that records are taken out of the data queue in the same order in which they were placed, while *LIFO (last-in, first-out) is the reverse order. V2R1.0 introduced *KEYED, which lets you receive records sequentially or randomly by key.

Besides type, data queues have a record length that you must specify when you create the data queue. If the data queue is *KEYED, you must also specify the length of the key.

Creating and Deleting Data Queues

As you might expect, you create and delete data queues with the Create Data Queue (CRTDTAQ) and the Delete Data Queue (DLTDTAQ) commands. Surprisingly, there's no Change Data Queue (CHGDTAQ) or Display Data Queue (DSPDTAQ), although there's a Work with Data Queues (WRKDTAQ) command.

The CRTDTAQ command has the following parameters:

Data queue (DTAQ), to supply the qualified name of the data queue you want to create.

Maximum entry length (MAXLEN), to define the record length. It can be any number between 1 and 64512, and has no default value.

Sequence (SEQ), which lets you choose between *FIFO, *LIFO and *KEYED. The default value is *FIFO.

Key length (KEYLEN), valid only for *KEYED data queues, specifies the length of the key field (maximum length is 256). This key field is stored as a separate entity and is not included as part of the record space allocation, unless you specifically make it part of the record.

Text (TEXT), which allows you to enter a description of the data queue.

Force to auxiliary storage (FORCE), which lets you force each record into DASD as soon as it is sent to the data queue (*YES) or remain in memory (*NO). The default is *NO. You may want to set this value to *YES if you can't afford to lose data during a power failure.

Include sender ID (SENDERID), which lets you splice an identification to each record in the data queue. This identification contains the complete qualified job name and the user profile name of the sender. This sender ID is not part of the record, so you don't have to allocate space for it in MAXLEN.

Public authority (AUT), to indicate what authority to the data queue the public should be given. The default is *LIBCRTAUT.

Sending, Receiving and Clearing

You must use the QSNDDTAQ Application Program Interface (API) to send data to a data queue. QSNDDTAQ expects either four or six parameters: four if the data queue is *FIFO or *LIFO, six if *KEYED. 1 shows an example in RPG, using six parameters. If your data queue is not *KEYED, drop the last two parameters.

You must use the QSNDDTAQ Application Program Interface (API) to send data to a data queue. QSNDDTAQ expects either four or six parameters: four if the data queue is *FIFO or *LIFO, six if *KEYED. Figure 1 shows an example in RPG, using six parameters. If your data queue is not *KEYED, drop the last two parameters.

Similarly, you can use an API named QRCVDTAQ to receive data from a data queue. QRCVDTAQ expects either five or 10 parameters. If your data queue is *KEYED or if you are using sender IDs (see following section), you must supply 10 parameters. In all other cases, supply the first five parameters only. 2 provides an RPG example using 10 parameters.

Similarly, you can use an API named QRCVDTAQ to receive data from a data queue. QRCVDTAQ expects either five or 10 parameters. If your data queue is *KEYED or if you are using sender IDs (see following section), you must supply 10 parameters. In all other cases, supply the first five parameters only. Figure 2 provides an RPG example using 10 parameters.

To clear a data queue, you'll need to use another API, QCLRDTAQ. QCLRDTAQ only expects two parameters, both 10 characters long: the name of the data queue and the name of the library where it resides. See 3.

To clear a data queue, you'll need to use another API, QCLRDTAQ. QCLRDTAQ only expects two parameters, both 10 characters long: the name of the data queue and the name of the library where it resides. See Figure 3.

Receiving Sender IDs

When you use QRCVDTAQ to receive data from a data queue that includes sender IDs, you must receive the sender ID into a character field that is at least 44 characters long. The sender ID identifies the user and the job that sent a particular record to the data queue. You may want to use the sender ID if you want to track transactions by job or user.

The character field that receives the sender ID contains six subfields that I have been able to identify after doing some experimentation. Here they are:

 
 1-8:        Not used. 
 9-18:       Job name. 
 19-28:      Job user. 
 29-34:      Job number. 
 35-44:      User profile name. 
 Beyond 44:  Blank. 

Theory in Practice

Enough about theory. Now that I have presented the foundation, we can see how to put data queues to work. My background is in the manufacturing industry, so my first example is set in a manufacturing environment.

Imagine a busy manufacturing plant where trucks come and go all day long-some delivering raw materials into the Receiving department, others picking up final assemblies from the Shipping department. These receipts and shipments have to be reported to the computer as inventory transactions.

At the same time, Inventory Control may have six data entry clerks constantly engaged in entering inventory transactions of other types, such as production receipts, material movements, transfers, scraps, and so on. Yet more people in the Sales department can also report inventory transactions when they sell products to their customers.

The inventory transaction entry would have to update several files: inventory balances, inventory master, sales order, purchase order, shop order, work order, material allocations, requirements and even a transaction history file, which could have half a million records, with five or six logicals (with immediate access path maintenance) built on top.

It's a bleak scenario. The system would be so overburdened with file I/O that performance would suffer substantially. Here's a place where data queues can greatly improve performance. Simply speaking, we would have a batch job running all day long, receiving inventory transactions from a data queue and performing all file maintenance, including the addition of new transactions to the history file (4a illustrates this system's use of data queues). Since the file updates are handled by a separate batch job, the data entry people can run simplified, faster-responding versions of the interactive entry programs which validate entries and send the transactions to the data queue. This approach relieves the QINTER subsystem from performing heavy file I/O, a task that can be better achieved by QBATCH. Bottom line-the users are going to be happier with their response time and the programming is simplified.

It's a bleak scenario. The system would be so overburdened with file I/O that performance would suffer substantially. Here's a place where data queues can greatly improve performance. Simply speaking, we would have a batch job running all day long, receiving inventory transactions from a data queue and performing all file maintenance, including the addition of new transactions to the history file (Figure 4a illustrates this system's use of data queues). Since the file updates are handled by a separate batch job, the data entry people can run simplified, faster-responding versions of the interactive entry programs which validate entries and send the transactions to the data queue. This approach relieves the QINTER subsystem from performing heavy file I/O, a task that can be better achieved by QBATCH. Bottom line-the users are going to be happier with their response time and the programming is simplified.

Learning by Example

There's nothing like a good example to help you visualize a technique, so I'll present a simplified version of the above scenario. Let me begin this presentation by defining ITH, the Inventory Transaction History file (4b). I'm keeping the file layout simple for this example. In a real-life situation, you would want to add many more fields. The interactive portion consists of a display file (4c), a record layout for our data queue (4d) and an RPG program (4e). The batch portion consists of a CL program (5a) and an RPG program (5b). Enter the code and compile each piece following the instructions given at the bottom of each figure.

There's nothing like a good example to help you visualize a technique, so I'll present a simplified version of the above scenario. Let me begin this presentation by defining ITH, the Inventory Transaction History file (Figure 4b). I'm keeping the file layout simple for this example. In a real-life situation, you would want to add many more fields. The interactive portion consists of a display file (Figure 4c), a record layout for our data queue (Figure 4d) and an RPG program (Figure 4e). The batch portion consists of a CL program (Figure 5a) and an RPG program (Figure 5b). Enter the code and compile each piece following the instructions given at the bottom of each figure.

Starting the Batch Job

First, submit program INV002CL to batch with the following command:

SBMJOB CMD(CALL INV002CL)

INV002CL creates data queue INVTRNDQ as *FIFO, having a record length of 42. We're also requesting to include the identification of the sender. Then it overrides file ITH to FRCRATIO(1) and calls RPG program INV002RG, the file update program. The FRCRATIO(1) override forces the program to write each record one at a time instead of blocking them and delaying the actual physical update. This enables you to peek with DSPPFM and see the progress of INV002RG.

INV002RG adds records to ITH by entering an infinite loop. At the top of the loop it calls QRCVDTAQ to receive a transaction record from the data queue. It uses 10 parameters because we're using sender IDs in the data queue. Notice, in particular, that the inventory transaction is received into field DQDTA, which is a data structure externally defined by INV001DD (4d); this data structure provides a record layout for the data queue.

INV002RG adds records to ITH by entering an infinite loop. At the top of the loop it calls QRCVDTAQ to receive a transaction record from the data queue. It uses 10 parameters because we're using sender IDs in the data queue. Notice, in particular, that the inventory transaction is received into field DQDTA, which is a data structure externally defined by INV001DD (Figure 4d); this data structure provides a record layout for the data queue.

If the data queue is empty at the moment, DQ#LEN is set to zero. In this case, the program checks the system time; if it's past 9:00 p.m., it leaves the infinite loop and ends the program on its own accord. On the other hand, if it received a record from the data queue, the data contained in the queue fields are validated for accuracy and then moved into the ITH fields and we WRITE to the file. Then the process continues.

Starting the Interactive Job

To enter inventory transactions, you must CALL program INV001RG. In a real- life situation, you would use a command or issue the CALL command from a menu.

As you can see in 4e, program INV001RG is very simple. In a real-life scenario, you would want to include some validity checks for the user input. INV001RG uses an externally described data structure to provide a record layout to the data queue. INV001RG uses QSNDDTAQ to send the transaction data to the data queue, listing only four parameters since the data queue is not *KEYED.

As you can see in Figure 4e, program INV001RG is very simple. In a real-life scenario, you would want to include some validity checks for the user input. INV001RG uses an externally described data structure to provide a record layout to the data queue. INV001RG uses QSNDDTAQ to send the transaction data to the data queue, listing only four parameters since the data queue is not *KEYED.

Try it out. Sign on to two sessions. In session A, submit the batch job by submitting (CALL INV002CL) if you haven't done it already, then CALL INV001RG. Key in one transaction and press Enter (INV001RG performs no data validation so you can enter anything). Now go to session B and run the Display Physical File Member (DSPPFM) command on file ITH. Your transaction will already be there! Repeat the process; each time, DSPPFM will show the latest transaction in ITH.

To end this example, press F3 to end interactive program INV001RG. Batch program INV002CL will end at 9:00 p.m. automatically, but you can cancel it manually if you'd like: run WRK-SBMJOB, then select Option 4, press F4, and specify OPTION(*IMMED).

Reviewing the Process

How does it work? The interactive portion (program INV001RG) sends a transaction to the data queue but doesn't update any files. The batch program (which is running all day long) is continually attempting to receive transactions from the data queue. It keeps trying until a transaction arrives. When this happens, it updates the files (in our simplified example, that's ITH only).

The data queue has provided a vehicle to pass data from the interactive job to the batch job. Because the data queue can be accessed from any job (it's not in QTEMP), there can be any number of interactive jobs sending inventory transactions to the data queue; the batch job will process them all in the sequence they were entered (the data queue is *FIFO).

Example of Keyed Data Queues

Keyed data queues are slick. As you have seen, *FIFO data queues can be read forward; *LIFO data queues can be read backwards. *KEYED data queues can be read randomly by key or sequentially by key in any order.

You're already familiar with the concept thanks to your experience in languages like RPG: you can read a file sequentially by key if you declare the file as keyed (K in column 31 of the F-spec) and use SETLL and READ in your C- specs. Or you can read it randomly by key by using CHAIN instead of READ. Keyed data queues let you do the same thing. As an example of using a keyed data queue, I'll use an interactive program to sort records before presenting them on the screen.

Imagine having a database file that contains one record per employee in your office, containing the employee's first and last name, title and phone extension number. Now you want to be able to display the whole list in a subfile, but resequence the records on demand by any of the four fields mentioned. You want to be able to press a function key and have the records redisplayed in a different sequence.

You could have a physical file and three logicals, but then you would have four files in your interactive program, creating complicated code to read one file (and not the others) depending on the sequence requested by the user. Maintaining multiple logical files which are only used in a single, perhaps infrequently used, application would also add substantial system overhead. Another approach would be to end the program, run OPNQRYF, and restart the program when a new sequence is requested. This also complicates the program's logic to some extent.

Use a keyed data queue instead! Since keyed data queues let you receive records sequentially by key, they provide automatic sorting of all the records you send to them. It's like being able to sort a file inside your RPG program.

The Solution

File OFCEMP (6a) contains only four fields. In a real application, you may want to draw the data from your employee master file, which would have many more fields. This file is indexed by last name and first name, although this is not vital.

File OFCEMP (Figure 6a) contains only four fields. In a real application, you may want to draw the data from your employee master file, which would have many more fields. This file is indexed by last name and first name, although this is not vital.

CL program OFC001CL (6b) starts the process by creating data queue OFCEMP in QTEMP. The data queue is created as *KEYED. The total record length is 54 (total of all four fields we want to display), and the key length is 20 since the widest field that we may select as the key has a length of 20 (OETITL).

CL program OFC001CL (Figure 6b) starts the process by creating data queue OFCEMP in QTEMP. The data queue is created as *KEYED. The total record length is 54 (total of all four fields we want to display), and the key length is 20 since the widest field that we may select as the key has a length of 20 (OETITL).

Display file OFC001DF (6c) defines the F6 key to sort the employee database; you move the cursor to the column containing the field by which you want to sort, press F6, and the file is sorted. It uses the CSRLOC keyword to position the cursor on output-that way the cursor stays in the same position it was before you pressed F6, even though there are no input fields on the screen.

Display file OFC001DF (Figure 6c) defines the F6 key to sort the employee database; you move the cursor to the column containing the field by which you want to sort, press F6, and the file is sorted. It uses the CSRLOC keyword to position the cursor on output-that way the cursor stays in the same position it was before you pressed F6, even though there are no input fields on the screen.

RPG program OFC001RG (6d) begins execution at the *INZSR subroutine. It positions the cursor at row 3, column 16 (the first name column of the subfile) and runs subroutine SORT.

RPG program OFC001RG (Figure 6d) begins execution at the *INZSR subroutine. It positions the cursor at row 3, column 16 (the first name column of the subfile) and runs subroutine SORT.

SORT first clears the data queue by calling QCLRDTAQ, then clears the subfile. Next, it reads all records in the OFCEMP file, sending each record to the data queue. Notice that I have coded a SELEC group which assigns a different value to KEYFLD depending on the position of the cursor. Actually, only the column number has any bearing: if less than 16, KEYFLD receives the extension number; if less than 35, it receives the first name; if less than 53, it receives the last name; otherwise, it receives the title. Thus we send the employee record to the data queue, but specifying a different field as the key field. Lastly, the data queue is read sequentially by key, writing each record into the subfile.

Control is then transferred to the mainline, which displays the subfile. If the user moves the cursor and presses F6, OFC001RG determines the position of the cursor via the INFDS of the display file and runs SORT all over again.

With the small file (30 records), performance was excellent. If you decide to implement this technique with your large files, performance may be a consideration.

How It Works

Subroutine SORT is the place where everything happens. All I've done is read the file sequentially (in arrival sequence-not even by key) and write each record into the data queue, repeating one of the four fields as the key field (KEYFLD). Which field is used depends on the position of the cursor. Because the data queue is keyed, I must use six parameters when I call QSNDDTAQ.

Then I turn around and read the data queue sequentially by key. This is done by specifying 'GE' as the order in which I want to receive the records and specifying *BLANK as the key value. Consequently, the data queue will issue the record that has the lowest key. Since records are automatically deleted from the data queue when QRCVDTAQ receives them, the next loop through QRCVDTAQ (again using 'GE' and *BLANK) will receive the next record in ascending value of the key field. The records come out of the queue in alphabetic sequence. If I had specified 'LE' for the order and *HIVAL (or all 9's) for the key value, the records would have come out in descending order.

Try it out! Enter the source code in Figures 6a to 6d and compile them as indicated at the bottom of each figure. Then use DFU or SQL to add a few records to OFCEMP. To use DFU, for example, run the Update Data (UPDDTA) command. Then CALL OFC001CL to start the demo.

Drawbacks of Data Queues

Data queues provide the fastest method to pass information between jobs, but they do have a few problems that I'd like to submit to you:

You can't display their contents because there's no Display Data Queue (DSPDTAQ) command. QUSRTOOL provides one, but it doesn't work. When I tested it, it only displayed the first character of each record instead of the whole record. I'm convinced it's a bug somewhere.

Since entries are automatically deleted the moment they're received with QRCVDTAQ, there's a potential for losing data if the program that receives the record from the data queue aborts before making use of it. The record would be lost and there's no way to retrieve it. Commitment control won't help because data queues are not files.

As you send records to data queues, the size of the *DTAQ object in-creases. When records are received from the data queue, the object does not shrink. If the Display Object Description (DSPOBJD) command shows an abnormally large size for a data queue, you should delete it and re-create it or use the Reorganize Data Queues command I've created (see page 66).

The Queue Review

You have seen how much you can accomplish with data queues. They provide an excellent vehicle for program-to-program transferral of data without overburdening your system. While they are not a drop-dead-if-you-don't-use-'em technique, data queues do have a place in modern, structured programming and can improve the performance of your system considerably.


Line Up for Data Queues

Figure 1 Using QSNDDTAQ in RPG

 
  Figure 1:  Using QSNDDTAQ in RPG 
 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 
  C                     CALL 'QSNDDTAQ' 
  C                     PARM           DTAQ   10 
  C                     PARM           DQLIB  10 
  C                     PARM           LEN     50 
  C                     PARM           DATA 
  C                     PARM           KEYLEN  30 
  C                     PARM           KEY 
  DTAQ:         Data queue name 
  DQLIB:        Data queue library name 
  LEN:          Record length 
  DATA:         Record data.  Must be of the length indicated by LEN. 
 
  Optional Parameters 
 
  KEYLEN:          Key length, if *KEYED. 
  KEY:          Key value, if *KEYED.  Must be of the length 
            indicated by KEYLEN. 

Line Up for Data Queues

Figure 2 Using QRCVDTAQ in RPG

 
  Figure 2:  Using QRCVDTAQ in RPG 
 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 
  C                     CALL 'QRCVDTAQ' 
  C                     PARM           DTAQ   10 
  C                     PARM           DQLIB  10 
  C                     PARM           LEN     50 
  C                     PARM           DATA 
  C                     PARM           WAIT    50 
  C                     PARM           ORDER   2 
  C                     PARM           KEYLEN  30 
  C                     PARM           KEY 
  C                     PARM           SNDLEN  30 
  C                     PARM           SNDID 
  DTAQ:         Data queue name 
  DQLIB:        Data queue library name 
  LEN:          Length of record received. 
                Set to zero if no record was received. 
  DATA:         Data received.  Must be of the length indicated by LEN. 
  WAIT:         Seconds to wait for a record.  Zero means no wait. 
                A negative number means to wait indefinitely. 
 
  Optional Parameters 
 
  ORDER:        Order to receive by key, if *KEYED.  Can be EQ, NE, 
                LT, LE, GT or GE. 
  KEYLEN:       Key length, if *KEYED. 
  KEY:          Key value, if *KEYED.  Must be of the length 
                indicated by KEYLEN. 
  SNDLEN:       Length of SNDID field.  44 is recommended. 
  SNDID:        Field to receive sender ID.  Character, 44 bytes 
                is recommended. 

Line Up for Data Queues

Figure 3 Example of QCLRDTAQ in RPG

 
  Figure 3:  Example of QCLRDTAQ in RPG 
 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 
  C                     CALL 'QCLRDTAQ' 
  C                     PARM           DTAQ   10 
  C                     PARM           DQLIB  10 

Line Up for Data Queues

Figure 4A Inventory System (unable to display graphic)


Line Up for Data Queues

Figure 4B Physical file ITH

 
       A          R ITREC 
       A            ITITEM        15          TEXT('ITEM NUMBER') 
       A            ITQTY          7P 0       TEXT('TRANSACTION QUANTITY') 
       A                                      EDTCDE(J) 

Line Up for Data Queues

Figure 4C Display file INV001DF

 
       A                                      DSPSIZ(24 80 *DS3) 
       A                                      REF(ITH) 
       A                                      PRINT 
       A                                      CA03(03 'Exit') 
       A                                      CA12(12 'Cancel') 
        * 
       A          R ENTRY 
       A                                      BLINK 
       A                                  1 27'Enter Inventory Transactions' 
       A                                      DSPATR(HI) 
       A                                  4  2'Enter a transaction:' 
       A                                      COLOR(BLU) 
       A                                  6 10'Item number' 
       A                                  6 35'Quantity' 
       A            EITEM     R        B  7 10REFFLD(ITITEM) 
       A            EQTY      R        B  7 34REFFLD(ITQTY) 
       A                                 23  2'F3=Exit   F12=Cancel' 
       A                                      COLOR(BLU) 

Line Up for Data Queues

Figure 4D DDS INV001DD for Data Queue

 
       A                                      REF(ITH) 
        * 
       A          R DQREC 
       A            DQITEM    R               REFFLD(ITITEM) 
       A            DQQTY     R               REFFLD(ITQTY) 

Line Up for Data Queues

Figure 4E RPG program INV001RG

 
       FINV001DFCF  E                    WORKSTN 
        * 
       IDQDTA     E DSINV001DD 
        * 
       C           'FOREVER' DOWEQ'FOREVER' 
       C                     EXFMTENTRY 
       C           *IN03     IFEQ *ON 
       C           *IN12     OREQ *ON 
       C                     LEAVE 
       C                     ENDIF 
        * Move data entry fields to subfields of DQDTA structure 
       C                     MOVE EITEM     DQITEM 
       C                     Z-ADDEQTY      DQQTY 
        * Send DQDTA structure to data queue 
       C                     CALL 'QSNDDTAQ' 
       C                     PARM 'INVTRNDQ'DQ#NAM 10 
       C                     PARM '*LIBL'   DQ#LIB 10 
       C                     PARM 19        DQ#LEN  50 
       C                     PARM           DQDTA 
        * Erase entry fields 
       C                     MOVE *BLANK    EITEM 
       C                     Z-ADD*ZERO     EQTY 
       C                     ENDDO 
        * 
       C                     MOVE *ON       *INLR 

Line Up for Data Queues

Figure 5A CL program INV002CL

 
   INV002CL:   PGM 
 
               DCL        VAR(&RTNLIB) TYPE(*CHAR) LEN(10) 
 
               RTVOBJD    OBJ(INV002CL) OBJTYPE(*PGM) RTNLIB(&RTNLIB) 
               CRTDTAQ    DTAQ(&RTNLIB/INVTRNDQ) MAXLEN(19) SEQ(*FIFO) 
               MONMSG     MSGID(CPF0000) 
 
               OVRDBF     FILE(ITH) FRCRATIO(1) 
               CALL       PGM(INV002RG) 
 
               ENDPGM 

Line Up for Data Queues

Figure 5B RPG program INV002RG

 
       FITH     O   E                    DISK                      A 
        * 
       IDQDTA     E DSINV001DD 
        * 
       C           'FOREVER' DOWEQ'FOREVER' 
        * Get transaction request from data queue 
       C                     CALL 'QRCVDTAQ' 
       C                     PARM 'INVTRNDQ'DQ#NAM 10 
       C                     PARM '*LIBL'   DQ#LIB 10 
       C                     PARM 19        DQ#LEN  50 
       C                     PARM           DQDTA 
       C                     PARM 300       DQ#WT   50 
        * If none retrieved, check system time to end program 
       C           DQ#LEN    IFEQ *ZERO 
       C                     TIME           SYSTIM  60 
       C           SYSTIM    IFGT 210000 
       C                     LEAVE 
       C                     ENDIF 
       C                     ELSE 
        * Else, write transaction to history file and continue 
       C                     MOVE DQITEM    ITITEM 
       C                     Z-ADDDQQTY     ITQTY 
       C                     WRITEITREC 
       C                     ENDIF 
       C                     ENDDO 
        * 
       C                     MOVE *ON       *INLR 

Line Up for Data Queues

Figure 6A Physical file OFCEMP

 
  Figure 6a:  Physical File OFCEMP 
 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+ ...8 
  A                                      UNIQUE 
  A          R OEREC 
  A            OELNAM        15          TEXT('Last name') 
  A            OEFNAM        15          TEXT('First name') 
  A            OETITL        20          TEXT('Title') 
  A            OEEXTN         4S 0       TEXT('Phone extension number') 
  A                                      EDTCDE(3) 
  A          K OELNAM 
  A          K OEFNAM 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+ ...8 
 
  To compile:  CRTPF FILE(xxx/OFCEMP) SRCFILE(xxx/QDDSSRC) 

Line Up for Data Queues

Figure 6B CL program OFC001CL

 
  Figure 6b:  CL Program OFC001CL 
 
   OFC001CL:   PGM 
 
               DLTDTAQ    DTAQ(QTEMP/OFCEMP) 
               MONMSG     MSGID(CPF0000) 
               CRTDTAQ    DTAQ(QTEMP/OFCEMP) MAXLEN(54) SEQ(*KEYED) + 
                            KEYLEN(20) 
               CALL       PGM(OFC001RG) 
 
               ENDPGM 
 
  To compile:  CRTCLPGM PGM(xxx/OFC001CL) SRCFILE(xxx/QCLSRC) 

Line Up for Data Queues

Figure 6C Display file OFC001DF

 
  Figure 6c:  Display File OFC001DF 
 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+ ...8 
  A                                      DSPSIZ(24 80 *DS3) 
  A                                      PRINT 
  A                                      CA03(03 'Exit') 
  A                                      CA06(06 'Sort') 
  A                                      CA12(12 'Cancel') 
  A                                      REF(OFCEMP) 
   * 
  A          R EMPRCD                    SFL 
  A            $EXTN     R        O  4  8REFFLD(OEEXTN) 
  A            $FNAM     R        O  4 16REFFLD(OEFNAM) 
  A            $LNAM     R        O  4 35REFFLD(OELNAM) 
  A            $TITL     R        O  4 53REFFLD(OETITL) 
   * 
  A          R EMPCTL                    SFLCTL(EMPRCD) 
  A                                      BLINK 
  A                                      CSRLOC(CSRROW CSRCOL) 
  A                                      OVERLAY 
  A  81                                  SFLDSP 
  A  81                                  SFLDSPCTL 
  A N81                                  SFLCLR 
  A N80                                  SFLEND 
  A                                      SFLSIZ(0300) 
  A                                      SFLPAG(0018) 
  A            CSRROW         3  0H 
  A            CSRCOL         3  0H 
  A                                  1 29'Display Office Employees' 
  A                                      DSPATR(HI) 
  A                                  3  5'Extension' 
  A                                      DSPATR(HI) 
  A                                  3 16'First Name' 
  A                                      DSPATR(HI) 
  A                                  3 35'Last Name' 
  A                                      DSPATR(HI) 
  A                                  3 53'Title' 
  A                                      DSPATR(HI) 
   * 
  A          R FKEYS 
  A                                      LOCK 
  A                                 23  2'F3=Exit   F6=Sort (cursor sensitiv- 
  A                                      e)   F12=Cancel' 
  A                                      COLOR(BLU) 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+ ...8 
 
  To compile:  CRTDSPF FILE(xxx/OFC001DF) SRCFILE(xxx/QDDSSRC) 

Line Up for Data Queues

Figure 6D RPG program OFC001RG

 
  Figure 6d:  RPG Program OFC001RG 
 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+ ...8 
  FOFC001DFCF  E                    WORKSTN 
  F                                        SFLRRNKSFILE EMPRCD 
  F                                              KINFDS INFDS 
  FOFCEMP  IF  E                    DISK 
   * 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+ ...8 
  IINFDS       DS 
  I                                    B 370 3710CURSOR 
   * 
  IDQDTA     E DSOFCEMP 
  I              OELNAM                          LNAM 
  I              OEFNAM                          FNAM 
  I              OETITL                          TITL 
  I              OEEXTN                          EXTN 
   *======================================================= 
  C           'FOREVER' DOWEQ'FOREVER' 
  C                     EXFMTEMPCTL 
  C                     SELEC 
  C           *IN03     WHEQ *ON                        Exit 
  C           *IN12     OREQ *ON                        Cancel 
  C                     LEAVE 
  C           *IN06     WHEQ *ON                        Sort 
  C           CURSOR    DIV  256       CSRROW 
  C                     MVR            CSRCOL 
  C                     EXSR SORT 
  C                     ENDSL 
  C                     ENDDO 
  C                     MOVE *ON       *INLR 
   *======================================================= 
  C           *INZSR    BEGSR 
  C                     WRITEFKEYS 
  C                     Z-ADD3         CSRROW 
  C                     Z-ADD16        CSRCOL 
  C                     EXSR SORT 
  C                     ENDSR 
   *======================================================= 
  C           SORT      BEGSR 
   * Clear data queue 
  C                     CALL 'QCLRDTAQ' 
  C                     PARM 'OFCEMP'  DQ#NAM 10 
  C                     PARM '*LIBL'   DQ#LIB 10 
  C                     MOVE *OFF      *IN81 
  C                     WRITEEMPCTL 
  C                     MOVE *ON       *IN81 
   * Read database file, writing to data queue 
  C                     Z-ADD*ZERO     RRN     40 
  C           'FOREVER' DOWEQ'FOREVER' 
  C                     ADD  1         RRN 
  C           RRN       CHAINOFCEMP               99 
  C           *IN99     IFEQ *ON 
  C                     LEAVE 
  C                     ENDIF 
   * Key depends on position of cursor 
  C                     SELEC 
  C           CSRCOL    WHLT 16 
  C                     MOVELOEEXTN    KEYFLD 20 
  C           CSRCOL    WHLT 35 
  C                     MOVELOEFNAM    KEYFLD 
  C           CSRCOL    WHLT 53 
  C                     MOVELOELNAM    KEYFLD 
  C                     OTHER 
  C                     MOVELOETITL    KEYFLD 
  C                     ENDSL 
  C                     MOVE OELNAM    LNAM 
  C                     MOVE OEFNAM    FNAM 
  C                     MOVE OETITL    TITL 
  C                     Z-ADDOEEXTN    EXTN 
  C                     CALL 'QSNDDTAQ'                 Send 
  C                     PARM           DQ#NAM 
  C                     PARM           DQ#LIB 
  C                     PARM 54        DQ#LEN  50 
  C                     PARM           DQDTA 
  C                     PARM 20        DQ#KL   30 
  C                     PARM KEYFLD    DQ#KEY 20 
  C                     ENDDO 
   * Read data queue sequentially by key, writing to subfile 
  C                     SUB  1         RRN 
  C           1         DO   RRN       SFLRRN  40 
  C                     CALL 'QRCVDTAQ'                 Receive 
  C                     PARM           DQ#NAM 
  C                     PARM           DQ#LIB 
  C                     PARM 54        DQ#LEN 
  C                     PARM           DQDTA 
  C                     PARM *ZERO     DQ#WT   50 
  C                     PARM 'GE'      DQ#ORD  2 
  C                     PARM 20        DQ#KL   30 
  C                     PARM *BLANK    DQ#KEY 
  C                     PARM 44        DQ#SL   30 
  C                     PARM *BLANK    DQ#SND 44 
  C                     Z-ADDEXTN      $EXTN 
  C                     MOVE FNAM      $FNAM 
  C                     MOVE LNAM      $LNAM 
  C                     MOVE TITL      $TITL 
  C                     WRITEEMPRCD 
  C                     ENDDO 
  C                     ENDSR 
  ... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ...+ ...8 
 
  To compile:  CRTRPGPGM PGM(xxx/OFC001RG) SRCFILE(xxx/QRPGSRC) 
BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

RESOURCE CENTER

  • WHITE PAPERS

  • WEBCAST

  • TRIAL SOFTWARE

  • Mobile Computing and the IBM i

    SB ASNA PPL 5450Mobile computing is rapidly maturing into a solid platform for delivering enterprise applications. Many IBM i shops today are realizing that integrating their IBM i with mobile applications is the fast path to improved business workflows, better customer relations, and more responsive business reporting.

    This ASNA whitepaper takes a look at mobile computing for the IBM i. It discusses the different ways mobile applications may be used within the enterprise and how ASNA products solve the challenges mobile presents. It also presents the case that you already have the mobile programming team your projects need: that team is your existing RPG development team!

    Get your copy today!

  • Automate IBM i Operations using Wireless Devices

    DDL SystemsDownload the technical whitepaper on MANAGING YOUR IBM i WIRELESSLY and (optionally) register to download an absolutely FREE software trail. This whitepaper provides an in-depth review of the native IBM i technology and ACO MONITOR's advanced two-way messaging features to remotely manage your IBM i while in or away from the office. Notify on-duty personnel of system events and remotely respond to complex problems (via your Smartphone) before they become critical-24/7. Problem solved!

    Order your copy here.

  • DR Strategy Guide from Maxava: Brand New Edition - now fully updated to include Cloud!

    SB Maxava PPL 5476PRACTICAL TOOLS TO IMPLEMENT DISASTER RECOVERY IN YOUR IBM i ENVIRONMENT

    CLOUD VS. ON-PREMISE?
    - COMPREHENSIVE CHECKLISTS
    - RISK COST CALCULATIONS
    - BUSINESS CASE FRAMEWORK
    - DR SOLUTIONS OVERVIEW
    - RFP BUILDER
    Download your free copy of DR Strategy Guide for IBM i from Maxava today.

     

  • White Paper: Node.js for Enterprise IBM i Modernization

    SB Profound WP 5539

    If your business is thinking about modernizing your legacy IBM i (also known as AS/400 or iSeries) applications, you will want to read this white paper first!

    Download this paper and learn how Node.js can ensure that you:
    - Modernize on-time and budget - no more lengthy, costly, disruptive app rewrites!
    - Retain your IBM i systems of record
    - Find and hire new development talent
    - Integrate new Node.js applications with your existing RPG, Java, .Net, and PHP apps
    - Extend your IBM i capabilties to include Watson API, Cloud, and Internet of Things


    Read Node.js for Enterprise IBM i Modernization Now!

     

  • 2020 IBM i Marketplace Survey Results

    HelpSystems

    This year marks the sixth edition of the popular IBM i Marketplace Survey Results. Each year, HelpSystems sets out to gather data about how businesses use the IBM i platform and the IT initiatives it supports. Year over year, the survey has begun to reveal long-term trends that give insight into the future of this trusted technology.

    More than 500 IBM i users from around the globe participated in this year’s survey, and we’re so happy to share the results with you. We hope you’ll find the information interesting and useful as you evaluate your own IT projects.

  • AIX Security Basics eCourse

    Core Security

    With so many organizations depending on AIX day to day, ensuring proper security and configuration is critical to ensure the safety of your environment. Don’t let common threats put your critical AIX servers at risk. Avoid simple mistakes and start to build a long-term plan with this AIX Security eCourse. Enroll today to get easy to follow instructions on topics like:

    • Removing extraneous files
    • Patching systems efficiently
    • Setting and validating permissions
    • Managing service considerations
    • Getting overall visibility into your networks

     

  • Developer Kit: Making a Business Case for Modernization and Beyond

    Profound Logic Software, Inc.

    Having trouble getting management approval for modernization projects? The problem may be you're not speaking enough "business" to them.

    This Developer Kit provides you study-backed data and a ready-to-use business case template to help get your very next development project approved!

  • What to Do When Your AS/400 Talent Retires

    HelpSystemsIT managers hoping to find new IBM i talent are discovering that the pool of experienced RPG programmers and operators or administrators is small.

    This guide offers strategies and software suggestions to help you plan IT staffing and resources and smooth the transition after your AS/400 talent retires. Read on to learn:

    • Why IBM i skills depletion is a top concern
    • How leading organizations are coping
    • Where automation will make the biggest impact

     

  • IBM i Resources Retiring?

    SB HelpSystems WC GenericLet’s face it: IBM i experts and RPG programmers are retiring from the workforce. Are you prepared to handle their departure?
    Our panel of IBM i experts—Chuck Losinski, Robin Tatam, Richard Schoen, and Tom Huntington—will outline strategies that allow your company to cope with IBM i skills depletion by adopting these strategies that allow you to get the job done without deep expertise on the OS:
    - Automate IBM i processes
    - Use managed services to help fill the gaps
    - Secure the system against data loss and viruses
    The strategies you discover in this webinar will help you ensure that your system of record—your IBM i—continues to deliver a powerful business advantage, even as staff retires.

     

  • Backup and Recovery Considerations for Security Data and Encrypted Backups

    SB PowerTech WC GenericSecurity expert Carol Woodbury is joined by Debbie Saugen. Debbie is an expert on IBM i backup and recovery, disaster recovery, and high availability, helping IBM i shops build and implement effective business continuity plans.
    In today’s business climate, business continuity is more important than ever. But 83 percent of organizations are not totally confident in their backup strategy.
    During this webinar, Carol and Debbie discuss the importance of a good backup plan, how to ensure you’re backing up your security information, and your options for encrypted back-ups.

  • Profound.js: The Agile Approach to Legacy Modernization

    SB Profound WC GenericIn this presentation, Alex Roytman and Liam Allan will unveil a completely new and unique way to modernize your legacy applications. Learn how Agile Modernization:
    - Uses the power of Node.js in place of costly system re-writes and migrations
    - Enables you to modernize legacy systems in an iterative, low-risk manner
    - Makes it easier to hire developers for your modernization efforts
    - Integrates with Profound UI (GUI modernization) for a seamless, end-to-end legacy modernization solution

     

  • Data Breaches: Is IBM i Really at Risk?

    SB PowerTech WC GenericIBM i is known for its security, but this OS could be more vulnerable than you think.
    Although Power Servers often live inside the safety of the perimeter firewall, the risk of suffering a data leak or data corruption remains high.
    Watch noted IBM i security expert Robin Tatam as he discusses common ways that this supposedly “secure” operating system may actually be vulnerable and who the culprits might be.

    Watch the webinar today!

     

  • Easy Mobile Development

    SB Profound WC GenericWatch this on-demand webinar and learn how to rapidly and easily deploy mobile apps to your organization – even when working with legacy RPG code! IBM Champion Scott Klement will demonstrate how to:
    - Develop RPG applications without mobile development experience
    - Deploy secure applications for any mobile device
    - Build one application for all platforms, including Apple and Android
    - Extend the life and reach of your IBM i (aka iSeries, AS400) platform
    You’ll see examples from customers who have used our products and services to deliver the mobile applications of their dreams, faster and easier than they ever thought possible!

     

  • Profound UI: Unlock True Modernization from your IBM i Enterprise

    SB Profound PPL 5491Modern, web-based applications can make your Enterprise more efficient, connected and engaged. This session will demonstrate how the Profound UI framework is the best and most native way to convert your existing RPG applications and develop new modern applications for your business. Additionally, you will learn how you can address modernization across your Enterprise, including databases and legacy source code, with Profound Logic.

  • Node Webinar Series Pt. 1: The World of Node.js on IBM i

    Profound Logic Software, Inc.Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application.

    Part 1 will teach you what Node.js is, why it's a great option for IBM i shops, and how to take advantage of the ecosystem surrounding Node.

    In addition to background information, our Director of Product Development Scott Klement will demonstrate applications that take advantage of the Node Package Manager (npm).

  • 5 New and Unique Ways to Use the IBM i Audit Journal

    SB HelpSystems ROBOT GenericYou must be asking yourself: am I doing everything I can to protect my organization’s data? Tune in as our panel of IBM i high availability experts discuss:


    - Why companies don’t test role swaps when they know they should
    - Whether high availability in the cloud makes sense for IBM i users
    - Why some organizations don’t have high availability yet
    - How to get high availability up and running at your organization
    - High availability considerations for today’s security concerns

  • Profound.js 2.0: Extend the Power of Node to your IBM i Applications

    SB Profound WC 5541In this Webinar, we'll demonstrate how Profound.js 2.0 enables you to easily adopt Node.js in your business, and to take advantage of the many benefits of Node, including access to a much larger pool of developers for IBM i and access to countless reusable open source code packages on npm (Node Package Manager).
    You will see how Profound.js 2.0 allows you to:

    • Provide RPG-like capabilities for server-side JavaScript.
    • Easily create web and mobile application interfaces for Node on IBM i.
    • Let existing RPG programs call Node.js modules directly, and vice versa.
    • Automatically generate code for Node.js.
    • Automatically converts existing RPGLE code into clean, simplified Node.js code.

    Download and watch today!

     

  • Make Modern Apps You'll Love with Profound UI & Profound.js

    SB Profound WC 5541Whether you have green screens or a drab GUI, your outdated apps can benefit from modern source code, modern GUIs, and modern tools.
    Profound Logic's Alex Roytman and Liam Allan are here to show you how Free-format RPG and Node.js make it possible to deliver applications your whole business will love:

    • Transform legacy RPG code to modern free-format RPG and Node.js
    • Deliver truly modern application interfaces with Profound UI
    • Extend your RPG applications to include Web Services and NPM packages with Node.js

     

  • Accelerating Programmer Productivity with Sequel

    SB_HelpSystems_WC_Generic

    Most business intelligence tools are just that: tools, a means to an end but not an accelerator. Yours could even be slowing you down. But what if your BI tool didn't just give you a platform for query-writing but also improved programmer productivity?
    Watch the recorded webinar to see how Sequel:

    • Makes creating complex results simple
    • Eliminates barriers to data sources
    • Increases flexibility with data usage and distribution

    Accelerated productivity makes everyone happy, from programmer to business user.

  • Business Intelligence is Changing: Make Your Game Plan

    SB_HelpSystems_WC_GenericIt’s time to develop a strategy that will help you meet your informational challenges head-on. Watch the webinar to learn how to set your IT department up for business intelligence success. You’ll learn how the right data access tool will help you:

    • Access IBM i data faster
    • Deliver useful information to executives and business users
    • Empower users with secure data access

    Ready to make your game plan and finally keep up with your data access requests?

     

  • Controlling Insider Threats on IBM i

    SB_HelpSystems_WC_GenericLet’s face facts: servers don’t hack other servers. Despite the avalanche of regulations, news headlines remain chock full of stories about data breaches, all initiated by insiders or intruders masquerading as insiders.
    User profiles are often duplicated or restored and are rarely reviewed for the appropriateness of their current configuration. This increases the risk of the profile being able to access data without the intended authority or having privileges that should be reserved for administrators.
    Watch security expert Robin Tatam as he discusses a new approach for onboarding new users on IBM i and best-practices techniques for managing and monitoring activities after they sign on.

  • Don't Just Settle for Query/400...

    SB_HelpSystems_WC_GenericWhile introducing Sequel Data Access, we’ll address common frustrations with Query/400, discuss major data access, distribution trends, and more advanced query tools. Plus, you’ll learn how a tool like Sequel lightens IT’s load by:

    - Accessing real-time data, so you can make real-time decisions
    - Providing run-time prompts, so users can help themselves
    - Delivering instant results in Microsoft Excel and PDF, without the wait
    - Automating the query process with on-demand data, dashboards, and scheduled jobs

  • How to Manage Documents the Easy Way

    SB_HelpSystems_WC_GenericWhat happens when your company depends on an outdated document management strategy?
    Everything is harder.
    You don’t need to stick with status quo anymore.
    Watch the webinar to learn how to put effective document management into practice and:

    • Capture documents faster, instead of wasting everyone’s time
    • Manage documents easily, so you can always find them
    • Distribute documents automatically, and move on to the next task

     

  • Lessons Learned from the AS/400 Breach

    SB_PowerTech_WC_GenericGet actionable info to avoid becoming the next cyberattack victim.
    In “Data breach digest—Scenarios from the field,” Verizon documented an AS/400 security breach. Whether you call it AS/400, iSeries, or IBM i, you now have proof that the system has been breached.
    Watch IBM i security expert Robin Tatam give an insightful discussion of the issues surrounding this specific scenario.
    Robin will also draw on his extensive cybersecurity experience to discuss policies, processes, and configuration details that you can implement to help reduce the risk of your system being the next victim of an attack.

  • Overwhelmed by Operating Systems?

    SB_HelpSystems_WC_GenericIn this 30-minute recorded webinar, our experts demonstrate how you can:

    • Manage multiple platforms from a central location
    • View monitoring results in a single pane of glass on your desktop or mobile device
    • Take advantage of best practice, plug-and-play monitoring templates
    • Create rules to automate daily checks across your entire infrastructure
    • Receive notification if something is wrong or about to go wrong

    This presentation includes a live demo of Network Server Suite.

     

  • Real-Time Disk Monitoring with Robot Monitor

    SB_HelpSystems_WC_GenericYou need to know when IBM i disk space starts to disappear and where it has gone before system performance and productivity start to suffer. Our experts will show you how Robot Monitor can help you pinpoint exactly when your auxiliary storage starts to disappear and why, so you can start taking a proactive approach to disk monitoring and analysis. You’ll also get insight into:

    • The main sources of disk consumption
    • How to monitor temporary storage and QTEMP objects in real time
    • How to monitor objects and libraries in real time and near-real time
    • How to track long-term disk trends

     

     

  • Stop Re-keying Data Between IBM I and Other Applications

    SB_HelpSystems_WC_GenericMany business still depend on RPG for their daily business processes and report generation.Wouldn’t it be nice if you could stop re-keying data between IBM i and other applications? Or if you could stop replicating data and start processing orders faster? Or what if you could automatically extract data from existing reports instead of re-keying? It’s all possible. Watch this webinar to learn about:

    • The data dilemma
    • 3 ways to stop re-keying data
    • Data automation in practice

    Plus, see how HelpSystems data automation software will help you stop re-keying data.

     

  • The Top Five RPG Open Access Myths....BUSTED!

    SB_Profound_WC_GenericWhen it comes to IBM Rational Open Access: RPG Edition, there are still many misconceptions - especially where application modernization is concerned!

    In this Webinar, we'll address some of the biggest myths about RPG Open Access, including:

    • Modernizing with RPG OA requires significant changes to the source code
    • The RPG language is outdated and impractical for modernizing applications
    • Modernizing with RPG OA is the equivalent to "screen scraping"

     

  • Time to Remove the Paper from Your Desk and Become More Efficient

    SB_HelpSystems_WC_GenericToo much paper is wasted. Attempts to locate documents in endless filing cabinets.And distributing documents is expensive and takes up far too much time.
    These are just three common reasons why it might be time for your company to implement a paperless document management system.
    Watch the webinar to learn more and discover how easy it can be to:

    • Capture
    • Manage
    • And distribute documents digitally

     

  • IBM i: It’s Not Just AS/400

    SB_HelpSystems_WC_Generic

    IBM’s Steve Will talks AS/400, POWER9, cognitive systems, and everything in between

    Are there still companies that use AS400? Of course!

    IBM i was built on the same foundation.
    Watch this recorded webinar with IBM i Chief Architect Steve Will and IBM Power Champion Tom Huntington to gain a unique perspective on the direction of this platform, including:

    • IBM i development strategies in progress at IBM
    • Ways that Watson will shake hands with IBM i
    • Key takeaways from the AS/400 days

     

  • Ask the RDi Experts

    SB_HelpSystems_WC_GenericWatch this recording where Jim Buck, Susan Gantner, and Charlie Guarino answered your questions, including:

    • What are the “hidden gems” in RDi that can make me more productive?
    • What makes RDi Debug better than the STRDBG green screen debugger?
    • How can RDi help me find out if I’ve tested all lines of a program?
    • What’s the best way to transition from PDM to RDi?
    • How do I convince my long-term developers to use RDi?

    This is a unique, online opportunity to hear how you can get more out of RDi.

     

  • Node.js on IBM i Webinar Series Pt. 2: Setting Up Your Development Tools

    Profound Logic Software, Inc.Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application. In Part 2, Brian May teaches you the different tooling options available for writing code, debugging, and using Git for version control. Attend this webinar to learn:

    • Different tools to develop Node.js applications on IBM i
    • Debugging Node.js
    • The basics of Git and tools to help those new to it
    • Using NodeRun.com as a pre-built development environment

     

     

  • Inside the Integrated File System (IFS)

    SB_HelpSystems_WC_GenericDuring this webinar, you’ll learn basic tips, helpful tools, and integrated file system commands—including WRKLNK—for managing your IFS directories and Access Client Solutions (ACS). We’ll answer your most pressing IFS questions, including:

    • What is stored inside my IFS directories?
    • How do I monitor the IFS?
    • How do I replicate the IFS or back it up?
    • How do I secure the IFS?

    Understanding what the integrated file system is and how to work with it must be a critical part of your systems management plans for IBM i.

     

  • Expert Tips for IBM i Security: Beyond the Basics

    SB PowerTech WC GenericIn this session, IBM i security expert Robin Tatam provides a quick recap of IBM i security basics and guides you through some advanced cybersecurity techniques that can help you take data protection to the next level. Robin will cover:

    • Reducing the risk posed by special authorities
    • Establishing object-level security
    • Overseeing user actions and data access

    Don't miss this chance to take your knowledge of IBM i security beyond the basics.

     

     

  • 5 IBM i Security Quick Wins

    SB PowerTech WC GenericIn today’s threat landscape, upper management is laser-focused on cybersecurity. You need to make progress in securing your systems—and make it fast.
    There’s no shortage of actions you could take, but what tactics will actually deliver the results you need? And how can you find a security strategy that fits your budget and time constraints?
    Join top IBM i security expert Robin Tatam as he outlines the five fastest and most impactful changes you can make to strengthen IBM i security this year.
    Your system didn’t become unsecure overnight and you won’t be able to turn it around overnight either. But quick wins are possible with IBM i security, and Robin Tatam will show you how to achieve them.

  • How to Meet the Newest Encryption Requirements on IBM i

    SB PowerTech WC GenericA growing number of compliance mandates require sensitive data to be encrypted. But what kind of encryption solution will satisfy an auditor and how can you implement encryption on IBM i? Watch this on-demand webinar to find out how to meet today’s most common encryption requirements on IBM i. You’ll also learn:

    • Why disk encryption isn’t enough
    • What sets strong encryption apart from other solutions
    • Important considerations before implementing encryption

     

     

  • Security Bulletin: Malware Infection Discovered on IBM i Server!

    SB PowerTech WC GenericMalicious programs can bring entire businesses to their knees—and IBM i shops are not immune. It’s critical to grasp the true impact malware can have on IBM i and the network that connects to it. Attend this webinar to gain a thorough understanding of the relationships between:

    • Viruses, native objects, and the integrated file system (IFS)
    • Power Systems and Windows-based viruses and malware
    • PC-based anti-virus scanning versus native IBM i scanning

    There are a number of ways you can minimize your exposure to viruses. IBM i security expert Sandi Moore explains the facts, including how to ensure you're fully protected and compliant with regulations such as PCI.

     

     

  • Fight Cyber Threats with IBM i Encryption

    SB PowerTech WC GenericCyber attacks often target mission-critical servers, and those attack strategies are constantly changing. To stay on top of these threats, your cybersecurity strategies must evolve, too. In this session, IBM i security expert Robin Tatam provides a quick recap of IBM i security basics and guides you through some advanced cybersecurity techniques that can help you take data protection to the next level. Robin will cover:

    • Reducing the risk posed by special authorities
    • Establishing object-level security
    • Overseeing user actions and data access

     

     

     

  • 10 Practical IBM i Security Tips for Surviving Covid-19 and Working From Home

    SB PowerTech WC GenericNow that many organizations have moved to a work from home model, security concerns have risen.

    During this session Carol Woodbury will discuss the issues that the world is currently seeing such as increased malware attacks and then provide practical actions you can take to both monitor and protect your IBM i during this challenging time.

     

  • How to Transfer IBM i Data to Microsoft Excel

    SB_HelpSystems_WC_Generic3 easy ways to get IBM i data into Excel every time
    There’s an easy, more reliable way to import your IBM i data to Excel? It’s called Sequel. During this webinar, our data access experts demonstrate how you can simplify the process of getting data from multiple sources—including Db2 for i—into Excel. Watch to learn how to:

    • Download your IBM i data to Excel in a single step
    • Deliver data to business users in Excel via email or a scheduled job
    • Access IBM i data directly using the Excel add-in in Sequel

    Make 2020 the year you finally see your data clearly, quickly, and securely. Start by giving business users the ability to access crucial business data from IBM i the way they want it—in Microsoft Excel.

     

     

  • HA Alternatives: MIMIX Is Not Your Only Option on IBM i

    SB_HelpSystems_WC_GenericIn this recorded webinar, our experts introduce you to the new HA transition technology available with our Robot HA software. You’ll learn how to:

    • Transition your rules from MIMIX (if you’re happy with them)
    • Simplify your day-to-day activities around high availability
    • Gain back time in your work week
    • Make your CEO happy about reducing IT costs

    Don’t stick with a legacy high availability solution that makes you uncomfortable when transitioning to something better can be simple, safe, and cost-effective.

     

     

  • Comply in 5! Well, actually UNDER 5 minutes!!

    SB CYBRA PPL 5382

    TRY the one package that solves all your document design and printing challenges on all your platforms.

    Produce bar code labels, electronic forms, ad hoc reports, and RFID tags – without programming! MarkMagic is the only document design and print solution that combines report writing, WYSIWYG label and forms design, and conditional printing in one integrated product.

    Request your trial now!

  • Backup and Recovery on IBM i: Your Strategy for the Unexpected

    SB HelpSystems SC 5413Robot automates the routine tasks of iSeries backup and recovery, saving you time and money and making the process safer and more reliable. Automate your backups with the Robot Backup and Recovery Solution. Key features include:
    - Simplified backup procedures
    - Easy data encryption
    - Save media management
    - Guided restoration
    - Seamless product integration
    Make sure your data survives when catastrophe hits. Try the Robot Backup and Recovery Solution FREE for 30 days.

  • Manage IBM i Messages by Exception with Robot

    SB HelpSystems SC 5413Managing messages on your IBM i can be more than a full-time job if you have to do it manually. How can you be sure you won’t miss important system events?
    Automate your message center with the Robot Message Management Solution. Key features include:
    - Automated message management
    - Tailored notifications and automatic escalation
    - System-wide control of your IBM i partitions
    - Two-way system notifications from your mobile device
    - Seamless product integration
    Try the Robot Message Management Solution FREE for 30 days.

  • Easiest Way to Save Money? Stop Printing IBM i Reports

    SB HelpSystems SC 5413Robot automates report bursting, distribution, bundling, and archiving, and offers secure, selective online report viewing.
    Manage your reports with the Robot Report Management Solution. Key features include:

    - Automated report distribution
    - View online without delay
    - Browser interface to make notes
    - Custom retention capabilities
    - Seamless product integration
    Rerun another report? Never again. Try the Robot Report Management Solution FREE for 30 days.

  • Hassle-Free IBM i Operations around the Clock

    SB HelpSystems SC 5413For over 30 years, Robot has been a leader in systems management for IBM i.
    Manage your job schedule with the Robot Job Scheduling Solution. Key features include:
    - Automated batch, interactive, and cross-platform scheduling
    - Event-driven dependency processing
    - Centralized monitoring and reporting
    - Audit log and ready-to-use reports
    - Seamless product integration
    Scale your software, not your staff. Try the Robot Job Scheduling Solution FREE for 30 days.

  • ACO MONITOR Manages your IBM i 24/7 and Notifies You When Your IBM i Needs Assistance!

    SB DDL Systems 5429More than a paging system - ACO MONITOR is a complete systems management solution for your Power Systems running IBM i. ACO MONITOR manages your Power System 24/7, uses advanced technology (like two-way messaging) to notify on-duty support personnel, and responds to complex problems before they reach critical status.

    ACO MONITOR is proven technology and is capable of processing thousands of mission-critical events daily. The software is pre-configured, easy to install, scalable, and greatly improves data center efficiency.