Sidebar

V3R1 Follow-up: An Introduction to Program Binding

IBM i (OS/400, i5/OS)
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

Brief: Binding options for called programs are a key element of the Integrated Language Environment (ILE). Different types of binding allow the application designer to determine when program calls are resolved-at compile time or at run time. By making the right trade-offs, you will be able to design more efficient, more modular programs. This article explores the binding options and the commands that support them.

The Integrated Language Environment (ILE) that was announced on February 16, 1993 provides the basis for a new generation of AS/400 languages. ILE implementations are currently available or announced for C, RPG, COBOL, and CL. For the majority of users, the significance of ILE will not be realized until the general availability of ILE RPG, concurrent with V3R1 later this year.

This article concentrates on features that are inherent to ILE rather than a specific language implementation. The article begins with some general ILE concepts (for more information, see "The Integrated Language Environment," MC, May 1993), but the main focus is ILE's binding facilities.

Binding is concerned with improving CALL performance and giving programmers the flexibility to decide what type of CALL to use. Prior to ILE, most AS/400 languages supported only one type of call-an external or dynamic call. ILE languages and the underlying ILE functions support dynamic calls and two types of bound calls. As you'll see, there are pros and cons to each type of binding.

In general, ILE binding facilities make it more practical to write AS/400 applications in a very modular fashion. The result is smaller, less complex, more maintainable application components. To give you an understanding of how ILE evolved, let's begin with a look at the AS/400 language implementations.

Three programming models now coexist on the AS/400. The program models and their characteristics are illustrated in 1. Keep in mind that the functions of the Original Program Model (OPM) or the Extended Program Model (EPM) are not lost. ILE brings the best features of OPM and EPM into one evolutionary model at a lower level of the operating system. This allows traditional languages and new languages to work and perform well together.

Three programming models now coexist on the AS/400. The program models and their characteristics are illustrated in Figure 1. Keep in mind that the functions of the Original Program Model (OPM) or the Extended Program Model (EPM) are not lost. ILE brings the best features of OPM and EPM into one evolutionary model at a lower level of the operating system. This allows traditional languages and new languages to work and perform well together.

Survival of the Fittest

Let's start with the OPM programming model. Typically, you have a small number of source members against which you run the CRTxxxPGM command, where xxx is the source type (e.g., RPG or CBL). The result of running CRTxxxPGM is a *PGM object. You can call these programs from the command line or from another program. This type of call is referred to as an external call (CALLX internally on the system) or a dynamic call. Experience shows that this type of call is slow, forcing programmers to create applications using a small number of very large programs to reduce the number of external calls.

From a performance standpoint, the underlying problem with using external calls is that the calls are done dynamically. For example, when you call from program A to program B, the system has to resolve the reference to program B by searching the library list. The resolution and other checking performed at run time are very expensive. In ILE, you still have this external call mechanism and you also have a new mechanism referred to as a bound call which is made available through binding.

The bound call has much better performance than an external call since it shifts the overhead of resolving the reference from run time to compile time. The overhead occurs once when the program is created, rather than every time the application is run. ILE RPG reduces the overhead of the RPG fixed-logic cycle when using a bound call. Only the parts of the cycle that are used are initialized.

This gives programmers the flexibility to structure their applications in a modular format without having to pay a penalty in performance. The many benefits to modularity include better maintainability and well-tested reusable parts.

One often-overlooked benefit of modular programming is convenience among a team of programmers working on a single application. If you have a team of programmers and your application is only broken up into two or three parts, chances are that programmers are going to have contention for the parts. This contention forces developers to make copies of parts, change the copies, and then dual-maintain the changes back into the original. This type of activity is error-prone and time-consuming. ILE lets you avoid this situation.

Modules and Binding

One of the great things about ILE is that if you don't want to change, you typically don't have to-you can mix dynamic calls and bound calls within a single application. You can design your applications to take advantage of the strengths of each type of call. ILE provides new objects and commands to help you manage the elements, and each ILE language provides specific support for both dynamic and bound calls.

A module (object type *MODULE) is a new AS/400 object created using the Create xxx Module (CRTxxxMOD) commands (as with the CRTxxxPGM commands, xxx represents the language of the source member). The resulting *MODULE object is a nonexecutable, intermediate representation of the source member. The biggest difference between a *MODULE object and a *PGM object is that you cannot execute a module. However, you can use commands such as copy, delete, and display on *MODULE objects.

What good is a module if you can't execute it? A module is literally the building block for ILE programs. Once you have one or more *MODULE objects, you use the Create Program (CRTPGM) command to create your ILE program.

CRTPGM takes the *MODULE objects that are specified on the command and statically binds them together to form a *PGM. Essentially, static binding- known as linking on some systems-is the process of resolving the symbols between the modules and physically combining the *MODULE objects together to form a *PGM. This type of static binding is also referred to as bind by copy.

In ILE RPG you can choose to dynamically call a program using the CALL op code or perform a bound procedure call using the CALLB op code. You can even mix and match dynamic calls and bound calls within the same program object.

The two-step, program-creation process is illustrated in 2. In this example, the CRTRPGMOD command is run against RPG source members A and B to create two modules. The CRTPGM command is run against the two modules to create an executable program that has physical copies of the two modules within it.

The two-step, program-creation process is illustrated in Figure 2. In this example, the CRTRPGMOD command is run against RPG source members A and B to create two modules. The CRTPGM command is run against the two modules to create an executable program that has physical copies of the two modules within it.

For those of you who do not wish to use a two-step, program-creation process, the new CRTBNDxxx commands can create an ILE program directly from your source. The CRTBNDxxx commands cannot be used to bind multiple modules together. They simply camouflage the create module step for programs containing a single module.

Within each source member, you can use a combination of dynamic and bound calls. ILE RPG implements bound calls with the CALLB op code. To retain backwards compatibility, any program called with the CALL op code will be dynamically called. This retains the call function exactly as it exists in prior versions of RPG. CALLB specifies a bound call that will be resolved at compile time. A bound call is in the range of an order of magnitude faster than an external call.

Procedures

A more subtle concept than bound calls is a procedure. A procedure defines a callable portion of code for ILE languages. In nontechnical terms, a procedure is a sequence of steps used to solve a problem. Generically, you can think of an ILE procedure as a set of high-level language (HLL) statements that perform a particular task. Technically, you need to make distinctions about how procedures are implemented in each HLL.

In ILE RPG, a procedure has a one-to-one correspondence with a module object- in other words, every module is turned into a procedure. In other languages, a module may contain multiple procedures. For example, ILE C equates the C concept of a function to the ILE procedure concept. An ILE C module can contain many procedures, and each one can be called independently.

Any call from one procedure to another (whether the procedure is a C function within the same module or is from a stand-alone RPG module) within an ILE program object is a bound call. Therefore, you will use the CALLB op code when an ILE RPG procedure calls another ILE RPG procedure within the same program. You can also use CALLB to call procedures written in other languages.

Understanding procedures will help you to grasp how multiple languages work together in ILE and particularly how service programs are implemented. I'll discuss service programs in more detail later in this article.

Using Multiple Languages

One other useful feature is the ability to bind (using CRTPGM) module objects created in one language with module objects created in another language. 3 shows an example of how an RPG source member, a C source member, and a CL source member can be combined to create one ILE program. The ability to use different languages together in a seamless and efficient manner opens the doors to many different possibilities.

One other useful feature is the ability to bind (using CRTPGM) module objects created in one language with module objects created in another language. Figure 3 shows an example of how an RPG source member, a C source member, and a CL source member can be combined to create one ILE program. The ability to use different languages together in a seamless and efficient manner opens the doors to many different possibilities.

For example, your application may be predominantly written in RPG, but may benefit by having some functions (procedures) written in C. Now you can have your RPG modules bound to a C module and you can call the C functions using the CALLB op code. Another very good use of this feature would be to bind your CL driver programs directly in with your RPG programs. You can call your RPG procedures using the new Call Procedure (CALLPRC) command in your CL module. This eliminates the external call overhead between CL programs and RPG programs.

You always had the ability to use multiple languages together within an application. However, the external call overhead was high and each language had its own exception handling, storage management, and so on. Using different languages together in ILE does not mean you can ignore the fact that you are using different languages. However, it does reduce the complexity considerably since the languages share a common interface and can use the same memory management and exception management.

In addition, each ILE language has added features that make it easier to work with other languages. For example, module names can only be 10 characters long since this is the size of the name parameter on the CRTPGM command. However, the CALLB op code in ILE RPG allows you to specify names up to 255 characters long. This allows you to call ILE C procedures that have names longer than 10 characters. Remember that procedures in C do not correspond to modules but rather to the C language construct of a function. Therefore, only the module object's name is required to conform with the 10-character limitation.

Another example is the ability to have a return value on the CALLPRC instruction in ILE CL. This allows ILE CL to use the return values from calls to functions (such as in C).

Service Programs

The obvious question at this point is, "What do I do if I have a generic procedure which I want to bind into many different programs? Do I have to statically bind this procedure (*MODULE) to all the different programs, and thus have multiple copies all over the place?" The answer is no; if you had to bind by copy one procedure into many different programs, it would become a maintenance nightmare.

There is a second type of binding mechanism called bind by reference. Bind by reference allows you to call procedures in a dynamic fashion. (The resolution occurs at program activation time-explained in greater detail later.) This capability is made available through a call to a procedure in a service program. A service program (*SRVPGM) is similar to an ILE program in that it is an object created by binding one or more modules together. However, unlike a *PGM, you cannot call a *SRVPGM. You can only call the procedures that are within the service program. The only way to use a service program is by having it bound by reference to an ILE program.

Creating a service program follows the same steps as creating an ILE program. 4 shows an example that has two RPG source members against which you run the CRTRPGMOD command to create modules. Then the CRTSRVPGM command is run against MY_MOD1 and MY_MOD2 to create the service program MY_SRV.

Creating a service program follows the same steps as creating an ILE program. Figure 4 shows an example that has two RPG source members against which you run the CRTRPGMOD command to create modules. Then the CRTSRVPGM command is run against MY_MOD1 and MY_MOD2 to create the service program MY_SRV.

5 shows how to bind by reference to the service program created in 4. The service program, MY_SRV, is bound by reference to the ILE program, MY_PGM, by specifying it on the BNDSRVPGM option of the CRTPGM command. (This option is not available on the CRTBNDxxx commands.) However, unlike a *MODULE object which is copied into the final program object, only the information about the functions and data defined in the service program is stored in the program (MY_PGM). This allows you to have one physical copy of your code made into a service program and referred to by many different programs within your application, as illustrated in 6.

Figure 5 shows how to bind by reference to the service program created in Figure 4. The service program, MY_SRV, is bound by reference to the ILE program, MY_PGM, by specifying it on the BNDSRVPGM option of the CRTPGM command. (This option is not available on the CRTBNDxxx commands.) However, unlike a *MODULE object which is copied into the final program object, only the information about the functions and data defined in the service program is stored in the program (MY_PGM). This allows you to have one physical copy of your code made into a service program and referred to by many different programs within your application, as illustrated in Figure 6.

In this case, if there were a bug in the code that was used to create service program FRED, all that you would have to do is recreate service program FRED and replace it on your system. Then programs ONE, TWO, and THREE and service program JOE would automatically pick up the corrected version of FRED. You would not be required to rebind program ONE, TWO, or THREE or service program JOE unless you change the exports (we'll look at exports later) from service program FRED.

Design Considerations

From a performance perspective, bind by reference is a little more expensive than bind by copy. The actual call itself using bind by reference versus bind by copy is virtually the same. However, when you call the program that your service program is bound to (activate your program), the exports are resolved. Thus, resolution only occurs once at program activation and not every time you call the procedures in your service program.

When designing your application, you have to try to strike a balance between maintainability (which is usually easier if you use service programs) and application start-up performance. If you have a program which is bound by reference to a large number of service programs, there is going to be a noticeable activation-time penalty. However, once your program has been activated, then any call to a procedure in a service program is a bound call, which is very fast.

From an application design perspective, there are many benefits to using service programs. One of the benefits is having a single copy of the executable code on the system (as is illustrated in 6). Another advantage is the ease with which you can maintain any code that is in a service program. With service programs, you just replace the old service program with the new one, and the applications that call it utilize the new version without any recompilation. (Dynamic calls to programs accomplish the same ease of maintenance, but their performance overhead is much greater.)

From an application design perspective, there are many benefits to using service programs. One of the benefits is having a single copy of the executable code on the system (as is illustrated in Figure 6). Another advantage is the ease with which you can maintain any code that is in a service program. With service programs, you just replace the old service program with the new one, and the applications that call it utilize the new version without any recompilation. (Dynamic calls to programs accomplish the same ease of maintenance, but their performance overhead is much greater.)

Another advantage of using service programs within your application is the ability to control resources such as memory and file usage. The ability to control these types of resources involves the concept of activation groups. Activation groups will not be discussed in detail in this article; but suffice it to say that data management resources can be scoped to activation groups, and a service program can run in its own activation group.

Scoping of resources defines how they are shared. A simple example is file overrides. Normally, the extent of a file override is to the call level, so that only programs running lower in the invocation stack of a job are affected. In ILE, file overrides can be isolated to activation groups so that programs running in one activation group of a job are not affected by file overrides created in another activation group within the same job. This gives application designers the flexibility to scope resources in whichever manner they choose, and still get the performance benefit of using bound calls.

Imports and Exports

With any ILE module object, there is the concept of imports and exports. An import is either data or procedures that are referred to in one module or program and defined in another module or program. An export is either data or procedures defined in a module or program and made available to other modules or programs. Thus, for every import there must be a corresponding export.

For C programmers, the concept of imports and exports is well understood due to language constructs such as the extern keyword and static data. For other languages-such as RPG-these concepts were not intrinsic in the language, although they are available in some of the enhancements made in the ILE languages.

7 illustrates how imports and exports work in ILE RPG. The RPG source member GL has a bound call (CALLB) to procedure ACT_REC. Procedure ACT_REC is not defined in module GL, but is only referenced. So procedure ACT_REC is said to be imported in module GL. When you create module ACT_REC from source member ACT_REC, the procedure ACT_REC is available to be used by other modules and is said to be exported from module ACT_REC.

Figure 7 illustrates how imports and exports work in ILE RPG. The RPG source member GL has a bound call (CALLB) to procedure ACT_REC. Procedure ACT_REC is not defined in module GL, but is only referenced. So procedure ACT_REC is said to be imported in module GL. When you create module ACT_REC from source member ACT_REC, the procedure ACT_REC is available to be used by other modules and is said to be exported from module ACT_REC.

At CRTPGM time, the import for procedure ACT_REC in module GL is resolved to the export of procedure ACT_REC in module ACT_REC. In other words, a matching export (procedure ACT_REC) is resolved for the import in GL.

For a simple bound call such as the previous example, imports and exports are only concerned with resolving references to another procedure. However, imports and exports are critical to understanding how service programs work. As mentioned earlier, when you bind by reference to a service program, only the information about functions and external data is copied into the program object-this information defines the service program's export information.

8 illustrates how the export information from a service program is stored in the program object which is bound by reference to the service program. In this example, the imports MOD_A and MOD_B are internally resolved when modules MOD_A and MOD_B are statically bound together at compile time. The imports PROC_1, PROC_2, and PROC_3 are found in service program MY_SRVPGM, and the information about them is stored in program MY_PGM. When program MY_PGM is called, the service program MY_SRVPGM is activated. In other words, when MY_PGM is called, the service program MY_SRVPGM is externally resolved.

Figure 8 illustrates how the export information from a service program is stored in the program object which is bound by reference to the service program. In this example, the imports MOD_A and MOD_B are internally resolved when modules MOD_A and MOD_B are statically bound together at compile time. The imports PROC_1, PROC_2, and PROC_3 are found in service program MY_SRVPGM, and the information about them is stored in program MY_PGM. When program MY_PGM is called, the service program MY_SRVPGM is activated. In other words, when MY_PGM is called, the service program MY_SRVPGM is externally resolved.

The externally resolved import information is stored in the program object. If the service program that is resolved at run time has different exports than it did when it was created, you will receive a signature-violation exception. A signature is a similar concept to a level-check. Every service program is given a signature, unless you explicitly specify that you don't want one generated.

When the user of a *SRVPGM specifies the service program name on the CRTPGM command, the signature of the service program is copied into the program as illustrated in 8. When the program is activated for the first time, the signature stored in the *PGM is checked against the signature of the *SRVPGM. If the signatures differ, a signature-violation exception is raised.

When the user of a *SRVPGM specifies the service program name on the CRTPGM command, the signature of the service program is copied into the program as illustrated in Figure 8. When the program is activated for the first time, the signature stored in the *PGM is checked against the signature of the *SRVPGM. If the signatures differ, a signature-violation exception is raised.

Selective Exporting

The service program examples in this article assume that every procedure was exported from the *SRVPGM. There is a mechanism available through a binder language that lets you specify which procedures and data you want to export from a service program. In essence, the binder language allows you to define an interface to your service programs. The binder language is a simple language which follows CL syntax rules.

An example of the binder language that could be used when the service program in 8 is created follows:

An example of the binder language that could be used when the service program in Figure 8 is created follows:

 STRPGMEXP PGMLVL(*CURRENT) + LVLCHK(*YES) EXPORT SYMBOL('PROC_1') EXPORT SYMBOL('PROC_2') EXPORT SYMBOL('PROC_3') ENDPGMEXP 

The PGMLVL option allows you to specify multiple levels of exports that you wish to support. In this example, *CURRENT is specified to indicate the current list of exports to be used. The LVLCHK option allows you to specify whether or not you wish to have the system check the binding signatures. In this case, *YES is specified, which indicates that signature-checking is enabled. The remainder of the binder language specifications list the exports for the service program. The binder language statements are executed by specifying EXPORT(*SRCFILE) on the CRTSRVPGM command.

Specifying an export list is the preferred method of specifying which procedures and data are to be exported from a service program. The other method is to specify EXPORT(*ALL) on the CRTSRVPGM command. This causes all external data and procedures to be exported from the service program.

The reason that using a binder language specification is better than using EXPORT(*ALL) is that the signature for the service program is generated based on the exports and the position of the exports. By using an export list, you have much better control of the signatures that are going to be generated, and you have the ability to support multiple versions of exports.

Binding Directory

If your ILE application consists of a large number of modules and service programs, specifying them on the CRTPGM and CRTSRVPGM commands would become very tedious and error-prone. There is a mechanism called a binding directory which solves this problem. A binding directory is a new system object of type *BNDDIR. Binding directories contain the names of modules and service programs that you may need when you create your ILE program or service program.

An important benefit of using a binding directory is that a module or service program will only be bound-either statically for a module or by reference for a *SRVPGM-into your program or service program if it provides an export that matches an unresolved import. The following commands are used with binding directories:

CRTBNDDIR Create Binding Directory

DLTBNDDIR Delete Binding Directory

ADDBNDDIRE Add Binding Directory Entry

RMVBNDDIRE Remove Binding Directory Entry

DSPBNDDIR Display Binding Directory

WRKBNDDIR Work with Binding Directory

WRKBNDDIRE Work with Binding Directory Entry

The entries that you add to your binding directory do not need to exist on the system, since they are only names that will be used later at program or service program creation time.

Bringing It All Together

To summarize, there are two types of calls in ILE: dynamic calls and the much faster bound calls. Dynamic calls are external calls made to programs. Bound calls are calls made to procedures within an ILE program or to procedures in a service program.

ILE programs or service programs are created by binding modules and service programs together. There are two types of binding-bind by copy (static binding) and bind by reference (dynamic binding). Bind by copy is the mechanism where modules are physically copied into a program or service program object. Bind by reference is the mechanism where information about the exports in a service program is stored in the program or service program object and is resolved during program activation time.

I hope that this information helps you see some of the benefits that can be derived from using ILE. However, binding is only one part of ILE, and there are many other benefits to be derived from using ILE. I'll explore some of these features in an upcoming article.

Glen Sakuth is a computer engineer working in the AS/400 Languages Architecture and Design Control Group at the IBM Toronto Lab. He was one of the early developers involved with the C/400 compiler. He then became one of the principle designers and programmers of the CUBE-3 back-end used by all ILE languages. He is currently the architect for the ILE C/400 compiler. He is a frequent speaker at COMMON conferences and can be reached through Internet at This email address is being protected from spambots. You need JavaScript enabled to view it..


V3R1 Follow-up: An Introduction to Program Binding

Figure 1 AS/400 Program Models

 Original Program Model (OPM) o RPG/400, COBOL/400, PL/I, CL, and BASIC. o Single entry point into a program. o Single scoping of variables (only global variables). o Access to data only through declared variables (no pointers). o Dynamic call binding. Extended Program Model (EPM) o Pascal and EPM C/400. o Features similar to those of ILE, only not as well integrated with each other or the system. Integrated Language Environment (ILE) o ILE C/400, ILE RPG/400 (also known as RPG IV), ILE COBOL/400, ILE CL. o Multiple external procedures or functions (multiple entry points). o Nested scoping of variables (global, local, block). o Access to data through variables and pointers. o Static and automatic data. o Dynamic storage allocation. o Optimized code generation. o Consistent exception model. 
V3R1 Follow-up: An Introduction to Program Binding

Figure 2 Combining Modules with Static Binding

 UNABLE TO REPRODUCE GRAPHICS 
V3R1 Follow-up: An Introduction to Program Binding

Figure 3 Creating an ILE Program with Three ILE Languages

 UNABLE TO REPRODUCE GRAPHICS 
V3R1 Follow-up: An Introduction to Program Binding

Figure 4 Creating a Service Program

 UNABLE TO REPRODUCE GRAPHICS 
V3R1 Follow-up: An Introduction to Program Binding

Figure 5 Binding by Reference a Service Program to a Progra

 UNABLE TO REPRODUCE GRAPHICS 
V3R1 Follow-up: An Introduction to Program Binding

Figure 6 The Same Service Program Used by Many Programs

 UNABLE TO REPRODUCE GRAPHICS 
V3R1 Follow-up: An Introduction to Program Binding

Figure 7 Imports and Exports for a Simple RPG Program

 UNABLE TO REPRODUCE GRAPHICS 
V3R1 Follow-up: An Introduction to Program Binding

Figure 8 Imports and Exports for a Program

 UNABLE TO REPRODUCE GRAPHICS 
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.