Network Job Entry (NJE) is a protocol for transmitting jobs, SYSOUT data sets, operator commands and messages, and job accounting information from one computing system to another.
IBM has provided implementations of this protocol on all its mainframe systems: RSCS for z/VM, JES2 and JES3 for z/OS, and POWER for z/VSE. There’s also an implementation for iSeries OS. NJE is supported as an application over different transports, including native BSC and CTC communications, SNA networks and TCP/IP (VM, VSE, and JES2 at z/OS 1.7 only).
Although a relatively “old” protocol, there are several significant reasons to extend the facilities provided by NJE outside the mainframe and down to the distributed systems:
- Clean bi-directional integration of programmable workstations with mainframe data transfer
- Leverage Linux-based development tooling and skills in tandem with mainframe services (the right tool for the right job)
- Move data between IBM and non- IBM environments without complex automation requirements
- Eliminate SNA as a requirement to run NJE (required for pre-1.7 z/OS systems).
This article provides examples of several different scenarios for using NJE in a distributed environment, including:
- Unattended file transfer: Being able to deliver files without having to write elaborate scripts controlling File Transfer Protocol (FTP)
- Development workstation: Coding programs and jobs using the Integrated Development Environment (IDE) of choice, submitting the jobs, and receiving the job output
- Automated delivery of job output to people, programs and devices
- Remote job execution on the distributed system from jobs submitted from “classic” mainframe systems.
An Introduction to NJE
NJE is primarily an application facilitating the transfer of commands, messages, programs, and jobs among different computing systems in a network. The NJE Formats and Protocols manual (SC23-0070-03) describes NJE as follows: An NJE network is a group of two or more complexes or systems that communicate with each other. An NJE network is comprised of nodes that can transmit or receive a unit of work. The nodes in an NJE network use protocols to communicate with each other. Protocols are rules a node uses to:
- Become part of an NJE network
- Receive a unit of work
- Send a unit of work
- Indicate it was removed from the network.
NJE is an extension of Remote Job Entry (RJE), which was also developed by IBM. Before the widespread use of the Internet, NJE networks such as BITNET formed the basis of the largest collection of computers yet known. During its lifetime, NJE has accrued a heritage of tools, infrastructure, and procedures that still have merit in today’s environment.
Let’s now consider how the NJE facility can be used to establish communications, controls, and remote execution facilities between nodes running on the classic mainframe operating systems and those on the distributed platforms. Throughout this article the examples reference one of the available implementations of NJE on distributed systems.
Automated File Transfer
Automated file transfer between systems using FTP scripts is tedious and error-prone. When it works, it’s fine, but as soon as something breaks, everything crashes with no simple method for detecting the problem and recovering appropriately. Commands such as FTP were designed for interactive transfers and require things such as retry and recovery to be bolted on.