Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] [zos_job_submit] 'utf-8' codec can't decode byte 0xdd error on zos_job_submit module #677

Closed
GerMFHub opened this issue Mar 20, 2023 · 23 comments · Fixed by #1261
Closed
Assignees
Labels
Bug Something isn't working as designed. In Plan Issue has been accepted put into a planned release

Comments

@GerMFHub
Copy link

GerMFHub commented Mar 20, 2023

[product_dir@amsdevocicgs01 submit_query_retrieve]$ ansible-playbook -i inventories provision_cics_region.yml --ask-pass -vvv
ansible-playbook 2.9.7
config file = /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/ansible.cfg
configured module search path = ['/home2/product_dir/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.6/site-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 3.6.8 (default, Dec 5 2019, 15:45:45) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)]
Using /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/ansible.cfg as config file
SSH password:
host_list declined parsing /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/inventories/inventory.yml as it did not pass its verify_file() method
script declined parsing /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/inventories/inventory.yml as it did not pass its verify_file() method
Parsed /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/inventories/inventory.yml inventory source with yaml plugin

PLAYBOOK: provision_cics_region.yml *************************************************************************************************************************************************************************
1 plays in provision_cics_region.yml

PLAY [zos_host] *********************************************************************************************************************************************************************************************
META: ran handlers

TASK [Create JCL template from j2 files in /u/userid/tmp] ***************************************************************************************************************************************************
task path: /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/provision_cics_region.yml:48
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'echo ~userid && sleep 0'"'"''
<localmf.com.COM> (0, b'/u/userid\n', b'')
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'( umask 77 && mkdir -p "echo /u/userid/.ansible/tmp"&& mkdir /u/userid/.ansible/tmp/ansible-tmp-1679305174.1329653-3411103-77108235533620 && echo ansible-tmp-1679305174.1329653-3411103-77108235533620="echo /u/userid/.ansible/tmp/ansible-tmp-1679305174.1329653-3411103-77108235533620" ) && sleep 0'"'"''
<localmf.com.COM> (0, b'ansible-tmp-1679305174.1329653-3411103-77108235533620=/u/userid/.ansible/tmp/ansible-tmp-1679305174.1329653-3411103-77108235533620\n', b'')
Using module file /usr/lib/python3.6/site-packages/ansible/modules/files/stat.py
Pipelining is enabled.
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'_BPXK_AUTOCVT=ON ZOAU_HOME=/rsusr/idz/zoautil LIBPATH=/rsusr/idz/zoautil/lib:/rsusr/pyz/3.10.7/lib:/lib:/usr/lib:. PATH=/rsusr/idz/zoautil/bin:/rsusr/pyz/3.10.7/bin:/bin:/var/bin _CEE_RUNOPTS='"'"'"'"'"'"'"'"'FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'"'"'"'"'"'"'"'"' _TAG_REDIR_ERR=txt _TAG_REDIR_IN=txt _TAG_REDIR_OUT=txt LANG=C iflevel=IF3 cicsname=CICD61AN cics_version=TS55 /rsusr/pyz/3.10.7/bin/python3.10 && sleep 0'"'"''
<localmf.com.COM> (0, b'\n{"changed": false, "stat": {"exists": true, "path": "/u/userid/tmp/CICS55.jcl.bin", "mode": "0600", "isdir": false, "ischr": false, "isblk": false, "isreg": true, "isfifo": false, "islnk": false, "issock": false, "uid": 3111, "gid": 200, "size": 15658, "inode": 7433, "dev": 1008, "nlink": 1, "atime": 1679304237.0, "mtime": 1679299799.0, "ctime": 1679299801.0, "wusr": true, "rusr": true, "xusr": false, "wgrp": false, "rgrp": false, "xgrp": false, "woth": false, "roth": false, "xoth": false, "isuid": false, "isgid": false, "blocks": 8, "block_size": 1024, "device_type": 0, "readable": true, "writeable": true, "executable": false, "pw_name": "userid", "gr_name": "PDUSER", "checksum": "a56dd299a0c6d869a016ab7273e861351bf31699", "mimetype": "unknown", "charset": "unknown", "version": null, "attributes": [], "attr_flags": ""}, "invocation": {"module_args": {"path": "/u/userid/tmp/CICS55.jcl.bin", "follow": false, "get_checksum": true, "checksum_algorithm": "sha1", "get_md5": false, "get_mime": true, "get_attributes": true}}}\n', b'')
Using module file /usr/lib/python3.6/site-packages/ansible/modules/files/file.py
Pipelining is enabled.
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'_BPXK_AUTOCVT=ON ZOAU_HOME=/rsusr/idz/zoautil LIBPATH=/rsusr/idz/zoautil/lib:/rsusr/pyz/3.10.7/lib:/lib:/usr/lib:. PATH=/rsusr/idz/zoautil/bin:/rsusr/pyz/3.10.7/bin:/bin:/var/bin _CEE_RUNOPTS='"'"'"'"'"'"'"'"'FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'"'"'"'"'"'"'"'"' _TAG_REDIR_ERR=txt _TAG_REDIR_IN=txt _TAG_REDIR_OUT=txt LANG=C iflevel=IF3 cicsname=CICD61AN cics_version=TS55 /rsusr/pyz/3.10.7/bin/python3.10 && sleep 0'"'"''
<localmf.com.COM> (0, b'\n{"path": "/u/userid/tmp/CICS55.jcl.bin", "changed": false, "diff": {"before": {"path": "/u/userid/tmp/CICS55.jcl.bin"}, "after": {"path": "/u/userid/tmp/CICS55.jcl.bin"}}, "uid": 3111, "gid": 200, "owner": "userid", "group": "PDUSER", "mode": "0600", "state": "file", "size": 15658, "invocation": {"module_args": {"mode": 384, "follow": false, "dest": "/u/userid/tmp/CICS55.jcl.bin", "_original_basename": "CICS55.j2", "recurse": false, "state": "file", "path": "/u/userid/tmp/CICS55.jcl.bin", "force": false, "modification_time_format": "%Y%m%d%H%M.%S", "access_time_format": "%Y%m%d%H%M.%S", "_diff_peek": null, "src": null, "modification_time": null, "access_time": null, "owner": null, "group": null, "seuser": null, "serole": null, "selevel": null, "setype": null, "attributes": null, "content": null, "backup": null, "remote_src": null, "regexp": null, "delimiter": null, "directory_mode": null, "unsafe_writes": null}}}\n', b'')
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'rm -f -r /u/userid/.ansible/tmp/ansible-tmp-1679305174.1329653-3411103-77108235533620/ > /dev/null 2>&1 && sleep 0'"'"''
<localmf.com.COM> (0, b'', b'')
ok: [zos_host] => {
"changed": false,
"checksum": "a56dd299a0c6d869a016ab7273e861351bf31699",
"dest": "/u/userid/tmp/CICS55.jcl.bin",
"diff": {
"after": {
"path": "/u/userid/tmp/CICS55.jcl.bin"
},
"before": {
"path": "/u/userid/tmp/CICS55.jcl.bin"
}
},
"gid": 200,
"group": "PDUSER",
"invocation": {
"module_args": {
"_diff_peek": null,
"_original_basename": "CICS55.j2",
"access_time": null,
"access_time_format": "%Y%m%d%H%M.%S",
"attributes": null,
"backup": null,
"content": null,
"delimiter": null,
"dest": "/u/userid/tmp/CICS55.jcl.bin",
"directory_mode": null,
"follow": false,
"force": false,
"group": null,
"mode": 384,
"modification_time": null,
"modification_time_format": "%Y%m%d%H%M.%S",
"owner": null,
"path": "/u/userid/tmp/CICS55.jcl.bin",
"recurse": false,
"regexp": null,
"remote_src": null,
"selevel": null,
"serole": null,
"setype": null,
"seuser": null,
"src": null,
"state": "file",
"unsafe_writes": null
}
},
"mode": "0600",
"owner": "userid",
"path": "/u/userid/tmp/CICS55.jcl.bin",
"size": 15658,
"state": "file",
"uid": 3111
}

TASK [Create JCL template from j2 files in /u/userid/tmp] ***************************************************************************************************************************************************
task path: /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/provision_cics_region.yml:55
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'echo ~userid && sleep 0'"'"''
<localmf.com.COM> (0, b'/u/userid\n', b'')
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'( umask 77 && mkdir -p "echo /u/userid/.ansible/tmp"&& mkdir /u/userid/.ansible/tmp/ansible-tmp-1679305176.9918606-3411145-249706893767352 && echo ansible-tmp-1679305176.9918606-3411145-249706893767352="echo /u/userid/.ansible/tmp/ansible-tmp-1679305176.9918606-3411145-249706893767352" ) && sleep 0'"'"''
<localmf.com.COM> (0, b'ansible-tmp-1679305176.9918606-3411145-249706893767352=/u/userid/.ansible/tmp/ansible-tmp-1679305176.9918606-3411145-249706893767352\n', b'')
Using module file /usr/lib/python3.6/site-packages/ansible/modules/files/stat.py
Pipelining is enabled.
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'_BPXK_AUTOCVT=ON ZOAU_HOME=/rsusr/idz/zoautil LIBPATH=/rsusr/idz/zoautil/lib:/rsusr/pyz/3.10.7/lib:/lib:/usr/lib:. PATH=/rsusr/idz/zoautil/bin:/rsusr/pyz/3.10.7/bin:/bin:/var/bin _CEE_RUNOPTS='"'"'"'"'"'"'"'"'FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'"'"'"'"'"'"'"'"' _TAG_REDIR_ERR=txt _TAG_REDIR_IN=txt _TAG_REDIR_OUT=txt LANG=C iflevel=IF3 cicsname=CICD61AN cics_version=TS55 /rsusr/pyz/3.10.7/bin/python3.10 && sleep 0'"'"''
<localmf.com.COM> (0, b'\n{"changed": false, "stat": {"exists": true, "path": "/u/userid/tmp/CSDJOB.jcl.bin", "mode": "0600", "isdir": false, "ischr": false, "isblk": false, "isreg": true, "isfifo": false, "islnk": false, "issock": false, "uid": 3111, "gid": 200, "size": 7259, "inode": 1285, "dev": 1008, "nlink": 1, "atime": 1679304238.0, "mtime": 1679303950.0, "ctime": 1679303951.0, "wusr": true, "rusr": true, "xusr": false, "wgrp": false, "rgrp": false, "xgrp": false, "woth": false, "roth": false, "xoth": false, "isuid": false, "isgid": false, "blocks": 8, "block_size": 1024, "device_type": 0, "readable": true, "writeable": true, "executable": false, "pw_name": "userid", "gr_name": "PDUSER", "checksum": "c039f81aeadf8e1bebe8a2d668d74d9df71db843", "mimetype": "unknown", "charset": "unknown", "version": null, "attributes": [], "attr_flags": ""}, "invocation": {"module_args": {"path": "/u/userid/tmp/CSDJOB.jcl.bin", "follow": false, "get_checksum": true, "checksum_algorithm": "sha1", "get_md5": false, "get_mime": true, "get_attributes": true}}}\n', b'')
Using module file /usr/lib/python3.6/site-packages/ansible/modules/files/file.py
Pipelining is enabled.
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'_BPXK_AUTOCVT=ON ZOAU_HOME=/rsusr/idz/zoautil LIBPATH=/rsusr/idz/zoautil/lib:/rsusr/pyz/3.10.7/lib:/lib:/usr/lib:. PATH=/rsusr/idz/zoautil/bin:/rsusr/pyz/3.10.7/bin:/bin:/var/bin _CEE_RUNOPTS='"'"'"'"'"'"'"'"'FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'"'"'"'"'"'"'"'"' _TAG_REDIR_ERR=txt _TAG_REDIR_IN=txt _TAG_REDIR_OUT=txt LANG=C iflevel=IF3 cicsname=CICD61AN cics_version=TS55 /rsusr/pyz/3.10.7/bin/python3.10 && sleep 0'"'"''
<localmf.com.COM> (0, b'\n{"path": "/u/userid/tmp/CSDJOB.jcl.bin", "changed": false, "diff": {"before": {"path": "/u/userid/tmp/CSDJOB.jcl.bin"}, "after": {"path": "/u/userid/tmp/CSDJOB.jcl.bin"}}, "uid": 3111, "gid": 200, "owner": "userid", "group": "PDUSER", "mode": "0600", "state": "file", "size": 7259, "invocation": {"module_args": {"mode": 384, "follow": false, "dest": "/u/userid/tmp/CSDJOB.jcl.bin", "_original_basename": "CSDJOB.j2", "recurse": false, "state": "file", "path": "/u/userid/tmp/CSDJOB.jcl.bin", "force": false, "modification_time_format": "%Y%m%d%H%M.%S", "access_time_format": "%Y%m%d%H%M.%S", "_diff_peek": null, "src": null, "modification_time": null, "access_time": null, "owner": null, "group": null, "seuser": null, "serole": null, "selevel": null, "setype": null, "attributes": null, "content": null, "backup": null, "remote_src": null, "regexp": null, "delimiter": null, "directory_mode": null, "unsafe_writes": null}}}\n', b'')
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'rm -f -r /u/userid/.ansible/tmp/ansible-tmp-1679305176.9918606-3411145-249706893767352/ > /dev/null 2>&1 && sleep 0'"'"''
<localmf.com.COM> (0, b'', b'')
ok: [zos_host] => {
"changed": false,
"checksum": "c039f81aeadf8e1bebe8a2d668d74d9df71db843",
"dest": "/u/userid/tmp/CSDJOB.jcl.bin",
"diff": {
"after": {
"path": "/u/userid/tmp/CSDJOB.jcl.bin"
},
"before": {
"path": "/u/userid/tmp/CSDJOB.jcl.bin"
}
},
"gid": 200,
"group": "PDUSER",
"invocation": {
"module_args": {
"_diff_peek": null,
"_original_basename": "CSDJOB.j2",
"access_time": null,
"access_time_format": "%Y%m%d%H%M.%S",
"attributes": null,
"backup": null,
"content": null,
"delimiter": null,
"dest": "/u/userid/tmp/CSDJOB.jcl.bin",
"directory_mode": null,
"follow": false,
"force": false,
"group": null,
"mode": 384,
"modification_time": null,
"modification_time_format": "%Y%m%d%H%M.%S",
"owner": null,
"path": "/u/userid/tmp/CSDJOB.jcl.bin",
"recurse": false,
"regexp": null,
"remote_src": null,
"selevel": null,
"serole": null,
"setype": null,
"seuser": null,
"src": null,
"state": "file",
"unsafe_writes": null
}
},
"mode": "0600",
"owner": "userid",
"path": "/u/userid/tmp/CSDJOB.jcl.bin",
"size": 7259,
"state": "file",
"uid": 3111
}

TASK [Convert from ASCII to EBCDIC] *************************************************************************************************************************************************************************
task path: /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/provision_cics_region.yml:62
Using module file /home2/product_dir/.ansible/collections/ansible_collections/ibm/ibm_zos_core/plugins/modules/zos_encode.py
Pipelining is enabled.
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'_BPXK_AUTOCVT=ON ZOAU_HOME=/rsusr/idz/zoautil LIBPATH=/rsusr/idz/zoautil/lib:/rsusr/pyz/3.10.7/lib:/lib:/usr/lib:. PATH=/rsusr/idz/zoautil/bin:/rsusr/pyz/3.10.7/bin:/bin:/var/bin _CEE_RUNOPTS='"'"'"'"'"'"'"'"'FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'"'"'"'"'"'"'"'"' _TAG_REDIR_ERR=txt _TAG_REDIR_IN=txt _TAG_REDIR_OUT=txt LANG=C iflevel=IF3 cicsname=CICD61AN cics_version=TS55 /rsusr/pyz/3.10.7/bin/python3.10 && sleep 0'"'"''
<localmf.com.COM> (0, b'\n{"changed": true, "src": "/u/userid/tmp/CICS55.jcl.bin", "dest": "/u/userid/tmp/CICS55.jcl", "backup_name": null, "uid": 3111, "gid": 200, "owner": "userid", "group": "PDUSER", "mode": "0644", "state": "file", "size": 15658, "invocation": {"module_args": {"src": "/u/userid/tmp/CICS55.jcl.bin", "dest": "/u/userid/tmp/CICS55.jcl", "encoding": {"to": "IBM-1047", "from": "ISO8859-1"}, "backup": false, "backup_compress": false, "backup_name": null, "tmp_hlq": null, "from_encoding": "ISO8859-1", "to_encoding": "IBM-1047"}}}\n', b'')
changed: [zos_host] => {
"backup_name": null,
"changed": true,
"dest": "/u/userid/tmp/CICS55.jcl",
"gid": 200,
"group": "PDUSER",
"invocation": {
"module_args": {
"backup": false,
"backup_compress": false,
"backup_name": null,
"dest": "/u/userid/tmp/CICS55.jcl",
"encoding": {
"from": "ISO8859-1",
"to": "IBM-1047"
},
"from_encoding": "ISO8859-1",
"src": "/u/userid/tmp/CICS55.jcl.bin",
"tmp_hlq": null,
"to_encoding": "IBM-1047"
}
},
"mode": "0644",
"owner": "userid",
"size": 15658,
"src": "/u/userid/tmp/CICS55.jcl.bin",
"state": "file",
"uid": 3111
}

TASK [ENCODING changes completion] **************************************************************************************************************************************************************************
task path: /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/provision_cics_region.yml:71
ok: [zos_host] => {
"msg": {
"backup_name": null,
"changed": true,
"dest": "/u/userid/tmp/CICS55.jcl",
"failed": false,
"gid": 200,
"group": "PDUSER",
"mode": "0644",
"owner": "userid",
"size": 15658,
"src": "/u/userid/tmp/CICS55.jcl.bin",
"state": "file",
"uid": 3111
}
}

TASK [Convert from ASCII to EBCDIC] *************************************************************************************************************************************************************************
task path: /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/provision_cics_region.yml:75
Using module file /home2/product_dir/.ansible/collections/ansible_collections/ibm/ibm_zos_core/plugins/modules/zos_encode.py
Pipelining is enabled.
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'_BPXK_AUTOCVT=ON ZOAU_HOME=/rsusr/idz/zoautil LIBPATH=/rsusr/idz/zoautil/lib:/rsusr/pyz/3.10.7/lib:/lib:/usr/lib:. PATH=/rsusr/idz/zoautil/bin:/rsusr/pyz/3.10.7/bin:/bin:/var/bin _CEE_RUNOPTS='"'"'"'"'"'"'"'"'FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'"'"'"'"'"'"'"'"' _TAG_REDIR_ERR=txt _TAG_REDIR_IN=txt _TAG_REDIR_OUT=txt LANG=C iflevel=IF3 cicsname=CICD61AN cics_version=TS55 /rsusr/pyz/3.10.7/bin/python3.10 && sleep 0'"'"''
<localmf.com.COM> (0, b'\n{"changed": true, "src": "/u/userid/tmp/CSDJOB.jcl.bin", "dest": "/u/userid/tmp/CSDJOB.jcl", "backup_name": null, "uid": 3111, "gid": 200, "owner": "userid", "group": "PDUSER", "mode": "0644", "state": "file", "size": 7259, "invocation": {"module_args": {"src": "/u/userid/tmp/CSDJOB.jcl.bin", "dest": "/u/userid/tmp/CSDJOB.jcl", "encoding": {"to": "IBM-1047", "from": "ISO8859-1"}, "backup": false, "backup_compress": false, "backup_name": null, "tmp_hlq": null, "from_encoding": "ISO8859-1", "to_encoding": "IBM-1047"}}}\n', b'')
changed: [zos_host] => {
"backup_name": null,
"changed": true,
"dest": "/u/userid/tmp/CSDJOB.jcl",
"gid": 200,
"group": "PDUSER",
"invocation": {
"module_args": {
"backup": false,
"backup_compress": false,
"backup_name": null,
"dest": "/u/userid/tmp/CSDJOB.jcl",
"encoding": {
"from": "ISO8859-1",
"to": "IBM-1047"
},
"from_encoding": "ISO8859-1",
"src": "/u/userid/tmp/CSDJOB.jcl.bin",
"tmp_hlq": null,
"to_encoding": "IBM-1047"
}
},
"mode": "0644",
"owner": "userid",
"size": 7259,
"src": "/u/userid/tmp/CSDJOB.jcl.bin",
"state": "file",
"uid": 3111
}

TASK [RUN job - create CICS region datasets] ****************************************************************************************************************************************************************
task path: /home2/product_dir/z_playbooks/z_ansible_collections_samples/zos_concepts/jobs/submit_query_retrieve/provision_cics_region.yml:84
Using module file /home2/product_dir/.ansible/collections/ansible_collections/ibm/ibm_zos_core/plugins/modules/zos_job_submit.py
Pipelining is enabled.
<localmf.com.COM> ESTABLISH SSH CONNECTION FOR USER: userid
<localmf.com.COM> SSH: EXEC sshpass -d9 ssh -C -o ControlMaster=auto -o ControlPersist=60s -o 'User="userid"' -o ConnectTimeout=10 -o ControlPath=/home2/product_dir/.ansible/cp/88bfa6665a localmf.com.COM '/bin/sh -c '"'"'_BPXK_AUTOCVT=ON ZOAU_HOME=/rsusr/idz/zoautil LIBPATH=/rsusr/idz/zoautil/lib:/rsusr/pyz/3.10.7/lib:/lib:/usr/lib:. PATH=/rsusr/idz/zoautil/bin:/rsusr/pyz/3.10.7/bin:/bin:/var/bin _CEE_RUNOPTS='"'"'"'"'"'"'"'"'FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)'"'"'"'"'"'"'"'"' _TAG_REDIR_ERR=txt _TAG_REDIR_IN=txt _TAG_REDIR_OUT=txt LANG=C iflevel=IF3 cicsname=CICD61AN cics_version=TS55 /rsusr/pyz/3.10.7/bin/python3.10 && sleep 0'"'"''
<localmf.com.COM> (0, b'\n{"changed": false, "failed": true, "msg": "The JCL submitted with job id J0633815 but there was an error, please review the error for further details: 'utf-8' codec can't decode byte 0xdd in position 997: invalid continuation byte.", "invocation": {"module_args": {"src": "/u/userid/tmp/CICS55.jcl", "location": "USS", "wait": true, "return_output": true, "max_rc": 4, "encoding": {"to": "IBM-1047", "from": "ISO8859-1"}, "wait_time_s": 10, "volume": null, "temp_file": null, "from_encoding": "ISO8859-1", "to_encoding": "IBM-1047"}}}\n', b'')
fatal: [zos_host]: FAILED! => {
"changed": false,
"invocation": {
"module_args": {
"encoding": {
"from": "ISO8859-1",
"to": "IBM-1047"
},
"from_encoding": "ISO8859-1",
"location": "USS",
"max_rc": 4,
"return_output": true,
"src": "/u/userid/tmp/CICS55.jcl",
"temp_file": null,
"to_encoding": "IBM-1047",
"volume": null,
"wait": true,
"wait_time_s": 10
}
},
"msg": "The JCL submitted with job id J0633815 but there was an error, please review the error for further details: 'utf-8' codec can't decode byte 0xdd in position 997: invalid continuation byte."
}

PLAY RECAP **************************************************************************************************************************************************************************************************
zos_host : ok=5 changed=2 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0

@GerMFHub GerMFHub added the Bug Something isn't working as designed. label Mar 20, 2023
@ddimatos
Copy link
Collaborator

@GerMFHub - thank you for opening an issue with our offering.
Which version of ibm_zos_core are you using?
Which version of ansible-core?
which version of zoau?

Could you try to disable pipelining please by adding this to ansible.cfg, since I don't know which version of ansible-core and the patch level, you can simply paste both into your ansible.cfg.

[ssh_connection]
pipelining = True

[connection]
pipelining = True

@ddimatos ddimatos added the Needs Triage Issue need assessment by a team member(s) label Mar 23, 2023
@ddimatos ddimatos changed the title [Bug] <title> 'utf-8' codec can't decode byte 0xdd error on zos_job_submit module [Bug] [zos_job_submit] 'utf-8' codec can't decode byte 0xdd error on zos_job_submit module Mar 23, 2023
@ddimatos ddimatos added the Waiting for Response Waiting for a response from the issue author label Mar 23, 2023
@GerMFHub
Copy link
Author

GerMFHub commented Mar 24, 2023

@ddimatos I am currently running at:

Ansible version
ansible 2.9.7
IBM z/OS Ansible core Version
v1.5.0

IBM ZOAU version
v1.2.2

tried to disable pipelining as you suggested, but this did not help

@ddimatos
Copy link
Collaborator

@GerMFHub thank you, i noticed i had left Pipelining as true in my cut and paste, did you happen to change to that to false when you tried such that it should look like this (just want to clarify):

[ssh_connection]
pipelining = False

[connection]
pipelining = False

@ddimatos
Copy link
Collaborator

ddimatos commented Mar 24, 2023

Please note that our issue templates , request information so that we can diagnose issues accordingly, please complete the fields so we may be efficient at diagnosing issues.

Thus since I don't have the playbook and having to assemble this playbook from the log, it looks to me like your workflow is this:

  1. convert a file "/u/userid/tmp/CSDJOB.jcl.bin" in ISO8859-1 to "/u/userid/tmp/CSDJOB.jcl" as IBM-1047
TASK [Convert from ASCII to EBCDIC] 
"src": "/u/userid/tmp/CICS55.jcl.bin",
"dest": "/u/userid/tmp/CICS55.jcl",,
"encoding": {
   "from": "ISO8859-1",
   "to": "IBM-1047"
},
  1. submit job "/u/userid/tmp/CICS55.jcl" on USS currently in encoding "ISO8859-1"
TASK [RUN job - create CICS region datasets] 
"encoding": {
   "from": "ISO8859-1",
   "to": "IBM-1047"
},
"location": "USS",
"src": "/u/userid/tmp/CICS55.jcl",

But in (1) the file /u/userid/tmp/CICS55.jcl" is encoded as IBM-1047 thenzos_job_submit is instructed to convert the file from "ISO8859-1" to "IBM-1047" when it is already encoded for your locale.

Generally if no locale is provided the destinations locale is automatically detected, thus given this location was USS, it should have detected the locale as IBM-1047 for both src and dest, I can not tell without a playbook easily if that was your configuration or the auto detection that erred

@ddimatos
Copy link
Collaborator

ddimatos commented Mar 24, 2023

I think the auto encoding detection in the code is only for the managed node after looking at the code and the controller is defaulted to UTF-8 if you don't specify something which it looks like you did specify ISO=88859-1

@ddimatos ddimatos removed the Needs Triage Issue need assessment by a team member(s) label Mar 26, 2023
@GerMFHub
Copy link
Author

@ddimatos yes, I have specified pipelining as FALSE: may play book looks like this:


  • hosts: zos_host
    collections:

    • ibm.ibm_zos_core
    • ansible.builtin.template
      gather_facts: no
      vars:
      tgt_tmp_dir: "/u/userid/tmp"
      jcl_template_dir: "./tempalte"
      iflevel: "IF3"
      cicsname: "CICD55AX"
      cics_version: "TS55"
      environment: "{{ environment_vars }}"

    tasks:

    • name: "Create JCL template from j2 files in {{ tgt_tmp_dir }}"
      ansible.builtin.template:
      src: "CICS55.j2"
      dest: "{{ tgt_tmp_dir }}/CICS55.jcl.bin"
      mode: 0600
      force: true

    • name: "Create JCL template from j2 files in {{ tgt_tmp_dir }}"
      ansible.builtin.template:
      src: "CSDJOB.j2"
      dest: "{{ tgt_tmp_dir }}/CSDJOB.jcl.bin"
      mode: 0600
      force: true

    • name: Convert from ASCII to EBCDIC
      ibm.ibm_zos_core.zos_encode:
      src: "{{ tgt_tmp_dir }}/CICS55.jcl.bin"
      dest: "{{ tgt_tmp_dir }}/CICS55.jcl"
      encoding:
      to: "IBM-1047"
      from: "UTF-8"
      register: result

    • name: ENCODING changes completion
      debug:
      msg: "{{ result }}"

    • name: Convert from ASCII to EBCDIC
      zos_encode:
      src: "{{ tgt_tmp_dir }}/CSDJOB.jcl.bin"
      dest: "{{ tgt_tmp_dir }}/CSDJOB.jcl"
      encoding:
      to: "IBM-1047"
      from: "UTF-8"
      register: result

    • name: RUN job - create CICS region datasets
      ibm.ibm_zos_core.zos_job_submit:
      src: "{{ tgt_tmp_dir }}/CICS55.jcl"
      location: USS
      wait: true
      return_output: true
      max_rc: 4

encoding:

to: "IBM-1047"

from: "UTF-8"

  register: result

- name: CICS datasets job submit
  debug:
    msg: "{{ result }}" 

- name: RUN job - run CSDJOB
  ibm.ibm_zos_core.zos_job_submit:
    src: "{{ tgt_tmp_dir }}/CSDJOB.jcl"
    location: USS
    wait: true
    max_rc: "0" 

encoding:

to: "IBM-1047"

from: "UTF-8"

  register: result

- name: CSD job submit
  debug:
    msg: "{{ result }}" 

----- here .j2 templete that I am suing:

//{{ cicsname }} JOB ,CICS55,CLASS=A,MSGCLASS=X,NOTIFY=&SYSUID
//*********************************************************************
//* CHANGE {{ cicsname }} CICSNAME ALL > SUBMIT THE JOB > SAVE MEMBER
//*********************************************************************
//DELETE EXEC PGM=IDCAMS,REGION=1M
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE RSCICS.{{ cicsname }}.DFHGCD
DELETE RSCICS.{{ cicsname }}.DFHLCD
DELETE RSCICS.{{ cicsname }}.DFHTEMP
DELETE RSCICS.{{ cicsname }}.DFHINTRA
DELETE RSCICS.{{ cicsname }}.DFHLRQ
DELETE RSCICS.{{ cicsname }}.FILEA
DELETE RSCICS.{{ cicsname }}.DFHDMPA NONVSAM
DELETE RSCICS.{{ cicsname }}.DFHDMPB NONVSAM
DELETE RSCICS.{{ cicsname }}.DFHAUXT NONVSAM
DELETE RSCICS.{{ cicsname }}.DFHBUXT NONVSAM
DELETE RSCICS.{{ cicsname }}.DFHHTML NONVSAM
DELETE RSCICS.{{ cicsname }}.DFHPIDIR
DELETE RSCICS.{{ cicsname }}.DFHBRNSF
DELETE RSCICS.{{ cicsname }}.DFHDPFMB
DELETE RSCICS.{{ cicsname }}.DFHDPFMP
DELETE RSCICS.{{ cicsname }}.DFHCSD
DELETE RSCICS.{{ cicsname }}.CICSONC.RESOURCE
DELETE RSCICS.{{ cicsname }}.PROCLIB NONVSAM
DELETE RSCICS.{{ cicsname }}.SYSIN NONVSAM
DELETE RSCICS.{{ cicsname }}.TABLELOD NONVSAM
DELETE RSCICS.{{ cicsname }}.TABLESRC NONVSAM
SET MAXCC=0
/*
//DEFINE EXEC PGM=IDCAMS,REGION=1M
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
/* /
/
DEFINE A CICS GLOBAL CATALOG /
/
/
DEFINE CLUSTER(NAME(RSCICS.{{ cicsname }}.DFHGCD)-
INDEXED -
CYL(3 1)-
SHR(2)-
FREESPACE(10 10)-
VOLUME(
) REUSE) -
DATA(NAME(RSCICS.{{ cicsname }}.DFHGCD.DATA)-
RECORDSIZE(4089,32760)-
CISZ(32768)-
KEYS(52 0)) -
INDEX(NAME(RSCICS.{{ cicsname }}.DFHGCD.INDEX))
/
/
/
DEFINE A CICS LOCAL CATALOG /
/
/
DEFINE CLUSTER(NAME(RSCICS.{{ cicsname }}.DFHLCD)-
INDEXED -
RECORDS(200 10)-
SHR(2)-
FREESPACE(10 10)-
VOLUME(
) REUSE) -
DATA(NAME(RSCICS.{{ cicsname }}.DFHLCD.DATA)-
KEYS(52 0)-
RECORDSIZE(70 2041)-
CISZ(2048)) -
INDEX(NAME(RSCICS.{{ cicsname }}.DFHLCD.INDEX))
/
/
/
DEFINE TEMPORARY STORAGE DATASET /
/
CONSIDER ADDING MULTIPLE EXTENTS AND MULTIPLE VOLUMES FOR THE /
/
DATASET. THIS SAMPLE DEFINITION PRODUCES A SINGLE EXTENT /
/
DATASET ON A SINGLE VOLUME BUT YOU MIGHT EXPERIENCE CHANNEL AND /
/
ARM CONTENTION IF AUXILIARY TEMPORARY STORAGE IS USED HEAVILY. /
/
/
DEFINE CLUSTER(NAME(RSCICS.{{ cicsname }}.DFHTEMP)-
RECORDSIZE(4089,4089)-
REC(200)-
NIXD -
CISZ(4096)-
VOLUME(
) SHR(2 3)) -
DATA(NAME(RSCICS.{{ cicsname }}.DFHTEMP.DATA)-
UNIQUE)
/
/
/
DEFINE AN INTRA-PARTITION TRANSIENT DATA DATASET /
/
CONSIDER ADDING MULTIPLE EXTENTS AND MULTIPLE VOLUMES FOR THE /
/
DATASET. THIS SAMPLE DEFINITION PRODUCES A SINGLE EXTENT /
/
DATASET ON A SINGLE VOLUME BUT THIS MAY MEAN DEFINING A LARGER /
/
DATASET THAN NEEDED ON AVERAGE IN ORDER TO CATER FOR EXCEPTION /
/
CASES. /
/
/
DEFINE CLUSTER(NAME(RSCICS.{{ cicsname }}.DFHINTRA)-
RECORDSIZE(4089,4089)-
REC(100)-
NIXD -
CISZ(4096)-
VOLUME(
) SHR(2 3)) -
DATA(NAME(RSCICS.{{ cicsname }}.DFHINTRA.DATA)-
UNIQUE)
/
/
/
DEFINE A LOCAL REQUEST /
/
QUEUE DATASET /
/
/
DEFINE CLUSTER(NAME(RSCICS.{{ cicsname }}.DFHLRQ)-
INDEXED-
LOG(UNDO)-
CYL(2 1)-
VOLUME(
)-
RECORDSIZE( 2232 2400 )-
KEYS( 40 0 )-
FREESPACE ( 0 10 )-
SHAREOPTIONS( 2 3 ))-
DATA (NAME(RSCICS.{{ cicsname }}.DFHLRQ.DATA) -
CISZ(2560)) -
INDEX (NAME(RSCICS.{{ cicsname }}.DFHLRQ.INDEX))
/
/
/
/
/
DEFINE A FILEA DATASET /
/
/
DEFINE CLUSTER(NAME(RSCICS.{{ cicsname }}.FILEA)-
REC(80)-
VOLUME(
) INDEXED) -
DATA(NAME(RSCICS.{{ cicsname }}.FILEA.DATA)-
RECSZ(80 80)-
UNIQUE -
KEYS(6 1)) -
INDEX(NAME(RSCICS.{{ cicsname }}.FILEA.INDEX)-
UNIQUE -
SHR(2 3))
/
/
/
DEFINE A PI DIRECTORY /
/
DATASET /
/
/
DEFINE CLUSTER(NAME(RSCICS.{{ cicsname }}.DFHPIDIR)-
INDEXED-
LOG(UNDO)-
CYL(2 1)-
VOLUME(
)-
RECORDSIZE( 1017 1017 )-
KEYS( 16 0 )-
FREESPACE ( 10 10 )-
SHAREOPTIONS( 2 3 ))-
DATA (NAME(RSCICS.{{ cicsname }}.DFHPIDIR.DATA) -
CONTROLINTERVALSIZE(1024)) -
INDEX (NAME(RSCICS.{{ cicsname }}.DFHPIDIR.INDEX))
/
/
/
DEFINE A BRIDGE LINK3270 /
/
DATASET /
/
/
DEFINE CLUSTER(NAME(RSCICS.{{ cicsname }}.DFHBRNSF)-
INDEXED-
TRK(1 1)-
RECORDSIZE(384 384)-
KEYS(13 20)-
FREESPACE(0 50)-
SHAREOPTIONS(2 3)-
LOG(NONE)-
VOLUME(
)-
CISZ(512)) -
DATA (NAME(RSCICS.{{ cicsname }}.DFHBRNSF.DATA)-
CISZ(512)) -
INDEX (NAME(RSCICS.{{ cicsname }}.DFHBRNSF.INDEX)-
CISZ(512))
/
/
/
DEFINE DEBUGGING PROFILES /
/
BASE AND PATH DATA SETS /
/
/
DEFINE CLUSTER (RECORDS(1500)-
NAME (RSCICS.{{ cicsname }}.DFHDPFMB) -
SHAREOPTIONS(2 3) -
LOG(NONE) -
VOLUME(
) -
IXD) -
DATA -
(RECSZ(2560,2560) -
CONTROLINTERVALSIZE(3072) -
NAME (RSCICS.{{ cicsname }}.DFHDPFMB.DATA) -
KEYS(17 1) -
FREESPACE(10 10) -
BUFFERSPACE (8192)) -
INDEX -
(NAME(RSCICS.{{ cicsname }}.DFHDPFMB.INDX))
/

//* /
//
POPULATE THE BASE DATASET /
//
WITH A DUMMY RECORD AND A /
//
RECORD TO INDICATE EXAMPLE*/
//* PROFILES ARE REQUIRED /
//INITDP EXEC PGM=IDCAMS,REGION=512K
//SYSPRINT DD SYSOUT=

//SYSIN DD *
REPRO INFILE ( SYS01 ) -
OUTDATASET(RSCICS.{{ cicsname }}.DFHDPFMB)
//SYS01 DD *
DDUMMY RECORD !! DO NOT ALTER !!
EEXAMPLE RECORD REMOVE THIS LINE IF EXAMPLES NOT REQUIRED
/*
//* /
//
DEFINE ALTERNATE INDEX /
//
FOR THE BASE DATASET /
//
/
//DEFALT EXEC PGM=IDCAMS,REGION=1M
//SYSPRINT DD SYSOUT=

//SYSIN DD *
DEFINE ALTERNATEINDEX -
( NAME(RSCICS.{{ cicsname }}.DFHDPFMX ) -
RECORDS(1500) -
VOLUME(* ) -
KEYS(12 20) -
RELATE(RSCICS.{{ cicsname }}.DFHDPFMB) -
RECORDSIZE(200 200) -
SHAREOPTIONS(2 3) -
UPGRADE ) -
DATA -
( NAME(RSCICS.{{ cicsname }}.DFHDPFMX.DATA) ) -
INDEX -
( NAME(RSCICS.{{ cicsname }}.DFHDPFMX.INDEX) )
DEFINE PATH -
( NAME(RSCICS.{{ cicsname }}.DFHDPFMP) -
PATHENTRY(RSCICS.{{ cicsname }}.DFHDPFMX) )
/

//* /
//
BUILD ALTERNATE INDEX /
//
/
//BLDDP EXEC PGM=IDCAMS
//BDSET1 DD DSN=RSCICS.{{ cicsname }}.DFHDPFMB,DISP=SHR
//ADSET1 DD DSN=RSCICS.{{ cicsname }}.DFHDPFMX,DISP=SHR
//SYSPRINT DD SYSOUT=

//SYSIN DD *
BLDINDEX -
INFILE(BDSET1) -
OUTFILE(ADSET1)
/*
//*
//INITGCD EXEC PGM=DFHRMUTL,REGION=1M
//STEPLIB DD DSN=RSRTE.CICSTS55.CICS.SDFHLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//DFHGCD DD DSN=RSCICS.{{ cicsname }}.DFHGCD,DISP=SHR
//SYSIN DD *
SET_AUTO_START=AUTOINIT
/*
//*
//INITLCD EXEC PGM=DFHCCUTL
//STEPLIB DD DSN=RSRTE.CICSTS55.CICS.SDFHLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//DFHLCD DD DSN=RSCICS.{{ cicsname }}.DFHLCD,DISP=SHR
//*
//DEFTRACE EXEC PGM=IEFBR14
//DD1 DD DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(25)),UNIT=SYSALLDA,
// DCB=(BLKSIZE=4096,RECFM=F,LRECL=4096),
// DSN=RSCICS.{{ cicsname }}.DFHAUXT
//DD2 DD DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(25)),UNIT=SYSALLDA,
// DCB=(BLKSIZE=4096,RECFM=F,LRECL=4096),
// DSN=RSCICS.{{ cicsname }}.DFHBUXT
//*
//DEFDUMP EXEC PGM=IEFBR14
//DD1 DD DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(25)),UNIT=SYSALLDA,
// DCB=(RECFM=VB,LRECL=4092,BLKSIZE=4096),
// DSN=RSCICS.{{ cicsname }}.DFHDMPA
//DD2 DD DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(25)),UNIT=SYSALLDA,
// DCB=(RECFM=VB,LRECL=4092,BLKSIZE=4096),
// DSN=RSCICS.{{ cicsname }}.DFHDMPB
//*
//* DEFINE THE HTML TEMPLATE DATASET
//*
//DEFHTML EXEC PGM=IEFBR14
//DD1 DD DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(10,10,100)),UNIT=SYSALLDA,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0),
// DSN=RSCICS.{{ cicsname }}.DFHHTML
//*
//* LOAD VSAM DATA FILE
//*
//LOADFILE EXEC PGM=DFH$LDSP
//STEPLIB DD DSN=RSRTE.CICSTS55.CICS.SDFHLOAD,DISP=SHR
//FILEA DD DISP=SHR,
// DSN=RSCICS.{{ cicsname }}.FILEA
//SYSOUT DD SYSOUT=*
//SYSIN DD DISP=SHR,
// DSN=RSRTE.CICSTS55.CICS.SDFHSAMP(DFH$FAIN)
//*
//* LOAD HTML TEMPLATE DATASET
//*
//LOADHTML EXEC PGM=IEBUPDTE,PARM=NEW
//SYSPRINT DD SYSOUT=*
//SYSUT2 DD DISP=SHR,
// DSN=RSCICS.{{ cicsname }}.DFHHTML
//SYSIN DD DISP=SHR, ** SAMPLE TRANSACTION AMNU
// DSN=RSRTE.CICSTS55.CICS.SDFHSAMP(DFH$AMAU)
// DD DISP=SHR, ** SAMPLE TRANSACTION AMNU
// DSN=RSRTE.CICSTS55.CICS.SDFHSAMP(DFH$AMBU)
// DD DISP=SHR, ** SAMPLE TRANSACTION AMNU
// DSN=RSRTE.CICSTS55.CICS.SDFHSAMP(DFH$AMCU)
// DD DISP=SHR, ** SAMPLE TRANSACTION AMNU
// DSN=RSRTE.CICSTS55.CICS.SDFHSAMP(DFH$AMDU)
// DD DISP=SHR, ** SAMPLE TRANSACTION AMNU
// DSN=RSRTE.CICSTS55.CICS.SDFHSAMP(DFH$AMKU)
// DD DISP=SHR, ** CICS TRACE CONTROL FACILITY
// DSN=RSRTE.CICSTS55.CICS.SDFHSAMP(DFHCTRMU)
// DD DISP=SHR, ** SAMPLE TRANSACTION STAT
// DSN=RSRTE.CICSTS55.CICS.SDFHSAMP(DFH0STMU)
// DD DISP=SHR, ** SAMPLE TRANSACTION STAT
// DSN=RSRTE.CICSTS55.CICS.SDFHSAMP(DFH0STSU)
//*********************************
//DEFCSD EXEC PGM=IDCAMS,REGION=1M
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEF CLUSTER(NAME(RSCICS.{{ cicsname }}.DFHCSD) -
IXD -
REC(12000 1000)-
RECORDSIZE(200 2000)-
FREESPACE(5 5)-
VOLUME(* ) SHR(2)) -
DATA(NAME(RSCICS.{{ cicsname }}.DFHCSD.DATA) -
UNIQUE -
KEYS(22 0))-
INDEX(NAME(RSCICS.{{ cicsname }}.DFHCSD.INDEX) -
UNIQUE)
/
THE CSD IS NOW READY TO BE INITIALIZED BY PGM=DFHCSDUP /
/

//*
//INITCSD EXEC PGM=DFHCSDUP,REGION=1M,COND=(0,LT,DEFCSD)
//*
//* INITIALIZE THE CSD
//*
//STEPLIB DD DSN=RSRTE.CICSTS55.CICS.SDFHLOAD,DISP=SHR
//DFHCSD DD DSN=RSCICS.{{ cicsname }}.DFHCSD,DISP=SHR
//SYSUT1 DD UNIT=SYSDA,SPACE=(1024,(100,100))
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
INITIALIZE
// DD DISP=SHR,DSN=RSRTE.CICS.CLONE.BASE.TS55.RSLIST.EXTRACT
// DD DISP=SHR,DSN=RSRTE.CICS.CLONE.QMF12.EXTRACT
/*
//*
//DEFRPIDC EXEC PGM=IDCAMS,REGION=1M
//SYSPRINT DD SYSOUT=*
//AMSDUMP DD SYSOUT=*
//SYSIN DD *
DEFINE CLUSTER ( -
NAME(RSCICS.{{ cicsname }}.CICSONC.RESOURCE) -
CYL(2 1) -
KEYS(19 0) -
VOLUME(* ) INDEXED -
RECORDSIZE(150 150) -
FREESPACE(5 5) -
SHAREOPTIONS(1) -
)
/

//*
//DEFSYSIN EXEC PGM=IEBCOPY
//SDFHSAMP DD DSN=RSRTE.CICS.CLONE.BASE.SYSIN,DISP=SHR
//OUT DD DSN=RSCICS.{{ cicsname }}.SYSIN,
// DISP=(NEW,CATLG,DELETE),
// DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=400,
// SPACE=(TRK,(5,5,5))
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
COPY OUTDD=OUT,INDD=SDFHSAMP
SELECT MEMBER=((TS55,{{ cicsname }}))
/*
//DEFTABLS EXEC PGM=IEBCOPY
//INTABLS DD DSN=RSRTE.CICS.CLONE.BASE.TABLESRC,DISP=SHR
//OUTABLS DD DSN=RSCICS.{{ cicsname }}.TABLESRC,
// DISP=(NEW,CATLG,DELETE),
// DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=400,
// SPACE=(TRK,(5,5,5))
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
COPY OUTDD=OUTABLS,INDD=INTABLS
//*
//DEFTABLL EXEC PGM=IEFBR14
//OUT DD DSN=RSCICS.{{ cicsname }}.TABLELOD,
// DISP=(NEW,CATLG,DELETE),
// DSORG=PO,RECFM=U,LRECL=0,BLKSIZE=32760,
// SPACE=(TRK,(15,2,20))
//*
//DEFPROC EXEC PGM=IEBCOPY
//SDFHSAMP DD DSN=RSRTE.CICS.CLONE.BASE.PROCLIB,DISP=SHR
//OUT DD DSN=RSCICS.{{ cicsname }}.PROCLIB,
// DISP=(NEW,CATLG,DELETE),
// DSORG=PO,RECFM=FB,LRECL=80,BLKSIZE=400,
// SPACE=(TRK,(5,5,5))
//*
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
COPY OUTDD=OUT,INDD=SDFHSAMP
SELECT MEMBER=((TS55,{{ cicsname }}))
/*

Did tried various encoding options or omitting them, result is similar

@GerMFHub
Copy link
Author

@ddimatos is there any update on this?

@adn1107
Copy link

adn1107 commented May 29, 2023

I also ran into this or similar issue:

fatal: [andy-zdt1]: FAILED! => {
    "changed": false,    
    "invocation": {
        "module_args": {
            "encoding": null,
            "from_encoding": "UTF-8",
            "location": "USS",
            "max_rc": 16,
            "return_output": false,
            "src": "/tmp/ansible.eycy3lvb/DFSGNPRE.j2",
            "temp_file": null,
            "to_encoding": "IBM-1047",
            "volume": null,
            "wait": false,
            "wait_time_s": 60
        }
    },
    "msg": "The JCL submitted with job id JOB02548 but there was an error, please review the error for further details: 'utf-8' codec can't decode byte 0xbb in position 0: invalid start byte"
}

the job ran ok:

NP   JOBNAME  JobID    Max-RC     Owner    Prty Queue
     ANSIBLE  JOB02548 CC 0000    IBMUSER     1 PRINT

@ddimatos ddimatos added Needs Triage Issue need assessment by a team member(s) and removed Waiting for Response Waiting for a response from the issue author labels May 29, 2023
@vit-tomica
Copy link

Hi @ddimatos, I ran into the same issue. I tried to create a minimal JCL that "causes" the issue for me:

//ASSEMBLE EXEC PGM=ASMA90,REGION=1M,
//         PARM='RENT,NOOBJ,NODECK,PCONTROL(ON,GEN,DATA,MCALL)'
//STEPLIB  DD DISP=SHR,DSN=ASMA.SASMMOD1
//SYSPRINT DD SYSOUT=*
//SYSLIB   DD DISP=SHR,DSN=ASMA.SASMMAC1
//SYSUT1   DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND),UNIT=VIO,
//         DCB=BUFNO=1
//SYSPUNCH DD DUMMY
//SYSIN    DD *
         ASMADATA ,
         END
/*
//

The culprit seems to be the machine code control character (more about it here: https://www.ibm.com/docs/en/zos/2.5.0?topic=sets-control-characters). In this case, machine code control characters are a part of the assembler listing which goes to the SYSPRINT ddname.
In this case, I can "workaround" the problem by specifying the ASA assembler option that instructs the assembler to use ANSI control characters instead of machine code control characters in the assembler listing:

//         PARM='RENT,NOOBJ,NODECK,PCONTROL(ON,GEN,DATA,MCALL),ASA'

To re-create the issue, I just run:

    - name: "Submit  JCL"
      ibm.ibm_zos_core.zos_job_submit:
        src: "{{ build_job }}"
        location: DATA_SET
        wait_time_s: 86400

It happens for 1.5.0 as well as 1.6.0-beta.1.

@vit-tomica
Copy link

Hi @ddimatos, I ran into the same issue. I tried to create a minimal JCL that "causes" the issue for me:

//ASSEMBLE EXEC PGM=ASMA90,REGION=1M,
//         PARM='RENT,NOOBJ,NODECK,PCONTROL(ON,GEN,DATA,MCALL)'
//STEPLIB  DD DISP=SHR,DSN=ASMA.SASMMOD1
//SYSPRINT DD SYSOUT=*
//SYSLIB   DD DISP=SHR,DSN=ASMA.SASMMAC1
//SYSUT1   DD DSN=&&SYSUT1,SPACE=(4096,(120,120),,,ROUND),UNIT=VIO,
//         DCB=BUFNO=1
//SYSPUNCH DD DUMMY
//SYSIN    DD *
         ASMADATA ,
         END
/*
//

The culprit seems to be the machine code control character (more about it here: https://www.ibm.com/docs/en/zos/2.5.0?topic=sets-control-characters). In this case, machine code control characters are a part of the assembler listing which goes to the SYSPRINT ddname. In this case, I can "workaround" the problem by specifying the ASA assembler option that instructs the assembler to use ANSI control characters instead of machine code control characters in the assembler listing:

//         PARM='RENT,NOOBJ,NODECK,PCONTROL(ON,GEN,DATA,MCALL),ASA'

To re-create the issue, I just run:

    - name: "Submit  JCL"
      ibm.ibm_zos_core.zos_job_submit:
        src: "{{ build_job }}"
        location: DATA_SET
        wait_time_s: 86400

It happens for 1.5.0 as well as 1.6.0-beta.1.

I see that the pjdd ZOAU utility returns job output ddname content with the control characters. That seems wrong.

@dietmarf
Copy link

I have a similiar issue with a different hex value though.

I am uploading a REXX containing a German umlaut to z/OS which works well

/* Rexx */ Address TSO say "Hallo GitLäb" say "3 + 2 =" 3+2

- name: Copy a local file to a PDS member and convert encoding zos_copy: src: gitlab.rexx dest: XV26280.REXX.EXEC(GITLAB) force: true encoding: from: UTF-8 to: IBM-1141

Then I'm submitting a job to execute this REXX:

- name: Submit job zos_job_submit: src: gitlab.jcl location: LOCAL encoding: from: UTF-8 to: IBM-1141 register: glresponse - name: Debug glresponse debug: var: glresponse

//XV26280G JOB '1N282057010100100000','P96NDF3 TSTREXX', // MSGCLASS=Y, // NOTIFY=&SYSUID, // REGION=400M, // CLASS=APPSHORT, // TIME=1, // SCHENV='TST_BATCH' //* //*------------------------------------------- //* ==> PARM 1= //*------------------------------------------- //STEP010 EXEC PGM=IKJEFT01,PARM='gitlab' //SYSTSPRT DD SYSOUT=* //SYSEXEC DD DSN=XV26280.REXX.EXEC,DISP=SHR //SYSTSIN DD DUMMY //

What happens is that the job is submitted, runs fine, ends with CC0, contains the output just as I'd expect. That is what I see when I look into the spool using 3270. So I speculate that something goes wrong when the output is being retrieved back to ansible:

TASK [Submit job] ************************************************************** fatal: [MVSB]: FAILED! => {"changed": false, "checksum": "6da39d97b4794bcc77d9e1da011f5a31ca7703b0", "dest": "/tmp/ansible.8tjl08rl", "gid": 850220723, "group": "$ZIRADE", "md5sum": "cfe0dbdc0ec4b52f192a506c63c2ff5a", "mode": "0600", "msg": "The JCL submitted with job id JOB10580 but there was an error, please review the error for further details: 'utf-8' codec can't decode byte 0xe4 in position 11: invalid continuation byte", "owner": "XV26280", "size": 910, "src": "/u/xv26280/.ansible/tmp/ansible-tmp-1687938668.9212081-261-205879012441683/source", "state": "file", "uid": 850026280}

The problem in the job submit disappears if I change the ä in the REXX back to a.

Just for the fun of it I changed the upload of the REXX to IBM-1047. As expected this leads to the questionable character in the REXX arriving with a different hex code on the host. But neither an umlaut nor curly brace should break the job. I assume multibyte conversion misinterprets something

Does this fit in here or should I create a separate Bug?

I am using ibm-ibm_zos_core-1.6.0-beta.1.tar.gz
zoaversion returns "2023/03/15 04:03:36 CUT V1.2.2.1 6647f545 2128"

@ddimatos
Copy link
Collaborator

ddimatos commented Jun 28, 2023

@vit-tomica - this is very helpful, thus far I have found most of these occur when compile and link outputs are involved (not always) but your points help me, I have also not been able to recreate yet so I will try yours.

I have a feeling I know where this happens which you eluded to (pjdd - but goes lower than that), when we migrated our code to use more of ZOAU the Python to C hand off code encounters these bytes that can not be translated to a valid UTF-8 byte that Python expects and breaks. Having a recreate will help me but I expect this is and API change and may not be resolved till later in the year thus I will continue to work on the recreate and see if there is anything we can do from the ansible side and for now mark this as a waiting on dependency.

It was creative to ask for ASA ansi printable chars :) , that a good idea.

@ddimatos
Copy link
Collaborator

@dietmarf Your issue fits very well here, the 11th position is the ä and its what others are seeing, this happening in one of our dependencies so I will be working with that team to resolve this. Thank your adding your example, the more I have the better it is, thanks again so much.

@ddimatos ddimatos added the Waiting on dependency This issue requires a change on a dependnecy out of scop for this team but tracked by this team label Jun 28, 2023
@vit-tomica
Copy link

vit-tomica commented Jun 29, 2023

Thanks, @ddimatos.
I'm sending a bit more info about the issue that could help with the re-creation or potentially with creating an interim fix on the ansible side.
After I submit a problematic job, I can list ddnames of the job using the ZOAU ddls program:

USER:/usr/lpp/IBM/zoautil/bin: >ddls JOB57676
JES2     -        JESMSGLG UA         133        20   2
JES2     -        JESJCL   V          136        47   3
JES2     -        JESYSMSG VA         137       119   4
ASSEMBLE -        SYSPRINT FBM        133       1261   102
GO       -        IDCPRINT VBA        125        10   106

The fourth column displays the record format (RECFM) attribute (in this case, it's UA, V, VA, FBM, VBA) . If the RECFM contains A or M at the end that means a control character is going to be present in the record.
A indicates the ANSI control character is present in the record.
M indicates the machine control character is present in the record. This one is troublesome for the ansible.
https://www.ibm.com/docs/en/zos/2.5.0?topic=io-record-formats

As you say, the pjdd should be eventually fixed. I think pjdd should not return the control character or at least it should provide an option not to return it.

@ddimatos
Copy link
Collaborator

@vit-tomica - this great info, to be honest in the past month I have been exploring ASA for a different use case and have become familiar with ASA printable ANSI chars, my experience on mainframes never needed me to know about them (until now), as always, learning...

We will be working to resolve this issue, its happening a in few places where a byte stream which cannot be assigned to a UTF-8 text encoding will break the contract imposed on us by python which text must be UTF-8 assignable.

We are entering our next quarters planning and have marked this something to triage, so I will try to use your recreate to help with solving this. I appreciate all the help, it has definitely been helpful.

@ddimatos ddimatos removed the Waiting on dependency This issue requires a change on a dependnecy out of scop for this team but tracked by this team label Jun 30, 2023
@ddimatos ddimatos added this to the *[Q3] [2023] Bugs milestone Jul 12, 2023
@ddimatos
Copy link
Collaborator

ddimatos commented Aug 6, 2023

@vit-tomica - I wanted to provide some updates, first thank you for the recreate although I ended up with an RC8 and think i was not getting the non-printable chars as a result of the RC8, I did however reproduce this using a C program and BPXBATCH.

Reproduction error:

 the error for further details: 'utf-8' codec can't decode byte 0xc0 in position 32: invalid start byte"}

JCL used in reproduction:

//NOEBCDIC    JOB (T043JM,JM00,1,0,0,0),'NOEBCDIC - JRM',
//             MSGCLASS=X,MSGLEVEL=1,NOTIFY=&SYSUID
//NOPRINT  EXEC PGM=BPXBATCH
//STDPARM DD *
SH (
echo "#include <stdio.h>">/tmp/noprint.c;
echo "int main()">>/tmp/noprint.c;
echo "{">>/tmp/noprint.c;
echo "	unsigned char a=0x64;">>/tmp/noprint.c
echo "	unsigned char b=0x2A;">>/tmp/noprint.c;
echo "	unsigned char c=0xB8;">>/tmp/noprint.c;
echo "	unsigned char d=0xFF;">>/tmp/noprint.c;
echo "	unsigned char e=0x81;">>/tmp/noprint.c;
echo "	unsigned char f=0x82;">>/tmp/noprint.c;
echo "	unsigned char g=0x83;">>/tmp/noprint.c;
echo "	unsigned char h=0x84;">>/tmp/noprint.c;
echo "	printf(\"Value of a: Hex: %X, character: %c\\n\",a,a);">>/tmp/noprint.c;
echo "	printf(\"Value of b: Hex: %X, character: %c\\n\",b,b);">>/tmp/noprint.c;
echo "	printf(\"Value of c: Hex: %X, character: %c\\n\",c,c);">>/tmp/noprint.c;
echo "	printf(\"Value of d: Hex: %X, character: %c\\n\",d,d);">>/tmp/noprint.c;
echo "	printf(\"Value of a: Hex: %X, character: %c\\n\",e,e);">>/tmp/noprint.c;
echo "	printf(\"Value of b: Hex: %X, character: %c\\n\",f,f);">>/tmp/noprint.c;
echo "	printf(\"Value of c: Hex: %X, character: %c\\n\",g,g);">>/tmp/noprint.c;
echo "	printf(\"Value of d: Hex: %X, character: %c\\n\",h,h);">>/tmp/noprint.c;
echo "	return 0;">>/tmp/noprint.c;
echo "}">>/tmp/noprint.c;
cd /tmp;
export _CEE_RUNOPTS="FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)";
export STEPLIB=CBC.SCCNCMP:$STEPLIB;
xlc -F xlc.cfg -o noprint noprint.c;
./noprint;
exit 0;
)
//STDIN  DD DUMMY
//STDOUT DD SYSOUT=*
//STDERR DD SYSOUT=*
//

We are working on a prototype fix, thus far its promising:

"Value of a: Hex: 64, character: ?nValue of b: Hex: 2A, character: ? Value of c: Hex: B8, character: ? Value of d: Hex: FF, character: ? Value of a: Hex: 81, character: a Value of b: Hex: 82, character: b Value of c: Hex: 83, character: c Value of d: Hex: 84, character: d"

@ddimatos
Copy link
Collaborator

ddimatos commented Aug 6, 2023

@vit-tomica

Regarding "I see that the pjdd ZOAU utility returns job output ddname content with the control characters. That seems wrong."

I assume you mean that it replaces the control characters with the notorious '\ufffd' aka �, if that is what you mean, what behavior would you expect? When they come in the byte stream , they are non-printable so the shell replaces them with the symbol above, not sure how we could could differentiate between control chars and other non-printables to not print control chars and if we could , what would be appropriate, an empty space?

When I ran pjdd on the job above i got the question mark for the non-printables:

Value of a: Hex: 64, character: �
 Value of b: Hex: 2A, character: � 
Value of c: Hex: B8, character: � 
Value of d: Hex: FF, character: � 
Value of a: Hex: 81, character: a 
Value of b: Hex: 82, character: b 
Value of c: Hex: 83, character: c 
Value of d: Hex: 84, character: d

@ddimatos ddimatos removed the Needs Triage Issue need assessment by a team member(s) label Aug 6, 2023
@vit-tomica
Copy link

Thanks for the update, @ddimatos.
Regarding the control characters, I think pjdd should completely omit them from the output, by default, so you don't have to deal with the control characters in this project at all. If there is ever a need to send them as a part of the output then pjdd can have a command option to do that.

The control characters were strictly used by physical line printers in the past, e.g. to control the flow of the paper etc., check this for more info. I see almost no use cases for why it should be returned. In most cases, it just pollutes the output as we can see. Again, the fix should be done in pjdd so the control characters don't ever reach the byte stream that you have to handle. IMHO, fixing the control characters here in this project would be a hack.

@ddimatos
Copy link
Collaborator

ddimatos commented Aug 7, 2023

@vit-tomica - Thanks for the feedback, I could some additional clarity.
I understand the control characters date back to the days when printing was common, they are still used today in cases where a utility writes a log to USS for viewing and consumption by other tooling.

There are 2 code paths here, lets comment on the Python path first.

The point I was trying to convey is that the what I am referring to as non-printable is not only control chars created for printing,; for me non-printable are EBCDIC characters that fall outside the range of UTF-8 needed for Python, so in this case, a Job having non-printable such as a 0x2A which I often see in job outputs involving linking and binding, is not interpreted by Python and is not a machine printable control char, thus the idea is to substitute it with something else, not completely remove the evidence but instead provide the user the ability to respond as needed.

We are not inspecting sources to know if a 0x2A is a machine printable control char or coincidentally found in job output coming from a compile and link to make that distinction. I don't think we can simply create a map of machine printable control char and simply remove them because we don't know the source and if we are removing data that might be needed.

For the shell path, its pretty much the same example above, while the shell tolerates a machine printable, we don't inspect the source to know to remove it or not.

The overhead and number of permutations needed to inspect source to remove a non-printable seems to be me to be more costly than the gain one would make for ZOAU.

I could see value in allowing a user to override a non-printable with a character of their choice to ease parsing; at the moment nothing else comes to mind. I can discuss this with some other folks, please share your thoughts as we are coming to close on our development cycle and would like to finalize on this.

I did not state where the fix is being done (e.g. ZOAU. ansible-core, IBM z/OS core, etc) to warrant what is a hack or not, nor did I share the sources for the fix for anyone to make a justification if it is a hack.

@vit-tomica
Copy link

@ddimatos Thanks for the explanation. I didn't know that control characters are still pretty used nowadays. I still think having an option somewhere (in ZOAU) not to send them as part of the output would be useful. I realize this may be out of the scope of this issue/ansible project.
(Technically, I would check what a RECFM value is for the output dataset. If the RECFM value ends with an M or A letter then optionally skip the first byte of the data portion of a record which is reserved for the control char)

I get your point about treating control chars and other non-printable chars as one group. I deliberately decoupled control characters from non-printable chars because I can see control characters in every job output on our systems for JESMSGLG and JESYSMSG ddnames and I don't need to see them. In this case, they are printable control characters, so again, out of scope. I deviated a bit from what this issue is trying to fix. Sorry about that :)

I think what you suggest, replacing a non-printable char with a selectable char, seems ok to me.

@ddimatos
Copy link
Collaborator

ddimatos commented Aug 11, 2023

@vit-tomica while I'm not discounting the idea of looking at the record format, it might work, my concern is consistency, because if you submit a job via mvscmd/mvscmdsuth instead of JES,sysout and sysprint if not defined will go to a temporary sequential data and maybe that is good in that many the control chars will not be preserved, I'll look into this idea with the team and maybe we target it for exploration to ensure we can be consistent and accurate in our responses and start by releasing a character replacement that has been prototyped.

On the contrary , zos_copy is going to be supporting the preservation of ASA control chars in our next release, hence it's still widely used.

I don't mind the deviation, it's important we know what things our users are experiencing and if we can support them .

@vit-tomica
Copy link

@ddimatos Thanks for the information.

PS: I love this project. You do a great job on that!

@AndreMarcel99 AndreMarcel99 added the Needs Triage Issue need assessment by a team member(s) label Sep 14, 2023
@ddimatos ddimatos added the Waiting on dependency This issue requires a change on a dependnecy out of scop for this team but tracked by this team label Sep 18, 2023
@ddimatos ddimatos added In Plan Issue has been accepted put into a planned release and removed Needs Triage Issue need assessment by a team member(s) labels Sep 25, 2023
@ansible-collections ansible-collections deleted a comment from richp405 Oct 3, 2023
@ddimatos
Copy link
Collaborator

ddimatos commented Oct 3, 2023

See the following issues below, they are all related to non-printable UTF-8 chars, essentially chararcetors that don't don't correspond to a UTF-8 value. This is being addressed as noted in ZOAU 1.3 and IBM z/OS Core collection will adopt ZOAU 1.3 in Q1 2024. There is a recreate involving a job submission you can see here. This work is also being tracked in JIRA 9687.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something isn't working as designed. In Plan Issue has been accepted put into a planned release
Projects
Development

Successfully merging a pull request may close this issue.

8 participants