FormaServe – How to get the BBC News Feeds in a RPG program on the IBM i.

In this short How To …. On IBM i Video set, we will be taking a look at how to show the BBC news feeds in a RPG program using embedded SQL.

We will be using the DB2 for IBM i HTTP Services to get the news feeds and then format them so our RPG program can display them/

Check out our Git Hub repository for all the source code, RPG, SQL and the display file, and lots more. It can be found at https://github.com/AndyYouens/f_Learning

— Contents —

00:00 – Intro
00:38 – What we trying to do?
01:08 – Configure Hot Spots in a 5250 session
01:22 – Your IBM i needs to talk to the BBC
01:53 – What are news feeds (RSS)
03:30 – DB2 HTTP Services
04:26 – SYSTOOLS Pr-req’s
05:18 – ACS Schemas
06:14 – Using HTTPGETBLOB
06:48 – Getting the XML from the News Feed
07:33 – Using SQL XMLTABLE & XMLPARSE functions
08:21 – 5250 Display file for the feeds
08:51 – RPGLE Program to display the feeds
10:50 – Check out learning.formaserve.co.uk & Powerwire.eu
11:14 – Wrap Up!

IBM i Open Source Updates May 2021

May updates at the same time as April updates? Madness, I say!

New Packages

HarfBuzz

HarfBuzz is a text shaping library with quite a unique name.

I mentioned in April’s update that Pango used Harfbuzz for complex text shaping. Well, apparently in our haste to ship Pango we forgot to ship harfbuzz too. Whoops!

GNU IDN Library

GNU IDN is a library which implements functions for handling internationalized hostnames. For example, this allows proper handling of the host name <räksmörgås.josefsson.org>

Package Updates

Ccache

Ccache now supports being used with GCC 10.

cURL

Curl has been built with brotli and libidn2, so these examples now work properly:

$ curl –compressed https://httpbin.org/brotli
{
“brotli”: true,
“headers”: {
“Accept”: “*/*”,
“Accept-Encoding”: “deflate, gzip, br”,
“Host”: “httpbin.org”,
“User-Agent”: “curl/7.76.1”,
“X-Amzn-Trace-Id”: “Root=1-60ba8841-79dfa33d6c5a76b85b1d5863”
},
“method”: “GET”,
“origin”: “206.9.215.19”
}

curl -s ‘https://räksmörgås.josefsson.org/’ | head
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 3.2 Final//EN”>
<html>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
<head>
<title>Räksmörgås.josefßon.org aka xn--rksmrgs-5wao1o.josefsson.org</title>
</head>

<body>

<h1>Räksmörgås.josefßon.org aka xn--rksmrgs-5wao1o.josefsson.org</h1>

Node.js 10, 12, 14

Versions of Node.js built on IBM i w/ GCC 6 cause the Node binary to export two C++ standard library functions. These functions are listed in node.exp, which is used for building C/C++ Node.js extensions. On Node.js 16, which is built with GCC 10, these functions are no longer exported by the node binary, causing problems for any extentions that expect the node binary to provide these functions (such as idb-connector).

Node.js 10, 12, and 14 have been patched to no longer list these functions in the node.exp file. A version of idb-connector which is built with these fixed Node.js builds should be available shortly.

Other Updates

openssl was updated to 1.1.1k.

Closing

Slower month in May, but still important updates.

IBM i Open Source Updates April 2021

Well, I’m a month late, but let’s not dawdle any further – on to the updates!

New Packages

Node.js 16

Node.js 16 was released in April and we have had it since day 2 (missed day 1 by a few hours unfortunately, but gotta leave some room for improvement :wink:). If you want to know more about what’s in Node.js 16, check out Bethany Griggs’ writeup here.

Note that Node.js 16 will become the next LTS version in October, but it’s currently receiving active updates until then. Additionally, Node.js 16 is only available on IBM i 7.3 and up from our 7.3+ repo. For now, you’ll need to add this repo manually, but hopefully not in the future.

With the release of Node.js 16, this also marks the end of support for Node.js 10 and it will receive no more updates.

GCC 10

GCC 10 is the first public version upgrade for GCC. While we originally started building our open source ecosystem with GCC 4.8 back in 2017, we upgraded to GCC 6.3 when we started packaging Node.js 8 as an rpm and we’ve been there ever since.

With GCC 10 for the first time we’re building our own version of GCC on IBM i in PASE instead of using binaries built by the AIX team. This means we can more tailor our package to our platform and when issues arise, we can fix them. This is also the first time we’ve had to think about an upgrade path and integration, since many packages link to libgcc_s and libstdc++. We can’t just rebuild the world with GCC 10 and call it a day since there are others building their own software (and even their own repositories of software) and they rely on our libraries being stable.

GCC 10 libraries will now upgrade the existing GCC 6 libraries and the compiler binaries, header files, and other files co-exist between the existing GCC 6 and new GCC 10 packages. There are still some rough edges with GCC 10, for instance Fortran support is not yet provided, so for the time being it’s recommended to use GCC 6 unless you need GCC 10.

Like OpenBLAS and Node.js 16, we are only providing GCC 10 in our 7.3+ repo.

LibTIFF

LibTIFF is a library for reading image data in the “Tagged Image File Format”. In March’s update, I mentioned that we had built R linking with this package, but apparently we had never shipped it. That got fixed in April.

ICU

ICU is a package which provides functions and utilities for doing Internationalization (i18n). This includes things like conversions between text encodings, collation, text formatting for numbers, dates, and currency amounts, etc.

This library is required by the PHP intl extension and can be used by various packages, including R.

Cairo

cairo is a 2D graphics library.

Pango

Pango is a library for laying out and rendering text. It can make use of cairo or X11 libraries to generate glyphs from font data and also uses HarfBuzz for laying out complex text.

tn5250

tn5250 is an ncurses-based 5250 client which runs in a Unix terminal. While it’s been available on Linux and other platforms for some time, you can now run it on IBM i over SSH. This now means you don’t have to switch away from your SSH terminal to access a 5250 terminal (say via IBM i Access Client Solutions) when you need such a thing. Of course, tn5250 is no replacement for ACS, but it may work well for what you need or in a pinch.

freetds

FreeTDS is a set of open source libraries which implement the Tabular Data Stream (TDS) protocol used by Microsoft SQL Server and Sybase DBMSes. This also provides an ODBC driver in the freetds-odbc package which can be used with node-odbc or pyODBC and PHP also provides a freetds extension.

Package Updates

unixODBC 2.3.9

While normally minor version bumps only contain bugfixes, isql and iusql in unixODBC 2.3.9 now support history. Just like in BASH, you can now scroll back through previous SQL queries from the same session or even previous sessions (stored in ~/.isql_history).

GNU Coreutils

The GNU uname -p now matches the PASE version in returning “powerpc” instead of “unknown”. This fixes a bug in CMake, which uses the output of uname -p for certain processing.

GnuPG

GnuPG is now built with zlib and bzip2 compression support.

Node.js 10, 12, 14

A patch was applied, which fixed a crash when a network interface name was longer than 10 characters, which is only possible when using VLANs. In addition, we now appropriately strip off the VLAN id to get the associated line description needed by QDCRLIND.

https://github.com/libuv/libuv/issues/3062

R

R has been built with Pango and Cairo support. This should greatly improve the quality of the graphs and images it generates.

Other Updates

nodejs10 was updated to 10.24.1.
nodejs12 was updated to 12.22.1.
nodejs14 was updated to 14.16.1.

Closing

Between GCC 10, Node.js 16, and R improvements there were lots of big changes in April. What was your favorite?