---
title: "Profound Pro Tips: Simplify Database Access with pjs.query()"
description: Profound Pro Tips is a blog series that is focused on the benefits of UI modernization and modern development approaches. Our latest blog shows you how to simplify Database Access.
image: https://blog.profoundlogic.com/hubfs/13239069_m.jpg
---

[![(877) 224-7768 <>](https://no-cache.hubspot.com/cta/default/1708946/5d9809e1-1922-4e3e-b06b-d359616d29bd.png)](https://cta-redirect.hubspot.com/cta/redirect/1708946/5d9809e1-1922-4e3e-b06b-d359616d29bd)

[![sales@profoundlogic.com <mailto:sales@profoundlogic.com>](https://no-cache.hubspot.com/cta/default/1708946/4fc30eb7-f66d-4552-81e2-49cc209a5ead.png)](https://cta-redirect.hubspot.com/cta/redirect/1708946/4fc30eb7-f66d-4552-81e2-49cc209a5ead)

[![Share on facebook](https://7528309.fs1.hubspotusercontent-na1.net/hub/7528309/hubfs/raw_assets/public/mV0_d-web-default-modules_hubspot/img/facebook-color.png?width=24&name=facebook-color.png)](https://www.facebook.com/share.php?u=https%3A%2F%2Fblog.profoundlogic.com%2Fprofound-pro-tips-vertically-center-html-container-in-grid-0%3Futm_medium%3Dsocial%26utm_source%3Dfacebook) [![Share on twitter](https://7528304.fs1.hubspotusercontent-na1.net/hub/7528304/hubfs/raw_assets/public/mV0_d-web-default-modules_hubspot/img/twitter-color.png?width=24&name=twitter-color.png)](https://twitter.com/intent/tweet?original_referer=https%3A%2F%2Fblog.profoundlogic.com%2Fprofound-pro-tips-vertically-center-html-container-in-grid-0%3Futm_medium%3Dsocial%26utm_source%3Dtwitter&url=https%3A%2F%2Fblog.profoundlogic.com%2Fprofound-pro-tips-vertically-center-html-container-in-grid-0%3Futm_medium%3Dsocial%26utm_source%3Dtwitter&source=tweetbutton&text=)

[![Profound Logic](https://blog.profoundlogic.com/hs-fs/hubfs/PLS_Logo.jpg?width=150&height=52&name=PLS_Logo.jpg "Profound Logic")](https://www.profoundlogic.com/)

- AI-Enhanced Products 
    - [Profound AI](https://www.profoundlogic.com/ai/)
    - [Profound UI](https://www.profoundlogic.com/profoundui/)
    - [Profound.js](https://www.profoundlogic.com/profoundjs/)
    - [Profound API](https://www.profoundlogic.com/api/)
- Services 
    - Futurization and Transformation 
          - [Profound 360 Analysis](https://www.profoundlogic.com/services/profound-360-analysis/)
          - [Flexible IBM i Code Transformation](https://www.profoundlogic.com/services/flexible-code-transformation/)
          - [IBM i UX Modernization Service](https://www.profoundlogic.com/services/ibm-i-ux-modernization-service/)
          - [Database Modernization](https://www.profoundlogic.com/services/database-modernization/)
    - Integration & API Development 
          - [System Integration](https://www.profoundlogic.com/services/systems-integration/)
          - [Cloud Migration Services](https://www.profoundlogic.com/services/cloud-migration-services/)
    - [Rapid Application Development](https://www.profoundlogic.com/services/application-development/) 
          - [Application Development](https://www.profoundlogic.com/services/application-development/)
          - [Mobile Application Development](https://www.profoundlogic.com/services/mobile-application-development/)
- [Company](https://www.profoundlogic.com/about-profound-logic/) 
    - [About Us](https://www.profoundlogic.com/about-profound-logic/)
    - [Press Releases](https://www.profoundlogic.com/press-releases/)
    - [Careers](https://www.profoundlogic.com/careers/)
    - [Contact Us](https://www.profoundlogic.com/contact/)
- Resources 
    - [Blog](https://www.profoundlogic.com/blog/)
    - [Case Studies](https://www.profoundlogic.com/case-studies/)
    - [On-Demand Webinars](https://www.profoundlogic.com/webinars/)
    - [White Papers](https://www.profoundlogic.com/white-papers/)
    - [Product Documentation](https://profoundlogicsupport.atlassian.net/wiki/spaces/PUI/overview)
    - [User Forum](https://forum.profoundlogic.com/)
    - [Contact Support](https://profoundlogicsupport.atlassian.net/servicedesk/customer/portal/1)

[![Contact Us](https://no-cache.hubspot.com/cta/default/1708946/interactive-172756632938.png)](https://blog.profoundlogic.com/hs/cta/wi/redirect?encryptedPayload=AVxigLL%2FRSS6xjllNF10ih9qNwzQgaL38NqWH9jPypClgX%2BIDQU%2Bp5LcT5PlpZHlAf1VZRJqXW6de2p0FZaPiR8O5A6rKjUE2%2FkNht5KAZgIWkoBzFmCiaOMr90xk3LlwHmaBsBnuS77KbtB3WiqNvgqc8kLcqEsZAVjXSNgJ2sAgYqbN%2BA2H0GHhFHs&webInteractiveContentId=172756632938&portalId=1708946)

# iModernize - The Profound Logic Software Blog

# Profound Pro Tips: Simplify Database Access with pjs.query()

Posted by [Al Lusher](https://blog.profoundlogic.com/author/al-lusher) on Sep 11, 2018 11:42:15 AM

- [Tweet](https://twitter.com/share)

---

Profound Pro Tips is a blog series focused on issues that our support team receives and questions our **Profound Logic** customers have. Don't see your question/concern in Profound Pro Tips? Please feel free to [**contact our team**](http://www.profoundlogic.com/contact) or leave us a comment below. 

**Today’s Topic: Simplifying Your Database Access with pjs.query()**

Keep reading to learn more....

When Profound.js was first created one of the goals was to enable a direct, nearly one to one, conversion between RPG and Node. To provide this functionality, Profound.js was written with several functions that mimic many of the RPG opcodes. In the area of database access, this includes record level access functions as well as SQL function which correlate to the embedded SQL opcodes in RPG. For example, you can prepare a statement with pjs.prepare(), set parameters for placeholders with pjs.bindParameteres(), execute the statement, pjs.execute(), fetch the results with pjs.fetch() and finally close the cursor using pjs.close(). While this process is very familiar to anyone building a prepared SQL statement in RPG, it is a little cumbersome and requires a lot of lines of code, especially if you’re checking your sqlcode after each statement like you should be.

You can now use pjs.query() to do all of that and more. Pjs.query() is a shortcut API that will prepare, bind, execute, fetch, and close all in a single statement. Pjs.query() can also be used to update or insert data and can be used with primitive JavaScript objects or strongly defined fields. In addition to simplifying the process of database access, pjs.query() can also be used with several other database drivers.

## Prerequisites

The pjs.query() API requires the Profound.js Connector module.

Prior to calling pjs.query() the program needs a connection to a database. If you do not explicitly create a connection using pjs.connect() a connection will automatically made to the default database if possible.

## SQL CLI Attributes

It is possible to set any of the SQL connection attributes. This is accomplished using pjs.setConnectAttr(). A list of the possible DB2 SQL CLI attributes can be found in the IBM  [documentation](https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/cli/rzadpfnsconx.htm#rzadpfnsconx__tbcono).

One possible use of this API is to disable commitment control:

[![pjs.query() - 1](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%201.jpg?width=935&name=pjs.query()%20-%201.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%201.jpg)

## Parameters

The API accepts up to 4 parameters: statement, parameters, number of records to fetch, and strongly typed field names. Only the statement is required. The last two parameters are only valid for connections to IBM DB2.

**SQL statement** - The first parameter, statement, is the SQL statement to run. This statement can be any statement that is valid for the database you are using. In addition, there are a couple special cases that will be described below.

**Parameters** - This can be a single parameter or an array of parameters in a JavaScript object.

**Number of Records** - This parameter is only valid for IBM DB2 and specifies the number of records to fetch and defaults to fetching all records if not used.

**Field Names** - Also only valid for DB2, this parameter allows you to specify one or more strongly defined field names for the data to be fetched into.

## Fetching Data

The simplest use of pjs.query() is to retrieve records into a JavaScript object.

[![pjs.query() - 2](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%202.jpg?width=934&name=pjs.query()%20-%202.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%202.jpg)

This simple command will result in an array something like:

\[{ id: 1, name: “Allen” }, {id:2, name: “Betty”}, {id:3, name: “Carl”}\]

You can then add criteria to your query using parameters.

[![pjs.query() - 3](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%203.jpg?width=929&name=pjs.query()%20-%203.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%203.jpg)

Multiple parameters can be specified as an array.

 [![pjs.query() - 4](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%204.jpg?width=929&name=pjs.query()%20-%204.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%204.jpg)

## Fetching Data into a Grid

Returning data from a query into a JavaScript object array is very convenient and does not require you to strongly define the fields ahead of time. The array can then easily be used to access the data. Some of the other pjs API are designed specifically to accept JavaScript object arrays. One API in particular, the replaceRecords() API, when used with the pjs.query() API makes it very easy to reload a Grid widget with data from an SQL query. Because pjs.query() returns a JavaScript array and replaceRecords() accepts a JavaScript array as a parameter you can simply pass the result from the query directly into replaceRecords() to reload the Grid.

[![pjs.query() - 5](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%205.jpg?width=930&name=pjs.query()%20-%205.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%205.jpg)

In fact you can actually pass pjs.query() directly into replaceRecords() if you really want to save space.

[![pjs.query() - 6](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%206.jpg?width=930&name=pjs.query()%20-%206.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%206.jpg)

## Using Strongly Defined Fields

The last two parameters, number of records and strongly defined field names, are unique to IBM i DB2.

The number of records defines how many records you want to fetch. One important note about specifying the number of records to return is that if you specify 1 record be returned the result will be a single JavaScript object instead of an array. When you use only the first or first two parameters the result is always an array of object even if that array only contains 1 object. This is an important distinction because with a single object you will refer to the data with data.id or data.name. With an array with only one object in it you would use data\[0\].id and data\[0\].name.

The fourth parameter lets you specify strongly defined fields to return the data into. This is useful when you need to fetch the data into a defined data structure or anytime you need the data for APIs that require strongly typed fields.

[![pjs.query() - 7](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%207.jpg?width=931&name=pjs.query()%20-%207.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%207.jpg)

## Updating Data

Updating a record or records is also very concise using pjs.query(). The data to be updated needs to be supplied in a JavaScript object as the first element in the parameters array followed by any additional parameters. The statements below create a JavaScript object containing name and color called data. The data object is then passed in as the first object in the parameters array and the name and color fields for the record with id of 3 are updated with the values of newName and newColor.

[![pjs.query() - 8-1](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%208-1.jpg?width=931&name=pjs.query()%20-%208-1.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%208-1.jpg)

[![pjs.query() - 9](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%209.jpg?width=930&name=pjs.query()%20-%209.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%209.jpg)

The data object can also be specified directly in the pjs.query() call instead of defining it ahead of time.

[![pjs.query() - 10](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%2010.jpg?width=932&name=pjs.query()%20-%2010.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%2010.jpg)

## Inserting Records

Similar to updating, inserting records uses a special statement: INSERT INTO tablename SET ? followed by a JavaScript object containing the field names and values to insert. Just like with the update the object can be constructed ahead of time and passed in or created on the fly inside of pjs.query().

[![pjs.query() - 11](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%2011.jpg?width=929&name=pjs.query()%20-%2011.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%2011.jpg)

Or...

[![pjs.query() - 12](https://blog.profoundlogic.com/hs-fs/hubfs/pjs.query()%20-%2012.jpg?width=934&name=pjs.query()%20-%2012.jpg)](https://blog.profoundlogic.com/hubfs/pjs.query()%20-%2012.jpg)

As these examples show, pjs.query() is a very convenient tool for simplifying data access in Profound.js. By utilizing pjs.query() you can cut several lines of code and spend more time focusing on the business logic.

Learn how to [**Deliver Modern IBM i Business Applications **](https://info.profoundlogic.com/pui6-wod)[**with Profound UI Version 6**](https://info.profoundlogic.com/pui6-wod)! Watch the replay of this webinar hosted by **Scott Klement **Today!

---

 

 Topics: [RPG Development](https://blog.profoundlogic.com/topic/rpg-development), [Application modernization](https://blog.profoundlogic.com/topic/application-modernization), [IBM i applications](https://blog.profoundlogic.com/topic/ibm-i-applications), [Node.js](https://blog.profoundlogic.com/topic/node-js), [Profound.js](https://blog.profoundlogic.com/topic/profound-js), [IBM i](https://blog.profoundlogic.com/topic/ibm-i), [RPG](https://blog.profoundlogic.com/topic/rpg), [AS400 modernization](https://blog.profoundlogic.com/topic/as400-modernization), [IBM i Modernization](https://blog.profoundlogic.com/topic/ibm-i-modernization), [Agile modernization](https://blog.profoundlogic.com/topic/agile-modernization), [iSeries](https://blog.profoundlogic.com/topic/iseries), [Legacy Modernization](https://blog.profoundlogic.com/topic/legacy-modernization), [Profound UI](https://blog.profoundlogic.com/topic/profound-ui), [AS 400](https://blog.profoundlogic.com/topic/as-400), [AS\_400](https://blog.profoundlogic.com/topic/as_400), [Profound Logic](https://blog.profoundlogic.com/topic/profound-logic)

Search Blog

### Subscribe to Blog Updates

**...and get The 2017 State of IBM i Modernization White Paper FREE!**

[![cover page.png](https://blog.profoundlogic.com/hs-fs/hubfs/cover%20page.png?width=2268&name=cover%20page.png "cover page.png")](https://info.profoundlogic.com/2017-state-ibm-i-modernization-download)

### Recent Posts

### Posts by Topic

- [Events & Education (203)](https://blog.profoundlogic.com/topic/events-education)
- [Application modernization (173)](https://blog.profoundlogic.com/topic/application-modernization)
- [IBM i Modernization (169)](https://blog.profoundlogic.com/topic/ibm-i-modernization)
- [IBM i applications (169)](https://blog.profoundlogic.com/topic/ibm-i-applications)
- [Profound.js (165)](https://blog.profoundlogic.com/topic/profound-js)
- [Node.js (164)](https://blog.profoundlogic.com/topic/node-js)
- [Agile modernization (162)](https://blog.profoundlogic.com/topic/agile-modernization)
- [IBM i (161)](https://blog.profoundlogic.com/topic/ibm-i)
- [RPG (158)](https://blog.profoundlogic.com/topic/rpg)
- [AS400 modernization (157)](https://blog.profoundlogic.com/topic/as400-modernization)
- [iSeries (149)](https://blog.profoundlogic.com/topic/iseries)
- [Legacy Modernization (141)](https://blog.profoundlogic.com/topic/legacy-modernization)
- [RPG Development (85)](https://blog.profoundlogic.com/topic/rpg-development)
- [AS 400 (58)](https://blog.profoundlogic.com/topic/as-400)
- [Profound UI (54)](https://blog.profoundlogic.com/topic/profound-ui)
- [Profound Logic (50)](https://blog.profoundlogic.com/topic/profound-logic)
- [AS\_400 (49)](https://blog.profoundlogic.com/topic/as_400)
- [New Features (28)](https://blog.profoundlogic.com/topic/new-features)
- [Tips and Tricks (26)](https://blog.profoundlogic.com/topic/tips-and-tricks)
- [Development (20)](https://blog.profoundlogic.com/topic/development)
- [green screen modernization (15)](https://blog.profoundlogic.com/topic/green-screen-modernization)
- [Mobile Development (14)](https://blog.profoundlogic.com/topic/mobile-development-2)
- [5250 (12)](https://blog.profoundlogic.com/topic/5250)
- [IBM Watson (10)](https://blog.profoundlogic.com/topic/ibm-watson)
- [Press Release (9)](https://blog.profoundlogic.com/topic/press-release)
- [Product Announcement (9)](https://blog.profoundlogic.com/topic/product-announcement)
- [Scott Klement Health (7)](https://blog.profoundlogic.com/topic/scott-klement-health)
- [Partnerships (6)](https://blog.profoundlogic.com/topic/partnerships)
- [PLUS 2018 (5)](https://blog.profoundlogic.com/topic/plus-2018)
- [Prime UI (5)](https://blog.profoundlogic.com/topic/prime-ui)
- [Case Study (4)](https://blog.profoundlogic.com/topic/case-study)
- [Enterprise Modernization (3)](https://blog.profoundlogic.com/topic/enterprise-modernization)
- [Year in review (3)](https://blog.profoundlogic.com/topic/year-in-review)
- [PLUS 2019 (2)](https://blog.profoundlogic.com/topic/plus-2019)
- [mobile applications (2)](https://blog.profoundlogic.com/topic/mobile-applications)
- [mobile mondernization (2)](https://blog.profoundlogic.com/topic/mobile-mondernization)
- [2016 Survey (1)](https://blog.profoundlogic.com/topic/2016-survey)
- [2019 Survey (1)](https://blog.profoundlogic.com/topic/2019-survey)
- [Conversion Service (1)](https://blog.profoundlogic.com/topic/conversion-service)
- [Model 3 (1)](https://blog.profoundlogic.com/topic/model-3)
- [Tesla (1)](https://blog.profoundlogic.com/topic/tesla)
- [connectria (1)](https://blog.profoundlogic.com/topic/connectria)
- [node (1)](https://blog.profoundlogic.com/topic/node)

see all

### Archive

- [September 2014 (17)](https://blog.profoundlogic.com/archive/2014/09)
- [March 2017 (14)](https://blog.profoundlogic.com/archive/2017/03)
- [May 2017 (10)](https://blog.profoundlogic.com/archive/2017/05)
- [April 2019 (10)](https://blog.profoundlogic.com/archive/2019/04)
- [May 2019 (10)](https://blog.profoundlogic.com/archive/2019/05)
- [February 2013 (9)](https://blog.profoundlogic.com/archive/2013/02)
- [June 2017 (9)](https://blog.profoundlogic.com/archive/2017/06)
- [August 2017 (9)](https://blog.profoundlogic.com/archive/2017/08)
- [September 2017 (9)](https://blog.profoundlogic.com/archive/2017/09)
- [October 2017 (9)](https://blog.profoundlogic.com/archive/2017/10)
- [July 2017 (8)](https://blog.profoundlogic.com/archive/2017/07)
- [June 2018 (8)](https://blog.profoundlogic.com/archive/2018/06)
- [January 2019 (8)](https://blog.profoundlogic.com/archive/2019/01)
- [March 2019 (8)](https://blog.profoundlogic.com/archive/2019/03)
- [June 2019 (8)](https://blog.profoundlogic.com/archive/2019/06)
- [August 2014 (7)](https://blog.profoundlogic.com/archive/2014/08)
- [August 2015 (7)](https://blog.profoundlogic.com/archive/2015/08)
- [December 2017 (7)](https://blog.profoundlogic.com/archive/2017/12)
- [January 2018 (7)](https://blog.profoundlogic.com/archive/2018/01)
- [July 2018 (7)](https://blog.profoundlogic.com/archive/2018/07)
- [August 2018 (7)](https://blog.profoundlogic.com/archive/2018/08)
- [October 2018 (7)](https://blog.profoundlogic.com/archive/2018/10)
- [June 2014 (6)](https://blog.profoundlogic.com/archive/2014/06)
- [October 2014 (6)](https://blog.profoundlogic.com/archive/2014/10)
- [September 2015 (6)](https://blog.profoundlogic.com/archive/2015/09)
- [April 2017 (6)](https://blog.profoundlogic.com/archive/2017/04)
- [November 2017 (6)](https://blog.profoundlogic.com/archive/2017/11)
- [March 2018 (6)](https://blog.profoundlogic.com/archive/2018/03)
- [November 2018 (6)](https://blog.profoundlogic.com/archive/2018/11)
- [December 2018 (6)](https://blog.profoundlogic.com/archive/2018/12)
- [February 2019 (6)](https://blog.profoundlogic.com/archive/2019/02)
- [January 2014 (5)](https://blog.profoundlogic.com/archive/2014/01)
- [April 2014 (5)](https://blog.profoundlogic.com/archive/2014/04)
- [October 2015 (5)](https://blog.profoundlogic.com/archive/2015/10)
- [February 2018 (5)](https://blog.profoundlogic.com/archive/2018/02)
- [April 2018 (5)](https://blog.profoundlogic.com/archive/2018/04)
- [July 2020 (5)](https://blog.profoundlogic.com/archive/2020/07)
- [January 2013 (4)](https://blog.profoundlogic.com/archive/2013/01)
- [March 2013 (4)](https://blog.profoundlogic.com/archive/2013/03)
- [April 2013 (4)](https://blog.profoundlogic.com/archive/2013/04)
- [July 2014 (4)](https://blog.profoundlogic.com/archive/2014/07)
- [May 2018 (4)](https://blog.profoundlogic.com/archive/2018/05)
- [September 2018 (4)](https://blog.profoundlogic.com/archive/2018/09)
- [July 2019 (4)](https://blog.profoundlogic.com/archive/2019/07)
- [September 2013 (3)](https://blog.profoundlogic.com/archive/2013/09)
- [March 2014 (3)](https://blog.profoundlogic.com/archive/2014/03)
- [July 2015 (3)](https://blog.profoundlogic.com/archive/2015/07)
- [November 2015 (3)](https://blog.profoundlogic.com/archive/2015/11)
- [January 2016 (3)](https://blog.profoundlogic.com/archive/2016/01)
- [March 2016 (3)](https://blog.profoundlogic.com/archive/2016/03)
- [April 2016 (3)](https://blog.profoundlogic.com/archive/2016/04)
- [September 2016 (3)](https://blog.profoundlogic.com/archive/2016/09)
- [October 2019 (3)](https://blog.profoundlogic.com/archive/2019/10)
- [June 2020 (3)](https://blog.profoundlogic.com/archive/2020/06)
- [August 2020 (3)](https://blog.profoundlogic.com/archive/2020/08)
- [November 2013 (2)](https://blog.profoundlogic.com/archive/2013/11)
- [February 2014 (2)](https://blog.profoundlogic.com/archive/2014/02)
- [May 2014 (2)](https://blog.profoundlogic.com/archive/2014/05)
- [November 2014 (2)](https://blog.profoundlogic.com/archive/2014/11)
- [January 2015 (2)](https://blog.profoundlogic.com/archive/2015/01)
- [April 2015 (2)](https://blog.profoundlogic.com/archive/2015/04)
- [February 2016 (2)](https://blog.profoundlogic.com/archive/2016/02)
- [June 2016 (2)](https://blog.profoundlogic.com/archive/2016/06)
- [July 2016 (2)](https://blog.profoundlogic.com/archive/2016/07)
- [October 2016 (2)](https://blog.profoundlogic.com/archive/2016/10)
- [December 2016 (2)](https://blog.profoundlogic.com/archive/2016/12)
- [February 2017 (2)](https://blog.profoundlogic.com/archive/2017/02)
- [March 2020 (2)](https://blog.profoundlogic.com/archive/2020/03)
- [April 2020 (2)](https://blog.profoundlogic.com/archive/2020/04)
- [May 2020 (2)](https://blog.profoundlogic.com/archive/2020/05)
- [September 2020 (2)](https://blog.profoundlogic.com/archive/2020/09)
- [October 2020 (2)](https://blog.profoundlogic.com/archive/2020/10)
- [January 2021 (2)](https://blog.profoundlogic.com/archive/2021/01)
- [November 2012 (1)](https://blog.profoundlogic.com/archive/2012/11)
- [December 2012 (1)](https://blog.profoundlogic.com/archive/2012/12)
- [May 2013 (1)](https://blog.profoundlogic.com/archive/2013/05)
- [June 2013 (1)](https://blog.profoundlogic.com/archive/2013/06)
- [July 2013 (1)](https://blog.profoundlogic.com/archive/2013/07)
- [August 2013 (1)](https://blog.profoundlogic.com/archive/2013/08)
- [October 2013 (1)](https://blog.profoundlogic.com/archive/2013/10)
- [December 2013 (1)](https://blog.profoundlogic.com/archive/2013/12)
- [December 2014 (1)](https://blog.profoundlogic.com/archive/2014/12)
- [March 2015 (1)](https://blog.profoundlogic.com/archive/2015/03)
- [May 2015 (1)](https://blog.profoundlogic.com/archive/2015/05)
- [May 2016 (1)](https://blog.profoundlogic.com/archive/2016/05)
- [November 2016 (1)](https://blog.profoundlogic.com/archive/2016/11)
- [January 2017 (1)](https://blog.profoundlogic.com/archive/2017/01)
- [August 2019 (1)](https://blog.profoundlogic.com/archive/2019/08)
- [December 2019 (1)](https://blog.profoundlogic.com/archive/2019/12)
- [November 2020 (1)](https://blog.profoundlogic.com/archive/2020/11)
- [December 2020 (1)](https://blog.profoundlogic.com/archive/2020/12)

see all

#### Related Resources

- [\[fa icon="caret-right"\] Benefits of Modernizing Legacy Systems](https://www.profoundlogic.com/benefits-of-modernizing-legacy-systems/)
- [\[fa icon="caret-right"\] Customer Satisfaction and Supply Chains](https://www.profoundlogic.com/customer-satisfaction-and-supply-chains/)
- [\[fa icon="caret-right"\] Why Your Business Must Modernize Its Legacy Applications](https://www.profoundlogic.com/why-your-business-must-modernize-its-legacy-applications/)
- \[fa icon="caret-right"\] Coding in 2021 and Beyond: Is Node.js Dead?

#### Recommended for you

- [\[fa icon="caret-right"\] The Importance of API Security to Protect Sensitive Business Data](https://info.profoundlogic.com/the-importance-of-api-security-to-protect-sensitive-business-data)
- [\[fa icon="caret-right"\] Why API Matters for Enterprise Development](https://info.profoundlogic.com/why-api-matters-for-business-development-whitepaper)
- [\[fa icon="caret-right"\] The Cost of Technical Debt to Business on IBM i](https://info.profoundlogic.com/technical-debt)
- [\[fa icon="caret-right"\] Node.js for Enterprise IBM i Modernization](https://info.profoundlogic.com/node)

#### Watch now on demand

- [\[fa icon="caret-right"\] What is Code Transformation?](https://info.profoundlogic.com/code-transformation-stage-one)
- [\[fa icon="caret-right"\] Transform IBM i/AS400 Now](https://www.profoundlogic.com/transform-ibm-i-as400-now/)
- [\[fa icon="caret-right"\] Profound API, Low-Code and Product Updates Announced at PLUS 2020](https://info.profoundlogic.com/plus2020)
- [\[fa icon="caret-right"\] IBM i Transformation Risks Every Business Leader Should Know](https://info.profoundlogic.com/transformation-risks-wod)

#### Company

- [\[fa icon="caret-right"\] About Us](https://www.profoundlogic.com/about-profound-logic/)
- [\[fa icon="caret-right"\] Press Releases](https://www.profoundlogic.com/press-releases/)
- [\[fa icon="caret-right"\] Events and Webinars](https://www.profoundlogic.com/events/)
- [\[fa icon="caret-right"\] Careers](https://www.profoundlogic.com/careers/)
- [\[fa icon="caret-right"\] Partnerships](https://www.profoundlogic.com/partnerships/)
- [\[fa icon="caret-right"\] Contact Us](https://www.profoundlogic.com/contact/)

[Sign up for our newsletter](https://www.profoundlogic.com/newsletter-signup-profound-logic/) | [Developers](https://docs.profoundlogic.com/) | [Blog](https://www.profoundlogic.com/blog/) | [Privacy](https://www.profoundlogic.com/privacy-policy) | [Contact](https://www.profoundlogic.com/contact/) | [1-877-224-7768](tel:877-224-7768)

 Copyright © 2026 Profound Logic Software | [Sitemap](https://www.profoundlogic.com/sitemap.xml)

\[fa icon="chevron-up"\]

![](https://www.facebook.com/tr?id=237478240316292&ev=PageView&noscript=1)