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

[v1.9.0] [Backport] [zos_job_submit] Handling of non-UTF-8 chars #1288

Merged
merged 6 commits into from
Mar 12, 2024

Conversation

rexemin
Copy link
Collaborator

@rexemin rexemin commented Mar 7, 2024

SUMMARY

Fixes #1255.

Backports to v1.9.0 the fix from #1261.

ISSUE TYPE
  • Bugfix Pull Request
COMPONENT NAME
  • zos_job_submit
  • module_utils/job.py

rexemin added 2 commits March 7, 2024 14:56
…(originally from #1261)

* Added test to validate handling of non-UTF8 chars

* Add changelog fragment

* Clean up new test

* Add try-except block when reading a job's output

* Remove commented code

* Update changelog fragment

* Change job queried in test
@rexemin rexemin marked this pull request as ready for review March 7, 2024 23:46
Copy link
Collaborator

@richp405 richp405 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can convince me if I misunderstood that test, but it looks wrong to me at the moment.


# Create local JCL and submit it.
tmp_file = tempfile.NamedTemporaryFile(delete=True)
with open(tmp_file.name, "w") as f:
Copy link
Collaborator

@AndreMarcel99 AndreMarcel99 Mar 8, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not as a change just as a question which form is better doing a open as f or a echo

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For local files, open as f. For remote files, echo so we can avoid a call to our own collection

Copy link
Collaborator

@AndreMarcel99 AndreMarcel99 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than which function is better to write a file I like the changes on the code

Copy link
Collaborator

@ddimatos ddimatos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good @rexemin - I did ask for a small update to include some additional hex values.

Question, how do you want to test this, I am still waiting on 1.2.5.6 for the non-printable chars so we can't pass until that is present. I could test locally once I get it but do we want to hold this PR till then?

Copy link
Collaborator

@ddimatos ddimatos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM @rexemin thanks for the changes.

@rexemin rexemin added the Do not Merge When a pull request should not be merged for issue noted reasons label Mar 11, 2024
@rexemin
Copy link
Collaborator Author

rexemin commented Mar 11, 2024

Results for Jenkins.

zos_job_submit
utf8_submit

zos_copy:
utf8_copy

zos_data_set:
utf8_data_set

zos_encode, zos_fetch:
utf8_encode-fetch

zos_job_query, zos_job_output:
utf8_job_query-output

@ddimatos
Copy link
Collaborator

ddimatos commented Mar 12, 2024

@rexemin I took the latest build from ZOAU and mounted on my private DASD, I ran both a positive and negative scenario via a playbook. I checked out the source and built it then drove C program below for full coverage of a EBCDIC chars:

#include <stdio.h>int main()
{
    /* Generate and print all EBCDIC characters to stdout to
     * ensure non-printable chars can be handled by Pythhon.
     * This will included the non-printables from DBB docs:
     * nl=0x15, cr=0x0D, lf=0x25, shiftOut=0x0E, shiftIn=0x0F
    */
    for (int i = 0; i <= 255; i++) {
        printf("Hex 0x%X is character: (%c)\\\\n",i,(char)(i));
    }    return 0;
}

Both results were as expected , when I used a version older than 1.2.5.6, the exception caught prevent the module from failing and when all ebcdic chars entered the stdout stream, it functioned well.

 Conflicts:
	tests/functional/modules/test_zos_job_submit_func.py

 Changes to be committed:
	modified:   .ansible-lint
	modified:   README.md
	new file:   changelogs/fragments/1246-bugfix-zos_job_submit-typrun.yml
	new file:   changelogs/fragments/1292-doc-zos_tso_command-example.yml
	new file:   changelogs/fragments/1294-doc-zos_ping-scp.yml
	new file:   changelogs/fragments/1296-doc-sftp-collection-requirements.yml
	modified:   changelogs/fragments/v1.9.0_summary.yml
	modified:   docs/source/modules/zos_archive.rst
	modified:   docs/source/modules/zos_copy.rst
	modified:   docs/source/modules/zos_fetch.rst
	modified:   docs/source/modules/zos_job_submit.rst
	modified:   docs/source/modules/zos_ping.rst
	modified:   docs/source/modules/zos_script.rst
	modified:   docs/source/modules/zos_tso_command.rst
	modified:   docs/source/modules/zos_unarchive.rst
	modified:   docs/source/plugins.rst
	modified:   galaxy.yml
	modified:   meta/ibm_zos_core_meta.yml
	modified:   meta/runtime.yml
	modified:   plugins/module_utils/job.py
	modified:   plugins/modules/zos_copy.py
	modified:   plugins/modules/zos_fetch.py
	modified:   plugins/modules/zos_job_submit.py
	modified:   plugins/modules/zos_ping.py
	modified:   plugins/modules/zos_ping.rexx
	modified:   plugins/modules/zos_script.py
	modified:   plugins/modules/zos_tso_command.py
	modified:   plugins/modules/zos_unarchive.py
	modified:   tests/functional/modules/test_zos_job_submit_func.py
@ddimatos
Copy link
Collaborator

Output from my testing:
Testing all EBCDIC chars

'jobs': [{'asid': '0',
           'class': 'A',
           'content_type': '',
           'creation_date': '2024-03-12',
           'creation_time': '0:12:46',
           'ddnames': [{'byte_count': '133',
                        'content': ['1                       J E S 2  J O B  L O G  --  S Y S T E M  S T L 1  --  N O D E  S T L 1',
                                    '0     ',
                                    ' 00.12.46 JOB00182 ---- TUESDAY,   12 MAR 2024 ----',
                                    ' 00.12.46 JOB00182  IRR010I  USERID OMVSADM  IS ASSIGNED TO THIS JOB.',
                                    ' 00.12.46 JOB00182  $HASP375 NOEBCDIC ESTIMATED  LINES EXCEEDED',
                                    ' 00.12.46 JOB00182  ICH70001I OMVSADM  LAST ACCESS AT 00:12:44 ON TUESDAY, MARCH 12, 2024',
                                    ' 00.12.46 JOB00182  $HASP375 NOEBCDIC ESTIMATED  LINES EXCEEDED',
                                    ' 00.12.46 JOB00182  $HASP373 NOEBCDIC STARTED - INIT 8    - CLASS A        - SYS STL1',
                                    ' 00.12.47 JOB00182  SMF000I  NOEBCDIC    NOPRINT     BPXBATCH    0000',
                                    ' 00.12.47 JOB00182  $HASP395 NOEBCDIC ENDED - RC=0000',
                                    '0------ JES2 JOB STATISTICS ------',
                                    '-  12 MAR 2024 JOB EXECUTION DATE',
                                    '-           13 CARDS READ',
                                    '-          310 SYSOUT PRINT RECORDS',
                                    '-            0 SYSOUT PUNCH RECORDS',
                                    '-           14 SYSOUT SPOOL KBYTES',
                                    '-         0.02 MINUTES EXECUTION TIME'],
                        'ddname': 'JESMSGLG',
                        'id': '2',
                        'proctep': None,
                        'record_count': '17',
                        'stepname': 'JES2'},
                       {'byte_count': '136',
                        'content': ["        1 //NOEBCDIC JOB (T043JM,JM00,1,0,0,0),'NOEBCDIC - JRM',                  JOB00182",
                                    '          //             MSGCLASS=H,MSGLEVEL=1,NOTIFY=&SYSUID',
                                    "          IEFC653I SUBSTITUTION JCL - (T043JM,JM00,1,0,0,0),'NOEBCDIC - JRM',MSGCLASS=H,MSGLEVEL=1,NOTIFY=OMVSADM",
                                    '        2 //NOPRINT  EXEC PGM=BPXBATCH',
                                    '        3 //STDPARM DD *',
                                    '        4 //STDIN  DD DUMMY',
                                    '        5 //STDOUT DD SYSOUT=*',
                                    '        6 //STDERR DD SYSOUT=*',
                                    '        7 //'],
                        'ddname': 'JESJCL',
                        'id': '3',
                        'proctep': None,
                        'record_count': '9',
                        'stepname': 'JES2'},
                       {'byte_count': '137',
                        'content': [' ICH70001I OMVSADM  LAST ACCESS AT 00:12:44 ON TUESDAY, MARCH 12, 2024',
                                    ' IEF043I Actions taken by SMFLIMxx parmlib policy for NOEBCDIC NOPRINT',
                                    '         Step shared page limit set to 2147483647 by policy - SMFLIM00 0001',
                                    ' IEFA111I NOEBCDIC IS USING THE FOLLOWING JOB RELATED SETTINGS:',
                                    '          SWA=BELOW,TIOT SIZE=32K,DSENQSHR=DISALLOW,GDGBIAS=JOB',
                                    ' IEF236I ALLOC. FOR NOEBCDIC NOPRINT',
                                    ' IEF237I JES2 ALLOCATED TO STDPARM',
                                    ' IEF237I DMY  ALLOCATED TO STDIN',
                                    ' IEF237I JES2 ALLOCATED TO STDOUT',
                                    ' IEF237I JES2 ALLOCATED TO STDERR',
                                    ' IEF142I NOEBCDIC NOPRINT - STEP WAS EXECUTED - COND CODE 0000',
                                    ' IEF285I   OMVSADM.NOEBCDIC.JOB00182.D0000101.?         SYSIN',
                                    ' IEF285I   OMVSADM.NOEBCDIC.JOB00182.D0000102.?         SYSOUT',
                                    ' IEF285I   OMVSADM.NOEBCDIC.JOB00182.D0000103.?         SYSOUT',
                                    ' IEF373I STEP/NOPRINT /START 2024072.0012',
                                    ' IEF032I STEP/NOPRINT /STOP  2024072.0012',
                                    '         CPU:     0 HR  00 MIN  00.00 SEC    SRB:     0 HR  00 MIN  00.00 SEC',
                                    '         VIRT:   168K  SYS:   248K  EXT:      132K  SYS:    12152K',
                                    '         ATB- REAL:                  1032K  SLOTS:                     0K',
                                    '              VIRT- ALLOC:      11M SHRD:       0M',
                                    ' IEF375I  JOB/NOEBCDIC/START 2024072.0012',
                                    ' IEF033I  JOB/NOEBCDIC/STOP  2024072.0012',
                                    '         CPU:     0 HR  00 MIN  00.00 SEC    SRB:     0 HR  00 MIN  00.00 SEC'],
                        'ddname': 'JESYSMSG',
                        'id': '4',
                        'proctep': None,
                        'record_count': '23',
                        'stepname': 'JES2'},
                       {'byte_count': '16383',
                        'content': ['Hex 0x0 is character: (Hex 0x1 is character: ( )',
                                    'Hex 0x2 is character: ( )',
                                    'Hex 0x3 is character: ( )',
                                    'Hex 0x4 is character: ( )',
                                    'Hex 0x5 is character: (\t)',
                                    'Hex 0x6 is character: ( )',
                                    'Hex 0x7 is character: ( )',
                                    'Hex 0x8 is character: ( )',
                                    'Hex 0x9 is character: ( )',
                                    'Hex 0xA is character: ( )',
                                    'Hex 0xB is character: (\x0b)',
                                    'Hex 0xC is character: (\x0c)',
                                    'Hex 0xD is character: (\r)',
                                    'Hex 0xE is character: ( )',
                                    'Hex 0xF is character: ( )',
                                    'Hex 0x10 is character: ( )',
                                    'Hex 0x11 is character: ( )',
                                    'Hex 0x12 is character: ( )',
                                    'Hex 0x13 is character: ( )',
                                    'Hex 0x14 is character: ( )',
                                    'Hex 0x15 is character: (',
                                    ')     ',
                                    'Hex 0x16 is character: ( )',
                                    'Hex 0x17 is character: ( )',
                                    'Hex 0x18 is character: ( )',
                                    'Hex 0x19 is character: ( )',
                                    'Hex 0x1A is character: ( )',
                                    'Hex 0x1B is character: ( )',
                                    'Hex 0x1C is character: ( )',
                                    'Hex 0x1D is character: ( )',
                                    'Hex 0x1E is character: ( )',
                                    'Hex 0x1F is character: ( )',
                                    'Hex 0x20 is character: ( )',
                                    'Hex 0x21 is character: ( )',
                                    'Hex 0x22 is character: ( )',
                                    'Hex 0x23 is character: ( )',
                                    'Hex 0x24 is character: ( )',
                                    'Hex 0x25 is character: ( )',
                                    'Hex 0x26 is character: ( )',
                                    'Hex 0x27 is character: ( )',
                                    'Hex 0x28 is character: ( )',
                                    'Hex 0x29 is character: ( )',
                                    'Hex 0x2A is character: ( )',
                                    'Hex 0x2B is character: ( )',
                                    'Hex 0x2C is character: ( )',
                                    'Hex 0x2D is character: ( )',
                                    'Hex 0x2E is character: ( )',
                                    'Hex 0x2F is character: ( )',
                                    'Hex 0x30 is character: ( )',
                                    'Hex 0x31 is character: ( )',
                                    'Hex 0x32 is character: ( )',
                                    'Hex 0x33 is character: ( )',
                                    'Hex 0x34 is character: ( )',
                                    'Hex 0x35 is character: ( )',
                                    'Hex 0x36 is character: ( )',
                                    'Hex 0x37 is character: ( )',
                                    'Hex 0x38 is character: ( )',
                                    'Hex 0x39 is character: ( )',
                                    'Hex 0x3A is character: ( )',
                                    'Hex 0x3B is character: ( )',
                                    'Hex 0x3C is character: ( )',
                                    'Hex 0x3D is character: ( )',
                                    'Hex 0x3E is character: ( )',
                                    'Hex 0x3F is character: ( )',
                                    'Hex 0x40 is character: ( )',
                                    'Hex 0x41 is character: ( )',
                                    'Hex 0x42 is character: ( )',
                                    'Hex 0x43 is character: ( )',
                                    'Hex 0x44 is character: ( )',
                                    'Hex 0x45 is character: ( )',
                                    'Hex 0x46 is character: ( )',
                                    'Hex 0x47 is character: ( )',
                                    'Hex 0x48 is character: ( )',
                                    'Hex 0x49 is character: ( )',
                                    'Hex 0x4A is character: ( )',
                                    'Hex 0x4B is character: (.)',
                                    'Hex 0x4C is character: (<)',
                                    'Hex 0x4D is character: (()',
                                    'Hex 0x4E is character: (+)',
                                    'Hex 0x4F is character: (|)',
                                    'Hex 0x50 is character: (&)',
                                    'Hex 0x51 is character: ( )',
                                    'Hex 0x52 is character: ( )',
                                    'Hex 0x53 is character: ( )',
                                    'Hex 0x54 is character: ( )',
                                    'Hex 0x55 is character: ( )',
                                    'Hex 0x56 is character: ( )',
                                    'Hex 0x57 is character: ( )',
                                    'Hex 0x58 is character: ( )',
                                    'Hex 0x59 is character: ( )',
                                    'Hex 0x5A is character: (!)',
                                    'Hex 0x5B is character: ($)',
                                    'Hex 0x5C is character: (*)',
                                    'Hex 0x5D is character: ())',
                                    'Hex 0x5E is character: (;)',
                                    'Hex 0x5F is character: (^)',
                                    'Hex 0x60 is character: (-)',
                                    'Hex 0x61 is character: (/)',
                                    'Hex 0x62 is character: ( )',
                                    'Hex 0x63 is character: ( )',
                                    'Hex 0x64 is character: ( )',
                                    'Hex 0x65 is character: ( )',
                                    'Hex 0x66 is character: ( )',
                                    'Hex 0x67 is character: ( )',
                                    'Hex 0x68 is character: ( )',
                                    'Hex 0x69 is character: ( )',
                                    'Hex 0x6A is character: ( )',
                                    'Hex 0x6B is character: (,)',
                                    'Hex 0x6C is character: (%)',
                                    'Hex 0x6D is character: (_)',
                                    'Hex 0x6E is character: (>)',
                                    'Hex 0x6F is character: (?)',
                                    'Hex 0x70 is character: ( )',
                                    'Hex 0x71 is character: ( )',
                                    'Hex 0x72 is character: ( )',
                                    'Hex 0x73 is character: ( )',
                                    'Hex 0x74 is character: ( )',
                                    'Hex 0x75 is character: ( )',
                                    'Hex 0x76 is character: ( )',
                                    'Hex 0x77 is character: ( )',
                                    'Hex 0x78 is character: ( )',
                                    'Hex 0x79 is character: (`)',
                                    'Hex 0x7A is character: (:)',
                                    'Hex 0x7B is character: (#)',
                                    'Hex 0x7C is character: (@)',
                                    "Hex 0x7D is character: (')",
                                    'Hex 0x7E is character: (=)',
                                    'Hex 0x7F is character: (")',
                                    'Hex 0x80 is character: ( )',
                                    'Hex 0x81 is character: (a)',
                                    'Hex 0x82 is character: (b)',
                                    'Hex 0x83 is character: (c)',
                                    'Hex 0x84 is character: (d)',
                                    'Hex 0x85 is character: (e)',
                                    'Hex 0x86 is character: (f)',
                                    'Hex 0x87 is character: (g)',
                                    'Hex 0x88 is character: (h)',
                                    'Hex 0x89 is character: (i)',
                                    'Hex 0x8A is character: ( )',
                                    'Hex 0x8B is character: ( )',
                                    'Hex 0x8C is character: ( )',
                                    'Hex 0x8D is character: ( )',
                                    'Hex 0x8E is character: ( )',
                                    'Hex 0x8F is character: ( )',
                                    'Hex 0x90 is character: ( )',
                                    'Hex 0x91 is character: (j)',
                                    'Hex 0x92 is character: (k)',
                                    'Hex 0x93 is character: (l)',
                                    'Hex 0x94 is character: (m)',
                                    'Hex 0x95 is character: (n)',
                                    'Hex 0x96 is character: (o)',
                                    'Hex 0x97 is character: (p)',
                                    'Hex 0x98 is character: (q)',
                                    'Hex 0x99 is character: (r)',
                                    'Hex 0x9A is character: ( )',
                                    'Hex 0x9B is character: ( )',
                                    'Hex 0x9C is character: ( )',
                                    'Hex 0x9D is character: ( )',
                                    'Hex 0x9E is character: ( )',
                                    'Hex 0x9F is character: ( )',
                                    'Hex 0xA0 is character: ( )',
                                    'Hex 0xA1 is character: (~)',
                                    'Hex 0xA2 is character: (s)',
                                    'Hex 0xA3 is character: (t)',
                                    'Hex 0xA4 is character: (u)',
                                    'Hex 0xA5 is character: (v)',
                                    'Hex 0xA6 is character: (w)',
                                    'Hex 0xA7 is character: (x)',                                 
                                    'Hex 0xA8 is character: (y)',
                                    'Hex 0xA9 is character: (z)',
                                    'Hex 0xAA is character: ( )',
                                    'Hex 0xAB is character: ( )',
                                    'Hex 0xAC is character: ( )',
                                    'Hex 0xAD is character: ([)',
                                    'Hex 0xAE is character: ( )',
                                    'Hex 0xAF is character: ( )',
                                    'Hex 0xB0 is character: ( )',
                                    'Hex 0xB1 is character: ( )',
                                    'Hex 0xB2 is character: ( )',
                                    'Hex 0xB3 is character: ( )',
                                    'Hex 0xB4 is character: ( )',
                                    'Hex 0xB5 is character: ( )',
                                    'Hex 0xB6 is character: ( )',
                                    'Hex 0xB7 is character: ( )',
                                    'Hex 0xB8 is character: ( )',
                                    'Hex 0xB9 is character: ( )',
                                    'Hex 0xBA is character: ( )',
                                    'Hex 0xBB is character: ( )',
                                    'Hex 0xBC is character: ( )',
                                    'Hex 0xBD is character: (])',
                                    'Hex 0xBE is character: ( )',
                                    'Hex 0xBF is character: ( )',
                                    'Hex 0xC0 is character: ({)',
                                    'Hex 0xC1 is character: (A)',
                                    'Hex 0xC2 is character: (B)',
                                    'Hex 0xC3 is character: (C)',
                                    'Hex 0xC4 is character: (D)',
                                    'Hex 0xC5 is character: (E)',
                                    'Hex 0xC6 is character: (F)',
                                    'Hex 0xC7 is character: (G)',
                                    'Hex 0xC8 is character: (H)',
                                    'Hex 0xC9 is character: (I)',
                                    'Hex 0xCA is character: ( )',
                                    'Hex 0xCB is character: ( )',
                                    'Hex 0xCC is character: ( )',
                                    'Hex 0xCD is character: ( )',
                                    'Hex 0xCE is character: ( )',
                                    'Hex 0xCF is character: ( )',
                                    'Hex 0xD0 is character: (})',
                                    'Hex 0xD1 is character: (J)',
                                    'Hex 0xD2 is character: (K)',
                                    'Hex 0xD3 is character: (L)',
                                    'Hex 0xD4 is character: (M)',
                                    'Hex 0xD5 is character: (N)',
                                    'Hex 0xD6 is character: (O)',
                                    'Hex 0xD7 is character: (P)',
                                    'Hex 0xD8 is character: (Q)',
                                    'Hex 0xD9 is character: (R)',
                                    'Hex 0xDA is character: ( )',
                                    'Hex 0xDB is character: ( )',
                                    'Hex 0xDC is character: ( )',
                                    'Hex 0xDD is character: ( )',
                                    'Hex 0xDE is character: ( )',
                                    'Hex 0xDF is character: ( )',
                                    'Hex 0xE0 is character: (\\)',
                                    'Hex 0xE1 is character: ( )',
                                    'Hex 0xE2 is character: (S)',
                                    'Hex 0xE3 is character: (T)',
                                    'Hex 0xE4 is character: (U)',
                                    'Hex 0xE5 is character: (V)',
                                    'Hex 0xE6 is character: (W)',
                                    'Hex 0xE7 is character: (X)',
                                    'Hex 0xE8 is character: (Y)',
                                    'Hex 0xE9 is character: (Z)',
                                    'Hex 0xEA is character: ( )',
                                    'Hex 0xEB is character: ( )',
                                    'Hex 0xEC is character: ( )',
                                    'Hex 0xED is character: ( )',
                                    'Hex 0xEE is character: ( )',
                                    'Hex 0xEF is character: ( )',
                                    'Hex 0xF0 is character: (0)',
                                    'Hex 0xF1 is character: (1)',
                                    'Hex 0xF2 is character: (2)',
                                    'Hex 0xF3 is character: (3)',
                                    'Hex 0xF4 is character: (4)',
                                    'Hex 0xF5 is character: (5)',
                                    'Hex 0xF6 is character: (6)',
                                    'Hex 0xF7 is character: (7)',
                                    'Hex 0xF8 is character: (8)',
                                    'Hex 0xF9 is character: (9)',
                                    'Hex 0xFA is character: ( )',
                                    'Hex 0xFB is character: ( )',
                                    'Hex 0xFC is character: ( )',
                                    'Hex 0xFD is character: ( )',
                                    'Hex 0xFE is character: ( )',
                                    'Hex 0xFF is character: ( )'],
                        'ddname': 'STDOUT',
                        'id': '102',
                        'proctep': None,
                        'record_count': '257',
                        'stepname': 'NOPRINT'}],
           'duration': 5,
           'job_class': 'A',
           'job_id': 'JOB00182',
           'job_name': 'NOEBCDIC',
           'owner': 'OMVSADM',
           'priority': '1',
           'program_name': 'BPXBATCH',
           'queue_position': '59',
           'ret_code': {'code': 0,
                        'msg': 'CC',
                        'msg_code': '0000',
                        'msg_txt': 'CC',
                        'steps': [{'step_cc': 0, 'step_name': 'NOPRINT'}]},
           'subsystem': 'STL1',
           'svc_class': '?',
           'system': 'STL1'}],
 'mode': '0600',
 'owner': 'BPXROOT',
 'size': 720,
 'src': '/.ansible/tmp/ansible-tmp-1710227539.502474-30228-3301090042861/source',
 'state': 'file',
 'uid': 0}

Testing the negative path where non-printable chars are not supported.

{
   "dest":"/tmp/ansible.au04413k",
   "is_binary":false,
   "changed":true,
   "invocation":{
      "module_args":{
         "src":"/tmp/ansible.au04413k",
         "location":"LOCAL",
         "wait_time_s":15,
         "wait":false,
         "return_output":true,
         "use_template":false,
         "encoding":"None",
         "volume":"None",
         "max_rc":"None",
         "template_parameters":"None",
         "from_encoding":"UTF-8",
         "to_encoding":"IBM-1047"
      }
   },
   "src":"/.ansible/tmp/ansible-tmp-1710227795.392998-32381-206367704712105/source",
   "gid":1,
   "uid":0,
   "group":"OMVSGRP",
   "owner":"BPXROOT",
   "mode":"0600",
   "state":"file",
   "size":720,
   "duration":5,
   "jobs":[
      {
         "job_id":"JOB00185",
         "job_name":"NOEBCDIC",
         "subsystem":"STL1",
         "system":"STL1",
         "owner":"OMVSADM",
         "ret_code":{
            "msg":"CC",
            "msg_code":"0000",
            "code":0,
            "msg_txt":"CC",
            "steps":[
               {
                  "step_name":"NOPRINT",
                  "step_cc":0
               }
            ]
         },
         "job_class":"A",
         "svc_class":"?",
         "priority":"1",
         "asid":"0",
         "creation_date":"2024-03-12",
         "creation_time":"0:16:56",
         "queue_position":"59",
         "program_name":"BPXBATCH",
         "class":"A",
         "content_type":"",
         "ddnames":[
            {
               "ddname":"JESMSGLG",
               "record_count":"17",
               "id":"2",
               "stepname":"JES2",
               "proctep":"None",
               "byte_count":"133",
               "content":[
                  "1                       J E S 2  J O B  L O G  --  S Y S T E M  S T L 1  --  N O D E  S T L 1",
                  "0     ",
                  " 00.16.56 JOB00185 ---- TUESDAY,   12 MAR 2024 ----",
                  " 00.16.56 JOB00185  IRR010I  USERID OMVSADM  IS ASSIGNED TO THIS JOB.",
                  " 00.16.56 JOB00185  $HASP375 NOEBCDIC ESTIMATED  LINES EXCEEDED",
                  " 00.16.56 JOB00185  ICH70001I OMVSADM  LAST ACCESS AT 00:16:54 ON TUESDAY, MARCH 12, 2024",
                  " 00.16.56 JOB00185  $HASP375 NOEBCDIC ESTIMATED  LINES EXCEEDED",
                  " 00.16.56 JOB00185  $HASP373 NOEBCDIC STARTED - INIT 8    - CLASS A        - SYS STL1",
                  " 00.16.58 JOB00185  SMF000I  NOEBCDIC    NOPRINT     BPXBATCH    0000",
                  " 00.16.58 JOB00185  $HASP395 NOEBCDIC ENDED - RC=0000",
                  "0------ JES2 JOB STATISTICS ------",
                  "-  12 MAR 2024 JOB EXECUTION DATE",
                  "-           13 CARDS READ",
                  "-          310 SYSOUT PRINT RECORDS",
                  "-            0 SYSOUT PUNCH RECORDS",
                  "-           14 SYSOUT SPOOL KBYTES",
                  "-         0.02 MINUTES EXECUTION TIME"
               ]
            },
            {
               "ddname":"JESJCL",
               "record_count":"9",
               "id":"3",
               "stepname":"JES2",
               "proctep":"None",
               "byte_count":"136",
               "content":[
                  "        1 //NOEBCDIC JOB (T043JM,JM00,1,0,0,0),'NOEBCDIC - JRM',                  JOB00185",
                  "          //             MSGCLASS=H,MSGLEVEL=1,NOTIFY=&SYSUID",
                  "          IEFC653I SUBSTITUTION JCL - (T043JM,JM00,1,0,0,0),'NOEBCDIC - JRM',MSGCLASS=H,MSGLEVEL=1,NOTIFY=OMVSADM",
                  "        2 //NOPRINT  EXEC PGM=BPXBATCH",
                  "        3 //STDPARM DD *",
                  "        4 //STDIN  DD DUMMY",
                  "        5 //STDOUT DD SYSOUT=*",
                  "        6 //STDERR DD SYSOUT=*",
                  "        7 //"
               ]
            },
            {
               "ddname":"JESYSMSG",
               "record_count":"23",
               "id":"4",
               "stepname":"JES2",
               "proctep":"None",
               "byte_count":"137",
               "content":[
                  " ICH70001I OMVSADM  LAST ACCESS AT 00:16:54 ON TUESDAY, MARCH 12, 2024",
                  " IEF043I Actions taken by SMFLIMxx parmlib policy for NOEBCDIC NOPRINT",
                  "         Step shared page limit set to 2147483647 by policy - SMFLIM00 0001",
                  " IEFA111I NOEBCDIC IS USING THE FOLLOWING JOB RELATED SETTINGS:",
                  "          SWA=BELOW,TIOT SIZE=32K,DSENQSHR=DISALLOW,GDGBIAS=JOB",
                  " IEF236I ALLOC. FOR NOEBCDIC NOPRINT",
                  " IEF237I JES2 ALLOCATED TO STDPARM",
                  " IEF237I DMY  ALLOCATED TO STDIN",
                  " IEF237I JES2 ALLOCATED TO STDOUT",
                  " IEF237I JES2 ALLOCATED TO STDERR",
                  " IEF142I NOEBCDIC NOPRINT - STEP WAS EXECUTED - COND CODE 0000",
                  " IEF285I   OMVSADM.NOEBCDIC.JOB00185.D0000101.?         SYSIN",
                  " IEF285I   OMVSADM.NOEBCDIC.JOB00185.D0000102.?         SYSOUT",
                  " IEF285I   OMVSADM.NOEBCDIC.JOB00185.D0000103.?         SYSOUT",
                  " IEF373I STEP/NOPRINT /START 2024072.0016",
                  " IEF032I STEP/NOPRINT /STOP  2024072.0016",
                  "         CPU:     0 HR  00 MIN  00.00 SEC    SRB:     0 HR  00 MIN  00.00 SEC",
                  "         VIRT:   168K  SYS:   248K  EXT:      132K  SYS:    12152K",
                  "         ATB- REAL:                  1032K  SLOTS:                     0K",
                  "              VIRT- ALLOC:      11M SHRD:       0M",
                  " IEF375I  JOB/NOEBCDIC/START 2024072.0016",
                  " IEF033I  JOB/NOEBCDIC/STOP  2024072.0016",
                  "         CPU:     0 HR  00 MIN  00.00 SEC    SRB:     0 HR  00 MIN  00.00 SEC"
               ]
            },
            {
               "ddname":"STDOUT",
               "record_count":"257",
               "id":"102",
               "stepname":"NOPRINT",
               "proctep":"None",
               "byte_count":"16383",
               "content":[
                  "Non-printable UTF-8 characters were present in this output. Please access it manually."
               ]
            }
         ],
         "duration":5
      }
   ],
   "_ansible_no_log":false
}

@rexemin rexemin merged commit 58c9489 into staging-v1.9.0 Mar 12, 2024
@rexemin rexemin deleted the utf-8-cherry-picked-v1.9.0 branch March 12, 2024 19:43
@rexemin rexemin linked an issue Mar 12, 2024 that may be closed by this pull request
1 task
@rexemin rexemin removed the Do not Merge When a pull request should not be merged for issue noted reasons label Mar 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Enabler] Support non-printable UTF-8 chars
4 participants