12 – How to Customize Chameleon Logon Screen

How the Chameleon Web Development Framework is used to modernize the IBM i, RPG community.

This channel helps IBM i developers to become more proficient in creating browser apps, by presenting step by step instructional videos on how best to use an IBM i Web Development Framework.

We are all about replacing the traditional display files (DSPF) with HTML pages. The Chameleon Framework is a freeware and is available under the standard MIT license, and was built on IBM i for IBM i developers. It provides a comprehensive development environment where RPGLe professionals will be able to create browser apps in matter of minutes.

If you are interested in browser development on IBM I using RPGLe or CPPLe, click on that subscribe button and leave your suggestions in the comments.

* FREE * – Framework to Create Browser Apps on IBM i
Chameleon Web Development Framework for IBM i
http://www.hexache.com/

About
Two Guys, Mike Augel and Joseph Park with top level credentials and decades of IBM i experiences. Mike has global expertise in providing business solutions and Joseph brings forth an in-depth development expertise from the lowest bowels of the IBM i to various modern languages on multiple platforms.

IBM i Modernization, i Series Web Development, AS400 Transformation, RPG Development, IBM I Web Innovation, Web Framework Advancement, AS400 Rejuvenation, IBM I Revolution, I Series Renovation, RPGLe Renewal, DSPF Makeover

Contact
Michael Augel [email protected]
Joseph Park [email protected]

IBM-provided Repositories ODBC Linux Driver Repositories

Today, we’re pushing out something that I’ve been wanting for a long time. We
now have RPM and DEB repositories for Linux available directly from IBM for the
IBM i Access Client Solutions application package, which includes the IBM i
Access ODBC driver. This also includes the latest version of the IBM i Access
ODBC driver, which was released today.

While we have been pushing the IBM i Access ODBC driver as the “One True Way” to
access the database from open source for some time, the biggest hindrance has
been getting it installed. Previously, it was only available from the byzantine
labyrinth that is IBM ESS or from the MRS download site (conventiently
bookmarkable to https://ibm.biz/ibmi-odbc-download). Both of these require
manual steps to log in, agree to the license, download the zip, then extract the
zip and install the package. But Linux distributions have these fancy things
called package managers that can point to remote repositories of packages and
easily extend the distribution’s package list with third-party software. Heck,
even Microsoft provides Linux repositories nowadays, so it’s high time that
IBM does similarly.

With this change, it will be much easier for end users to install the driver on
Linux. It also makes it easier for automation to install the driver as well,
whether that’s Ansible system deployment scripts or Dockerfiles for building
ODBC-based Linux container apps. In addition, it makes updating the driver much
easier too, since the process uses the same upgrade procedure as the rest of the
system packages.

Installing the Repository

The repositories are located under
https://public.dhe.ibm.com/software/ibmi/products/odbc/.

Red Hat-based Distribution Setup

curl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/yum.repos.d/ibmi-acs.repo

SUSE-based Distribution Setup

curl https://public.dhe.ibm.com/software/ibmi/products/odbc/rpms/ibmi-acs.repo | sudo tee /etc/zypp/repos.d/ibmi-acs.repo

Debian-based and Ubuntu-based Distribution Setup

curl https://public.dhe.ibm.com/software/ibmi/products/odbc/debs/dists/1.1.0/ibmi-acs-1.1.0.list | sudo tee /etc/apt/sources.list.d/ibmi-acs-1.1.0.list

Installing the ODBC driver

Red Hat-based Distribution Installation

sudo dnf install –refresh ibm-iaccess

SUSE-based Distribution Installation

sudo zypper refresh
sudo zypper install ibm-iaccess

Debian-based and Ubuntu-based Distribution Installation

sudo apt update
sudo apt install ibm-iaccess

Sequel | Getting the Most from Variables in Sequel

If you’re interested in learning more and would like to demo Sequel Data Access, click here: https://www.helpsystems.com/products/enterprise-data-access-software-ibm-i/demo

Do you have multiple, nearly identical queries that differ only in selection criteria like region, department, and date range? If this is the case, runtime prompts are for you. Runtime prompts help you stay organized by allowing different users and departments to run the same views, but return unique, tailored results.

One way to improve those runtime prompts is with variables. By using variables, you can narrow your scope when pulling data and be as specific as you want to be.

During this webinar, our product expert will share how variables add flexibility to your views, reports, tables and scripts to prompt for criteria at runtime. Beyond creating variables, we will cover:

-Using a default value both as a constant and as an expression
-Adding a filter to a drop-down list
-Demystifying the use of quotes and ampersands with variables

HelpSystems strives to develop powerful business intelligence tools for your organization. The more you know about the finer details, the better set up for success you and your business users will be.

Watch now!

IBMi (AS400) fans only – How to send a spool file per Email as TXT attachment




This CLP sends a SpoolFile per Email as TXT attachment and need 4 parameters:
&SPOOLF Spool file name
&SUBJCT Subject
&BODY00 body
&MAIL01 Email

(Pay attention at the “Send Email” note at the bottom)

Compile this CLP source with:
CRTCLPGM PGM(myLib/SNDSPLF) SRCFILE(myLib/mySourceFile) SRCMBR(SNDSPLF)


SNDSPLF.CLP
 
 
 
             PGM        PARM(&SPOOLF &SUBJCT &BODY00 &MAIL01)
/*****************************************************************************/
/* Send a SpoolFile per Email as TXT attachment                              */
/* &SPOOLF Spool file name                                                   */
/* &SUBJCT Subject                                                           */
/* &BODY00 body                                                              */
/* &MAIL01 Email                                                             */
/* Try with:                                                                 */
/* CALL PGM(SNDSPLF) PARM((‘MySpoolfileName’) (‘MySubject’) (‘MyBody’) +     */
/*       (‘MyEmailAddress’))                                                 */
/*****************************************************************************/
             DCL        VAR(&SPOOLF) TYPE(*CHAR)  LEN(10)
             DCL        VAR(&SUBJCT) TYPE(*CHAR) LEN(048)
             DCL        VAR(&BODY00) TYPE(*CHAR) LEN(048)
             DCL        VAR(&MAIL01) TYPE(*CHAR) LEN(020)

             DCL        VAR(&JOBNUM) TYPE(*CHAR) LEN(   6)
             DCL        VAR(&JOBUSR) TYPE(*CHAR) LEN(  10)
             DCL        VAR(&JOBNAM) TYPE(*CHAR) LEN(  10)
             DCL        VAR(&USER  ) TYPE(*CHAR) LEN(010)
             DCL        VAR(&SDIR  ) TYPE(*CHAR) LEN(100)
/*****************************************************************************/
/* START                                                                     */
/*****************************************************************************/
             RTVJOBA    JOB(&JOBNAM) USER(&JOBUSR) NBR(&JOBNUM)
             CHGVAR     VAR(&SUBJCT) VALUE(%TRIM(&SUBJCT))
             CHGVAR     VAR(&BODY00) VALUE(%TRIM(&BODY00))
             CHGVAR     VAR(&MAIL01) VALUE(%TRIM(&MAIL01))
/*————————————————————–*/
/* if already exist, delete workfile SNDSPLTXT                  */
/*————————————————————–*/
             DLTF       FILE(QTEMP/SNDSPLTXT)
             MONMSG     MSGID(CPF0000)
/*————————————————————–*/
/* create workfile SNDSPLTXT 198 columns                        */
/*————————————————————–*/
             CRTPF      FILE(QTEMP/SNDSPLTXT) RCDLEN(198)
/*————————————————————–*/
/* Copy the spoolfile into workfile SNDSPLTXT                   */
/*————————————————————–*/
             CPYSPLF    FILE(&SPOOLF) TOFILE(QTEMP/SNDSPLTXT) JOB(&JOBNUM/&JOBUSR/&JOBNAM) +
                          SPLNBR(*LAST)
/*————————————————————–*/
/* build path &SDIR                                             */
/* Path looks like this:                                        */
/* /SNDSPLF/(username)                                          */
/* If not exist, the path will be created                       */
/*————————————————————–*/
             CRTDIR     DIR(‘/SNDSPLF’)
             MONMSG     MSGID(CPF0000)
             RTVUSRPRF  RTNUSRPRF(&USER)
             CHGVAR     VAR(&SDIR) VALUE(‘/SNDSPLF/’ *CAT &USER)
             CRTDIR     DIR(&SDIR)
             MONMSG     MSGID(CPF0000)
             CHGVAR     VAR(&SDIR) VALUE(‘/SNDSPLF/’ *CAT %TRIM(&USER) *CAT ‘/SNDSPLTXT.TXT’)
             RMVLNK     OBJLNK(&SDIR)
             MONMSG     MSGID(CPF0000)
/*————————————————————–*/
/* Copy spoolfile into IFS                                      */
/*————————————————————–*/
             CPYSPLF    FILE(&SPOOLF) TOFILE(*TOSTMF) JOB(&JOBNUM/&JOBUSR/&JOBNAM) +
                          SPLNBR(*LAST) TOSTMF(&SDIR)
/*————————————————————–*/
/* Send Email                                                   */
/*————————————————————–*/
/* Sorry, I have no permission on PUB400 to use SNDSMTPEMM, but the following */
/* must be the righ sintax. Contact me if not.                                */
         /*  SNDSMTPEMM RCP((&MAIL01)) SUBJECT(&SUBJCT) NOTE(&BODY00) ATTACH((%TRIM(&SDIR) +
                          *PLAIN *TXT)) CONTENT(*HTML)    */
/*————————————————————–*/
/* Clear IFS                                                    */
/*————————————————————–*/
             RMVLNK     OBJLNK(&SDIR)
             MONMSG     MSGID(CPF0000)

             ENDPGM   
https://www.linkedin.com/in/aldosucci/
Verified by MonsterInsights