IBM opening up System I with the addition of languages such as Python, Node.JS & Ruby is a major step forward and has helped us achieve some amazing results. Python has many library’s available that enable the programmer to perform complex operations with ease. It is also very easy to read Python code so it is always clear what’s going on, I don’t think we can say that with RPG code.
The best way of working with these new options is to create a subsystem for Openssh server (following the excellent IBM Redbook on Openssh Server it may be old but still relevant). QSH/PASE can be tedious.
Using Python we can extend native report programs to include formatted XLSX output.
Access to system services (programs,commands,database) is provided through the excellent XMLSERVICE library from Young i Professionals (http://yips.idevcloud.com/wiki/index.php/XMLService/XMLSERVICE)
""" Configure: Requires XMSLERVICE library installed, see following link installation http://yips.idevcloud.com/wiki/index.php/XMLService/XMLSERVICE Transports: 1) XMLSERVICE direct call (current job) from itoolkit.lib.ilibcall import * itransport = iLibCall() 2) XMLSERVICE db2 call (QSQSRVR job) from itoolkit.db2.idb2call import * itransport = iDB2Call(config.user,config.password) -- or -- conn = ibm_db.connect(database, user, password) itransport = iDB2Call(conn) 3) XMLSERVICE http/rest/web call (Apache job) from itoolkit.rest.irestcall import * itransport = iRestCall(url, user, password) """ from itoolkit.lib.ilibcall import * itransport = iLibCall() from itoolkit import * sQry = 'QUERY' itool = iToolKit() itool.add(iSqlQuery('custquery', sQry)) itool.add(iSqlFetch('custfetch')) itool.add(iSqlFree('custfree')) # xmlservice itool.call(config.itransport) QCUSTCDT = itool.dict_out('custfetch') if 'error' in QCUSTCDT: print (QCUSTCDT['error']) exit() else: # Loop record set