IBM Support

CICS BMS ROUTING Removes PCL Commands When Transparent Code x'35' Followed by Function x'28' in Datastream

Troubleshooting


Problem

Your application is trying to use the SNA character stream (SCS) Transparent code x'35' to send Printer Control Language (PCL) printer commands in the datastream. Sometimes the PCL commands are printed as if they were part of the data.

Symptom

The application first sets up a BMS ROUTING environment then uses SEND TEXT ACCUM commands to build up the datastream one line at a time. It then does a SEND PAGE AUTOPAGE to route the message to the printer. The send page starts a CSPG BMS PAGING transaction on the printer, which delivers the datastream.

The problem of some of the PCL commands printing only happens when the data originates from CICS. A non-CICS program sending the same datastream works. The application uses the x'35' transparent command so the PCL codes would not be translated.

Most of the nonstandard functions that followed the transparency command had no problem. However, when certain functions are in the datastream, CICS removes them from the data. Specifically, if the function includes a x'28'. The x'28' and the two bytes that follow it are removed from the data stream. This means that three (3) bytes were removed from the data stream.

Cause

BMS does not recognize the x'35' Transparency SCS Control Order or its length byte that says how many bytes afterward to ignore.

Diagnosing The Problem

During processing of the output datastream DFHTOM will detect the X'28'. The code interprets the x'28' as a set attribute (SA) 3270 Buffer Control Order. If the following two bytes are not valid for a set attribute order then all 3 bytes X'28xxxx' will be removed from the output datastream.

BMS does not recognize the x'35' Transparency SCS Control Order or its length byte that says how many bytes afterward to ignore.

Resolving The Problem

You should not use the ACCUM option in a BMS ROUTING environment. Instead, build the whole datastream in a buffer. Then use the SEND TEXT NOEDIT command to send the entire datastream. The SEND TEXT NOEDIT command will send its information to the routing environment which will forward it to the printer.

If writing in COBOL, you can use the STRING verb to build the page in the buffer. This will return a pointer to the next address to be filled.

[{"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Component":"BMS","Platform":[{"code":"PF035","label":"z\/OS"},{"code":"PF038","label":"z\/VSE"}],"Version":"5.1;4.2;4.1;3.2;3.1;1.1.1","Edition":"","Line of Business":{"code":"LOB70","label":"Z TPS"}}]

Product Synonym

CICS/VSE CICS VSE CICS/TS CICS TS CICS Transaction Server

Document Information

Modified date:
24 August 2026

UID

swg21081334