Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IBM i Determine Available Programming Languages

I've read time and time again that IBM i is a modern system supporting many programming languages. How do I determine which ones are available to me besides COBOL and RPG?

A laundry list is given on Wikipedia, and I'd be interested especially in C, C++, BASIC, SmallTalk, and Pascal.

https://en.wikipedia.org/wiki/IBM_System_i#Programming

What commands can be run to determine which languages are installed? How do you edit source for these languages in the qshell environment? (Vi input appears broken in qshell ...)

like image 980
Ryan Burnside Avatar asked Dec 08 '22 11:12

Ryan Burnside


2 Answers

It's not completely clear what you mean by "available to me". If you mean "already installed and ready to use" then there are at least a couple of ways to check, each one finding a different set of software.

The traditional, proprietary stuff can be found by entering GO LICPGM and then choosing option 10. Most likely, if you know you already have Cobol and RPG installed, then you also have C and C++, as these are bundled together. If your setup is at all typical, you also should have Java installed already. I think all systems also have CL and Rexx (the latter or possibly both may not show up as a licensed program).

The newer, open source stuff lives in PASE and is managed by the yum package manager, which you can use via the Access Client Solutions GUI or at a command line. If you don't already have yum installed, you can find out how to get it here. If you do have yum installed, then you can find out what software has been installed (and what's available to install) with the command yum list entered at a PASE command line.

Right now, the major languages available from IBM via yum are Node.js (JavaScript), Python, Perl, R, and Lua. Additionally, there is an independently developed repository which contains Mono (.NET) and Erlang, as well as an enhanced repackaging of R. yum can access that repo with a bit of configuration.

Languages with corporate backing (from entities other than IBM) include PHP from Zend by Perforce and Ruby from PowerRuby. Both are delivered as traditional licensed programs, though there is now (as of December 2019) also a yum-installable community edition of PHP from Zend by Perforce. (Again, you would need to configure yum so that it can find that repo).

There is also an unusual version of Python called iSeriesPython which is freely downloadable and lives in the QSYS library system rather than in PASE. (The iSeriesPython website is gone; the Wayback Machine snapshot I've included here is the latest I could find, but does not reflect the last state of the website or the software. Use the download link I provided to get the latest version of the software.)


Note that Qshell (QSH) is not a suitable environment for interactively using PASE. You'll want to log in using SSH and a client such as PuTTY. If you do that, then you'll have proper TTY functionality and can use vi. Also, as of this writing you can use yum to install nano, joe, and vim.

But most people don't use any of those except for quick edits or special circumstances. The normal workflow is to use whatever your favorite editor or IDE is locally (on your PC, Mac, or Linux box) and either shuttle the source back and forth with an FTP client or edit directly on the IFS using a network share or SSHFS.

like image 69
John Y Avatar answered Dec 30 '22 06:12

John Y


BASIC, Pascal, and possibly Smalltalk are no longer supported...

PL/1 is only supported via Request Price Quotation (RPQ) for existing customers...

Basically, the ILE languages (compilers supplied by IBM that can create IBM i *PGM or *SRVPGM objects)

  • C
  • C++
  • COBOL
  • RPG
  • CL

Also SQL. Stored procedures and user defined functions written in SQL are actually created as C *PGM/*SRVPGM objects. You can also use any of the above ILE language objects as an SQL stored procedure or user defined function. Finally all the above can have embedded SQL statements in their source.

Scripting/interpretated languages (from IBM)

  • Net.Data
  • REXX

"Modern" languages supported via PASE (basically an AIX compatibly layer)

  • Java (JRE/SDK provided by IBM)
  • PHP (provided/supported by Zend)

And additional Open source languages (also via PASE)

  • Python
  • Perl
  • Node.js
  • Ruby

more info on the Open Source for IBM i here https://bitbucket.org/ibmi/opensource/src/master/

like image 40
Charles Avatar answered Dec 30 '22 08:12

Charles