IBM Support

Do you have a space allocation problem when copying a SMS compressed dataset?

Technical Blog Post


Abstract

Do you have a space allocation problem when copying a SMS compressed dataset?

Body

Have you ever had a process that was copying a compressed file to another node and had problems because you could not allocate enough space for it on the SNODE?

 

More than like the source compressed file is a SMS compressed file. You are expecting it to be compressed on the SNODE but unless the SMS rules on the destination are set for the file to be written it will not get compressed. SMS will use the default rules for datasets that do not specify a DATACLASS. And compressing a dataset is not part of the default rules.  

 

Regardless of what you do the SMS compressed file will be decompressed when it is read. It is then transmitted to the SNODE and written to the output file. Unless there is a SMS rule, a DATACLASS, the file will not be compressed when it is written out on the remote node.

 

There are several ways to handle this:

 

1. Ensure that there is a SMS rule on the destination node (SNODE) that specifically declares the attributes of the output file exactly the same as the attributes of the source file on the PNODE.

 

2. Code DATACLAS on the TO portion of the COPY command to specify the SMS rules that should apply to this file being written out. The definition in this rule on the destination node should match the definition of the same rule on the source node.

 

SMSTEST1 PROC SNODE=YOUR.OTHER.NODE

STEP01 COPY FROM(PNODE                      -

                 DSN=HLQ.SMSTEST.DS         -

                 DISP=SHR )                 -

            TO  (SNODE                      -

                 DSN=HLQ.SMSTEST.TODS SNODE -

                 UNIT=SYSDA                 -

                 DATACLAS=SMSCOMPR          -

                 DISP=(RPL))

 

3. You can propagate the SMS class from the source node to the destination node by coding the class parameters on the TO portion of the COPY command with a value of $$$$$$$$.

 

SMSTEST1 PROC SNODE=YOUR.OTHER.NODE

STEP01 COPY FROM(PNODE                      -

                 DSN=HLQ.SMSTEST.DS         -

                 DISP=SHR )                 -

            TO  (SNODE                      -

                 DSN=HLQ.SMSTEST.TODS SNODE –

                 UNIT=SYSDA                 -

                 STORCLAS=$$$$$$$$          -

                 MGMTCLAS=$$$$$$$$          -

                 DATACLAS=$$$$$$$$          -

                 DISP=(RPL))

 

In this case you will need to have the same class name on the destination node as you have on the source node and it needs to specify the exact same attributes as on the source node.

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SS4PJT","label":"IBM Sterling Connect:Direct"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

UID

ibm11124181