Dear folks, subproject AS-400 (http://i5toolkit.sourceforge.net/as-400/index.html) has just beenlaunched. The name of the subproject is an acronym for "ActionScript and AS/400". This subproject provides supports for ActionScript (the programming language of Adobe Flash) to access an IBM i server via the IBM i host servers.
Dear folks, release 0.2.16 of i5/OS Programmer's Toolkit is available.
What's New in Release 0.2.16?
* Subproject "System-builtin Headers for ILE RPG" is renamed to "System-builtin Headers and Examples for ILE HLLs". The subproject is enriched with system-builtin headers for ILE COBOL and usage examples in ILE COBOL and CL of using system-builtins (bound program access interfaces of MI instructions). Also the original system-builtin headers for ILE RPG, mih52.rpgleinc, and mih54.rpgleinc are divided into small ones by category. Please refere to System-builtin Headers and Examples for ILE HLLs for details. The page "List of System-builtins" lists all system-builtins currently covered by this subproject.
* CL command Display Panel (DSPPNL) is added to UIM Related Tools
* The CVTHC Program is added to Miscellaneous Tools which is handy for an OPM or ILE HLL program to convert a hexadecimal value to character format.
* New techtips and how-tos are added to subproject Space Object Tools
* Binary components (save files) in directory bin of the release packaged changed:
o SAVF bin/emi.savf is removed
o SAVF bin/rpg.savf is removed
o SAVF bin/ifs.savf is added. IFS directories saved in it are:
+ /usr/local/include/cobol
+ /usr/local/include/emi
+ /usr/local/include/rpg
+ /usr/local/bin/i5toolkit
By now, most system-builtins (bound-program access interfaces of IBM i MI instructions) have been prototyped and tested by the subproject. ILE RPG Headers for System Builtins. Number of system-builtins prototyped in mih52.rpgleinc and mih54.rpgleinc reached 190 in this release. And there are now more than one hundred test programs written for them, which are also useful usage documentation of these system-builtins.... read more
Sometimes Programs and Procedures Want to Know: Who Am I? -- If you were a program, could you answer this question?
http://www.mcpressonline.com/programming/rpg/sometimes-programs-and-procedures-want-to-know-who-am-i.html
In software programming, sometimes a program, a procedure, or a process or thread needs to answer the question: "Who am I?" For example, in an error-logging framework, after getting the answer to this question, the error-logging framework might write a log entry like the following: "Failed to allocate heap storage in SOMELIB/SOMEPGM, procedure FOO of module BAR. From job QZDASOINITQUSER 123456, thread 00000030." To answer the "Who am I?" question, programmers could hard-code names of programs or procedures everywhere log entries need to be written, but doing that is obviously error-prone and will make code hard to maintain. A utility that can answer this question on behalf of any program or procedure will significantly reduce the efforts in maintaining code that writes log entries.... read more
The Most Lightweight Mutually Exclusive Synchronization Mechanism -- Implement the mutex primitive via MI instructions CHKLKVAL and CLRLKVAL.
http://www.mcpressonline.com/programming/rpg/the-most-lightweight-mutually-exclusive-synchronization-mechanism.html
This article is about how to implement the Mutex Primitive via MI Instructions CHKLKVAL and CLRLKVAL on a IBM i box (also known as AS/400, iSeries).... read more
A Fresh Approach to SCM: http://www.mcpressonline.com/programming/general/a-fresh-approach-to-scm.html
This article introduced an IFS-based SCM approach. Topics covered in this article include:
1. Storing source code in stream files in IFS
2. Editing stream source files using open-source utility STMFSEU
3. Accomplishing source change management by Subversion
4. Automating build processes via the make utility that is available in the PASE
5. Choosing a proper shell environment for your SCM processes... read more
This is an article on SEPT (System Entry Pointer Table) for i5/OS (also known as OS/400 or IBM I) RPG programmers. The SEPT is not only a means by which i5/OS programmers can enhance performance in API invocations. It is also a classic design of system pointer caching. Here's the link to the SEPT article:
http://www.mcpressonline.com/programming/rpg/are-you-taking-full-advantage-of-the-system-entry-point-table-object.html... read more
New components and utilities provided by this release include:
- Software Configuration Management Tools for i5/OS
SCM tools for i5/OS is a subproject of i5/OS Programmer's Toolkit. The purpose of SCM tools for i5/OS is NOT to design and implement a new series of i5/OS specific SCM tools. The purpose of it is to help i5/OS programmers to maintain and build their sources that are stored in stream files in the i5/OS integrated file system (IFS) and then exploit the power of efficient and mature SCM softwares from common platforms on i5/OS. Main utilities in this subproject include:... read more
Changes in release 0.2.13:
- ILE RPG header for index number of entries in the System Poitner Entry Table (SEPT), ept54.rpgleinc, added. Totally 7001 index number declarations according to the SEPT found on a V5R4M0 machine. The purpose of the design of ept54.rpgleinc is to help RPG programmers to improve efficiency in API invocations. For an example of utilizing this ILE RPG header, please refer to: http://i5toolkit.svn.sourceforge.net/viewvc/i5toolkit/rpg/test/t064.rpgle?view=markup.... read more
The following article in I5/OS RPG programming has been published at www.mcpressonline.com:
Exporting by Interfaces: Decoupling Service Programs and Service Consumer Applications
Link of this article is: http://www.mcpressonline.com/programming/rpg/exporting-by-interfaces-decoupling-service-programs-and-service-consumer-applications.html
HTH :p
One of my articles, Exploit Dynamic Program-Storage Management in ILE RPG, was published at MC Press Online at Feb 3. This articles covers four dynamic program-storage management methods that can be used in ILE RPG:
* Dynamically allocating automatic storage by MI instruction MODASA
* Managing heap storage with ILE CEE APIs or heap management MI instructions
* Using teraspace storage in ILE RPG
* Using thread-level global dynamic storage via Pthreads thread-specific storage APIs... read more
MIC now loads compiler builtins from an independent component, *USRIDX I5TOOLKIT/EMIBUILTIN so that the builtin collection can be upgraded independently with no infection to the compiler program. The bultin *USRIDX contains attributes to indicate the range of supported compiler versions. By this way, mismatch between the builtin collection and the compiler program can be avoid.
i5/OS Programmer's Toolkit 0.2.4 is released with its newly added member, MIC.
MIC is an MI(Machine Interface Instructions) compiler for i5/OS.
MIC is designed to enhance MI code's resusability and promote MI programmers' coding efficiency, by means of extensible builtin function support, file including support, and so on. Combining with MI language's native features in efficiency and flexibility, MIC make it much more easy for i5/OS programmers to produce powerful MI programs.
Enhancement including more MIC builtins and more documentation and practical examples on MI programming and how to use MIC are coming soon.
Sub-project MIC added.
- For MIC's source code, please refer to
http://i5toolkit.svn.sourceforge.net/viewvc/i5toolkit/mic/
- For MIC's documentation, please refer to
http://i5toolkit.sourceforge.net/mic/index.html
MIC is an MI(Machine Interface Instructions) compiler for i5/OS which
compiles a MI source file into a i5/OS program object. MIC support
Machine Interface language syantax which is described in Create
Program (QPRCRTPG) API's documenation. Additionally, MIC provides
language extensions to traditional MI syntax.... read more
This is a techniqual article on i5/OS queue objects by Junlei Li, project administrator of project i5/OS Programmer's Toolkit.
A chinese translation is also available.
See http://i5toolkit.sourceforge.net/main.html#sect_mp_articles
for details.
Contents of the article:
* 1. Terms and Abbreviations
* 2. An Introduction to Queue Objects on i5/OS
* 3. Difference between DTAQ and USRQ
o 3.1. Object Domain
o 3.2. Whether the Queue can be Journaled
o 3.3. Operation Interfaces
o 3.4. Operation Efficiency
o 3.5. DTAQ Messages can Include Sender's Information
* 4. Data Queue Operation Examples
o 4.1. Create a DTAQ
+ 4.1.1. Create a DTAQ of type FIFO or LIFO
+ 4.1.2. Create a Keyed DTAQ
+ 4.1.3. Create a DTAQ Supports Sender's ID
+ 4.1.4. Parameter MAXLEN(Maximum entry length) of CL command CRTDTAQ
+ 4.1.5. Parameter SIZE of CL Command CRTDTAQ
o 4.2. Delete a DTAQ
o 4.3. Enqueue Messages to a DTAQ
+ 4.3.1. Enqueue messages to a FIFO/LIFO DTAQ
+ 4.3.2. Enqueue Messages to a Keyed DTAQ
+ 4.3.3. Enqueue Messages to a Keyed DTAQ (in ILE RPG)
o 4.4. Dequeue Messages from a DTAQ
+ 4.4.1. Dequeue Messages from a FIFO/LIFO DTAQ
+ 4.4.2. Dequeue Messages from a Keyed DTAQ
+ 4.4.3. Dequeue Messages from a Keyed DTAQ without Removal of the Mequeued Messages
o 4.5. Clear Messages on a DTAQ
o 4.6. Retrieve Attributes of a DTAQ
o 4.7. Retrieve Messages from a DTAQ without Removing them
* 5. User Queue Operation Examples
o 5.1. Create a USRQ
+ 5.1.1. Maxinum Number of Messages of a USRQ
+ 5.1.2. USRQ's Domain Attribute
+ 5.1.3. QUSCRTUQ's parameter 14, Number of Queue Extensions
o 5.2. Delete a USRQ
o 5.3. Enqueue Messages to a USRQ
o 5.4. Dequeue Messages from a USRQ
+ 5.4.1. Execute DEQ Instruction without Waiting
+ 5.4.2. Execute DEQ Instruction with Limited Time-out or Infinitely
o 5.5. Clear a USRQ
o 5.6. Retrieve Attributes of a USRQ
o 5.7. Retrieve Messages on a USRQ
* 6. Usage Examples of Queue Objects
o 6.1. IBM's USRQ example: Creating a Batch Machine
o 6.2. Data Queue Support on Output Queues
o 6.3. Implement Priority-based IPC by Keyed Queue Objects
+ 6.3.1. Create the Keyed DTAQ Q27
+ 6.3.2. Write the Client Program R105
+ 6.3.3. Write the Server Program R106
o 6.4. Simulate Synchronous Calls by i5/OS Queue Objects
+ 6.4.1. Create DTAQ ISQL and ISQLR
+ 6.4.2. Write the CL Command - ISQL
+ 6.4.3. Write the Command Processing Program - ISQLCPP
+ 6.4.4. Write the Request Porcessing Program - ISQLSVR
+ 6.4.5. Run ISQLSVR and ISQL
+ 6.4.6. Write CL command RUNSQL
o 6.5. Pass Variable Length Data through i5/OS Queue Objects
+ 6.5.1. Create USRQ ISQL2 and ISQLR2
+ 6.5.2. Write CL command - ISQL2
+ 6.5.3. Write Commnad Processing Program ISQLCPP2
+ 6.5.4. Write the Server Program ISQLSVR2
+ 6.5.5. Write CL Command RUNSQL2
+ 6.5.6. Run ISQLSVR2 and ISQL2
o 6.6. Java and i5/OS Queue objects
+ 6.6.1. Write Java Class isql and isqlsvr
+ 6.6.2. Write Native Method isqlsvr.sendRequest
+ 6.6.3. Run Java Class isql
* Appendice
o Appendix 1. Enqueue USRQ Q11 for 1000 times
o Appendix 2. Enqueue DTAQ Q12(not journaled) for 1000 times
o Appendix 3. Enqueue DTAQ Q12(journaled) for 1000 times
o Appendix 4 Possible Journal Entry Type for Journal Code Q(Data queue operation)
o Appendix 5 A Joblog Saver Program
o Appendix 6 Reference
* About the Author
In release 0.2 of i5/OS Programmer's Toolkit, the following
components are added:
- CL command DSPQMSG(Display Queue Messages)<BR>
See http://i5toolkit.sourceforge.net/page_dspqmsg.html for details.
CL command DSPQD is the first member of the i5/OS Programmer's Toolkit.
The Display Queue Description (DSPQD) command shows one or more types of information of a queue object. The queue object could be a data queue object of object type *DTAQ or a user queue object of type *USRQ. When a DDM data queue object is specified, only the DDM data queue specific information is displayed.