From 8ee03ac0323312d7ce5cdd2660d26cf2e5e02e5e Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Tue, 26 May 2020 15:56:55 -0400 Subject: [PATCH 01/12] reorg content Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- ...Programming Course #1 - Getting Started.md | 0 .../Front_Matter.tex | 0 .../Images}/CircleCI-pipeline.png | Bin .../Images}/code4z-img1.png | Bin .../Images}/code4z-img10.png | Bin .../Images}/code4z-img11.png | Bin .../Images}/code4z-img12-18.png | Bin .../Images}/code4z-img13-19.png | Bin .../Images}/code4z-img14-20.png | Bin .../Images}/code4z-img15.png | Bin .../Images}/code4z-img16.png | Bin .../Images}/code4z-img17.png | Bin .../Images}/code4z-img2.png | Bin .../Images}/code4z-img21.png | Bin .../Images}/code4z-img22.png | Bin .../Images}/code4z-img23.png | Bin .../Images}/code4z-img24-27.png | Bin .../Images}/code4z-img25-28.png | Bin .../Images}/code4z-img26.png | Bin .../Images}/code4z-img3.png | Bin .../Images}/code4z-img4.png | Bin .../Images}/code4z-img5.PNG | Bin .../Images}/code4z-img6.png | Bin .../Images}/code4z-img7.png | Bin .../Images}/code4z-img8.jpg | Bin .../Images}/code4z-img9.png | Bin .../Images}/cover.png | Bin .../Images}/create-and-set-zosmf-profile.png | Bin .../Images}/image000.png | Bin .../Images}/image001.png | Bin .../Images}/image002.png | Bin .../Images}/image003.png | Bin .../Images}/image004.jpg | Bin .../Images}/image005.png | Bin .../Images}/image006.png | Bin .../Images}/image007.png | Bin .../Images}/image008.png | Bin .../Images}/image009.png | Bin .../Images}/image010.png | Bin .../Images}/image011.png | Bin .../Images}/image012.png | Bin .../Images}/image013.png | Bin .../Images}/image014.png | Bin .../Images}/image015.png | Bin .../Images}/image016.png | Bin .../Images}/image017.png | Bin .../Images}/image018.png | Bin .../Images}/image019.png | Bin .../Images}/image020.png | Bin .../Images}/image021.png | Bin .../Images}/image022.png | Bin .../Images}/image023.png | Bin .../Images}/image024.png | Bin .../Images}/image025.png | Bin .../Images}/image026.png | Bin .../Images}/image027.png | Bin .../Images}/image028.png | Bin .../Images}/image029.png | Bin .../Images}/image030.jpg | Bin .../Images}/image031.png | Bin .../Images}/image032.jpg | Bin .../Images}/image033.jpg | Bin .../Images}/image034.png | Bin .../Images}/image035.png | Bin .../Images}/image036.png | Bin .../Images}/image037.png | Bin .../Images}/image038.png | Bin .../Images}/image039.png | Bin .../Images}/image040.png | Bin .../Images}/image041.png | Bin .../Images}/image042.png | Bin .../Images}/image043.png | Bin .../Images}/image044.png | Bin .../Images}/image044b.png | Bin .../Images}/image045.png | Bin .../Images}/image046.png | Bin .../Images}/image047.png | Bin .../Images}/image048.png | Bin .../Images}/image049.png | Bin .../Images}/image050.jpg | Bin .../Images}/image051.png | Bin .../Images}/image052.png | Bin .../Images}/image053.jpg | Bin .../Images}/image054.png | Bin .../Images}/image055.png | Bin .../Images}/image056.jpg | Bin .../Images}/image057.png | Bin .../Images}/image058.jpg | Bin .../Images}/image059.png | Bin .../Images}/image060.png | Bin .../Images}/image061.jpg | Bin .../Images}/image062.png | Bin .../Images}/image063.png | Bin .../Images}/image064.jpg | Bin .../Images}/image065.png | Bin .../Images}/image066.png | Bin .../Images}/image067.jpg | Bin .../Images}/image068.png | Bin .../Images}/image069.png | Bin .../Images}/image070.jpg | Bin .../Images}/image071.png | Bin .../Images}/image072.png | Bin .../Images}/image073.png | Bin .../Images}/image074.png | Bin .../Images}/image075.png | Bin .../Images}/image076.png | Bin .../Images}/image077.png | Bin .../Images}/image078.jpg | Bin .../Images}/image079.png | Bin .../Images}/image080.jpg | Bin .../Images}/image081.png | Bin .../Images}/image082.jpg | Bin .../Images}/image083.png | Bin .../Images}/image084.jpg | Bin .../Images}/image085.png | Bin .../Images}/image086.jpg | Bin .../Images}/image087.png | Bin .../Images}/image088.jpg | Bin .../Images}/image089.png | Bin .../Images}/image090.jpg | Bin .../Images}/image090.png | Bin .../Images}/image091.png | Bin .../Images}/image092.png | Bin .../Images}/image093.jpg | Bin .../Images}/image094.png | Bin .../Images}/image095.jpg | Bin .../Images}/image096.png | Bin .../Images}/image097.jpg | Bin .../Images}/image098.jpg | Bin .../Images}/image099.png | Bin .../Images}/image100.jpg | Bin .../Images}/image101.png | Bin .../Images}/image102.jpg | Bin .../Images}/image103.png | Bin .../Images}/image104.jpg | Bin .../Images}/image105.png | Bin .../Images}/image106.jpg | Bin .../Images}/image107.jpg | Bin .../Images}/image108.jpg | Bin .../Images}/image109.png | Bin .../Images}/image110.png | Bin .../Images}/image111.png | Bin .../Images}/image112.png | Bin .../Images}/image113.png | Bin .../Images}/image114.png | Bin .../Images}/image115.png | Bin .../Images}/image116.png | Bin .../Images}/image117.png | Bin .../Images}/image118.png | Bin .../Images}/image119.png | Bin .../Images}/image120.png | Bin .../Images}/image121.png | Bin .../Images}/image122.png | Bin .../Images}/image123.png | Bin .../Images}/image124.png | Bin .../Images}/image125.jpg | Bin .../Images}/image126.jpg | Bin .../Images}/image127.jpg | Bin .../Images}/image128.jpg | Bin .../Images}/image129.jpg | Bin .../Images}/image130.jpg | Bin .../Images}/image131.jpg | Bin .../Images}/image132.png | Bin .../Images}/image133.png | Bin .../Images}/image134.png | Bin .../Images}/image135.png | Bin .../Images}/image136.png | Bin .../Images}/image137.png | Bin .../Images}/image138.png | Bin .../Images}/image139.png | Bin .../Images}/image140.png | Bin .../Images}/image141.jpg | Bin .../Images}/image142.jpg | Bin .../Images}/image143.png | Bin .../Images}/image144.jpg | Bin .../Images}/image145.jpg | Bin .../Images}/image146.png | Bin .../Images}/image147.png | Bin .../Images}/image148.png | Bin .../Images}/image149.jpg | Bin .../Images}/image150.jpg | Bin .../Images}/image151.png | Bin .../Images}/image152.png | Bin .../Images}/image153.png | Bin .../Images}/image154.png | Bin .../Images}/image155.png | Bin .../Images}/image156.png | Bin .../Images}/image157.png | Bin .../Images}/image158.png | Bin .../Images}/image159.jpg | Bin .../Images}/image160.png | Bin .../Images}/image161.jpg | Bin .../Images}/image162.jpg | Bin .../Images}/image163.jpg | Bin .../Images}/image164.png | Bin .../Images}/image165.png | Bin .../Images}/image166.png | Bin .../Images}/image167.png | Bin .../Images}/image168.png | Bin .../Images}/image169.png | Bin .../Images}/image170.jpg | Bin .../Images}/image171.png | Bin .../Images}/image172.jpg | Bin .../Images}/image173.jpg | Bin .../Images}/image174.jpg | Bin .../Images}/image175.jpg | Bin .../Images}/image176.jpg | Bin .../Images}/image177.jpg | Bin .../Images}/image178.jpg | Bin .../Images}/image179.jpg | Bin .../Images}/image180.jpg | Bin .../Images}/image181.jpg | Bin .../Images}/image182.jpg | Bin .../Images}/image183.jpg | Bin .../Images}/image184.jpg | Bin .../Images}/image185.jpg | Bin .../Images}/image186.jpg | Bin .../Images}/image187.jpg | Bin .../Images}/image188.jpg | Bin .../Images}/image189.jpg | Bin .../Images}/image190.jpg | Bin .../Images}/image191.jpg | Bin .../Images}/image192.jpg | Bin .../Images}/image193.jpg | Bin .../Images}/image194.jpg | Bin .../Images}/image195.jpg | Bin .../Images}/image196.jpg | Bin .../Images}/image197.jpg | Bin .../Images}/image198.jpg | Bin .../Images}/image199.jpg | Bin .../Images}/image200.jpg | Bin .../Images}/image201.jpg | Bin .../Images}/image202.jpg | Bin .../Images}/image203.jpg | Bin .../Images}/image204.jpg | Bin .../Images}/image205.jpg | Bin .../Images}/image206.jpg | Bin .../Images}/image207.jpg | Bin .../Images}/image208.png | Bin .../Images}/images.md | 0 .../Images}/npm-init-example.png | Bin .../Images}/npm-run-clg-button.png | Bin .../Images}/npm-run-clg.png | Bin .../npm-script-button-click-and-run.png | Bin .../Images}/one-click-cobol-build.png | Bin .../Images}/sample-config-json.png | Bin .../Images}/sample-package-json.png | Bin .../Images}/script-to-submit-job-check-rc.png | Bin .../Images}/vscode-add-folder.png | Bin .../Images}/zowe-cli-help.png | Bin .../Images}/zowe-cli-response-format-json.png | Bin .../Images}/zowe-cli-version.png | Bin .../Images}/zowe-cli-web-help.png | Bin .../Images}/zowe-cli-zos-files-actions.png | Bin .../zowe-cli-zos-files-list-ds-command.png | Bin .../Images}/zowe-cli-zos-jobs-actions.png | Bin .../zowe-cli-zos-jobs-submit-ds-command.png | Bin ...owe-cli-zosmf-profile-creation-command.png | Bin .../Images}/zowe-files-download-am.png | Bin .../zowe-files-list-ds-and-am-commands.png | Bin ...bs-submit-ds-and-download-spool-output.png | Bin ...e-jobs-submit-ds-and-view-spool-output.png | Bin .../Images}/zowe-jobs-submit-ds-rfj.png | Bin .../Labs}/README.md | 0 .../Labs}/cbl/ADDAMT.cobol | 0 .../Labs}/cbl/CBL0001.cobol | 0 .../Labs}/cbl/CBL0002.cobol | 0 .../Labs}/cbl/CBL0004.cobol | 0 .../Labs}/cbl/CBL0005.cobol | 0 .../Labs}/cbl/CBL0006.cobol | 0 .../Labs}/cbl/CBL0007.cobol | 0 .../Labs}/cbl/CBL0008.cobol | 0 .../Labs}/cbl/CBL0009.cobol | 0 .../Labs}/cbl/CBL0010.cobol | 0 .../Labs}/cbl/CBL0011.cobol | 0 .../Labs}/cbl/CBL0012.cobol | 0 .../Labs}/cbl/COBOL.cobol | 0 .../Labs}/cbl/HELLO.cobol | 0 .../Labs}/cbl/PAYROL00.cobol | 0 .../Labs}/cbl/PAYROL0X.cobol | 0 .../Labs}/data/data | Bin .../Labs}/data/xdata | Bin .../Labs}/jcl/ADDAMT.jcl | 0 .../Labs}/jcl/CBL0001J.jcl | 0 .../Labs}/jcl/CBL0002J.jcl | 0 .../Labs}/jcl/CBL0003J.jcl | 0 .../Labs}/jcl/CBL0004J.jcl | 0 .../Labs}/jcl/CBL0005J.jcl | 0 .../Labs}/jcl/CBL0006J.jcl | 0 .../Labs}/jcl/CBL0007J.jcl | 0 .../Labs}/jcl/CBL0008J.jcl | 0 .../Labs}/jcl/CBL0009J.jcl | 0 .../Labs}/jcl/CBL0010J.jcl | 0 .../Labs}/jcl/CBL0011J.jcl | 0 .../Labs}/jcl/CBL0012J.jcl | 0 .../Labs}/jcl/COBRUN.jcl | 0 .../Labs}/jcl/HELLO.jcl | 0 .../Labs}/jcl/PAYROL00.jcl | 0 .../Labs}/jcl/PAYROL0X.jcl | 0 .../Labs}/jclproc/IGYWC.jcl | 0 .../Labs}/jclproc/IGYWCL.jcl | 0 .../Labs}/jclproc/IGYWCLG.jcl | 0 .../README.md | 59 ++++++++++++++++++ README.md | 12 +--- 304 files changed, 62 insertions(+), 9 deletions(-) rename COBOL Programming with VSCode.md => COBOL Programming Course #1 - Getting Started/COBOL Programming Course #1 - Getting Started.md (100%) mode change 100755 => 100644 rename Front_Matter.tex => COBOL Programming Course #1 - Getting Started/Front_Matter.tex (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/CircleCI-pipeline.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img1.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img10.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img11.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img12-18.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img13-19.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img14-20.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img15.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img16.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img17.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img2.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img21.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img22.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img23.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img24-27.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img25-28.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img26.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img3.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img4.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img5.PNG (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img6.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img7.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img8.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/code4z-img9.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/cover.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/create-and-set-zosmf-profile.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image000.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image001.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image002.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image003.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image004.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image005.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image006.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image007.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image008.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image009.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image010.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image011.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image012.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image013.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image014.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image015.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image016.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image017.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image018.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image019.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image020.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image021.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image022.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image023.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image024.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image025.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image026.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image027.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image028.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image029.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image030.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image031.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image032.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image033.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image034.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image035.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image036.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image037.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image038.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image039.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image040.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image041.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image042.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image043.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image044.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image044b.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image045.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image046.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image047.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image048.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image049.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image050.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image051.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image052.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image053.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image054.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image055.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image056.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image057.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image058.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image059.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image060.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image061.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image062.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image063.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image064.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image065.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image066.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image067.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image068.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image069.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image070.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image071.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image072.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image073.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image074.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image075.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image076.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image077.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image078.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image079.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image080.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image081.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image082.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image083.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image084.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image085.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image086.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image087.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image088.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image089.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image090.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image090.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image091.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image092.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image093.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image094.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image095.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image096.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image097.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image098.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image099.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image100.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image101.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image102.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image103.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image104.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image105.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image106.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image107.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image108.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image109.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image110.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image111.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image112.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image113.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image114.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image115.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image116.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image117.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image118.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image119.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image120.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image121.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image122.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image123.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image124.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image125.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image126.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image127.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image128.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image129.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image130.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image131.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image132.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image133.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image134.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image135.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image136.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image137.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image138.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image139.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image140.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image141.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image142.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image143.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image144.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image145.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image146.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image147.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image148.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image149.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image150.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image151.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image152.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image153.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image154.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image155.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image156.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image157.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image158.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image159.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image160.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image161.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image162.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image163.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image164.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image165.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image166.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image167.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image168.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image169.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image170.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image171.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image172.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image173.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image174.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image175.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image176.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image177.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image178.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image179.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image180.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image181.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image182.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image183.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image184.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image185.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image186.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image187.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image188.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image189.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image190.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image191.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image192.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image193.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image194.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image195.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image196.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image197.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image198.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image199.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image200.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image201.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image202.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image203.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image204.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image205.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image206.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image207.jpg (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/image208.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/images.md (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/npm-init-example.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/npm-run-clg-button.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/npm-run-clg.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/npm-script-button-click-and-run.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/one-click-cobol-build.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/sample-config-json.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/sample-package-json.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/script-to-submit-job-check-rc.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/vscode-add-folder.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-cli-help.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-cli-response-format-json.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-cli-version.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-cli-web-help.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-cli-zos-files-actions.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-cli-zos-files-list-ds-command.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-cli-zos-jobs-actions.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-cli-zos-jobs-submit-ds-command.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-cli-zosmf-profile-creation-command.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-files-download-am.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-files-list-ds-and-am-commands.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-jobs-submit-ds-and-download-spool-output.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-jobs-submit-ds-and-view-spool-output.png (100%) rename {Images => COBOL Programming Course #1 - Getting Started/Images}/zowe-jobs-submit-ds-rfj.png (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/README.md (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/ADDAMT.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0001.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0002.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0004.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0005.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0006.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0007.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0008.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0009.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0010.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0011.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/CBL0012.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/COBOL.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/HELLO.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/PAYROL00.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/cbl/PAYROL0X.cobol (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/data/data (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/data/xdata (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/ADDAMT.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0001J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0002J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0003J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0004J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0005J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0006J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0007J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0008J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0009J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0010J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0011J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/CBL0012J.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/COBRUN.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/HELLO.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/PAYROL00.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jcl/PAYROL0X.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jclproc/IGYWC.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jclproc/IGYWCL.jcl (100%) rename {Labs => COBOL Programming Course #1 - Getting Started/Labs}/jclproc/IGYWCLG.jcl (100%) create mode 100644 COBOL Programming Course #1 - Getting Started/README.md diff --git a/COBOL Programming with VSCode.md b/COBOL Programming Course #1 - Getting Started/COBOL Programming Course #1 - Getting Started.md old mode 100755 new mode 100644 similarity index 100% rename from COBOL Programming with VSCode.md rename to COBOL Programming Course #1 - Getting Started/COBOL Programming Course #1 - Getting Started.md diff --git a/Front_Matter.tex b/COBOL Programming Course #1 - Getting Started/Front_Matter.tex similarity index 100% rename from Front_Matter.tex rename to COBOL Programming Course #1 - Getting Started/Front_Matter.tex diff --git a/Images/CircleCI-pipeline.png b/COBOL Programming Course #1 - Getting Started/Images/CircleCI-pipeline.png similarity index 100% rename from Images/CircleCI-pipeline.png rename to COBOL Programming Course #1 - Getting Started/Images/CircleCI-pipeline.png diff --git a/Images/code4z-img1.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img1.png similarity index 100% rename from Images/code4z-img1.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img1.png diff --git a/Images/code4z-img10.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img10.png similarity index 100% rename from Images/code4z-img10.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img10.png diff --git a/Images/code4z-img11.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img11.png similarity index 100% rename from Images/code4z-img11.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img11.png diff --git a/Images/code4z-img12-18.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img12-18.png similarity index 100% rename from Images/code4z-img12-18.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img12-18.png diff --git a/Images/code4z-img13-19.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img13-19.png similarity index 100% rename from Images/code4z-img13-19.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img13-19.png diff --git a/Images/code4z-img14-20.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img14-20.png similarity index 100% rename from Images/code4z-img14-20.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img14-20.png diff --git a/Images/code4z-img15.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img15.png similarity index 100% rename from Images/code4z-img15.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img15.png diff --git a/Images/code4z-img16.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img16.png similarity index 100% rename from Images/code4z-img16.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img16.png diff --git a/Images/code4z-img17.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img17.png similarity index 100% rename from Images/code4z-img17.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img17.png diff --git a/Images/code4z-img2.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img2.png similarity index 100% rename from Images/code4z-img2.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img2.png diff --git a/Images/code4z-img21.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img21.png similarity index 100% rename from Images/code4z-img21.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img21.png diff --git a/Images/code4z-img22.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img22.png similarity index 100% rename from Images/code4z-img22.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img22.png diff --git a/Images/code4z-img23.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img23.png similarity index 100% rename from Images/code4z-img23.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img23.png diff --git a/Images/code4z-img24-27.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img24-27.png similarity index 100% rename from Images/code4z-img24-27.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img24-27.png diff --git a/Images/code4z-img25-28.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img25-28.png similarity index 100% rename from Images/code4z-img25-28.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img25-28.png diff --git a/Images/code4z-img26.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img26.png similarity index 100% rename from Images/code4z-img26.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img26.png diff --git a/Images/code4z-img3.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img3.png similarity index 100% rename from Images/code4z-img3.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img3.png diff --git a/Images/code4z-img4.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img4.png similarity index 100% rename from Images/code4z-img4.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img4.png diff --git a/Images/code4z-img5.PNG b/COBOL Programming Course #1 - Getting Started/Images/code4z-img5.PNG similarity index 100% rename from Images/code4z-img5.PNG rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img5.PNG diff --git a/Images/code4z-img6.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img6.png similarity index 100% rename from Images/code4z-img6.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img6.png diff --git a/Images/code4z-img7.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img7.png similarity index 100% rename from Images/code4z-img7.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img7.png diff --git a/Images/code4z-img8.jpg b/COBOL Programming Course #1 - Getting Started/Images/code4z-img8.jpg similarity index 100% rename from Images/code4z-img8.jpg rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img8.jpg diff --git a/Images/code4z-img9.png b/COBOL Programming Course #1 - Getting Started/Images/code4z-img9.png similarity index 100% rename from Images/code4z-img9.png rename to COBOL Programming Course #1 - Getting Started/Images/code4z-img9.png diff --git a/Images/cover.png b/COBOL Programming Course #1 - Getting Started/Images/cover.png similarity index 100% rename from Images/cover.png rename to COBOL Programming Course #1 - Getting Started/Images/cover.png diff --git a/Images/create-and-set-zosmf-profile.png b/COBOL Programming Course #1 - Getting Started/Images/create-and-set-zosmf-profile.png similarity index 100% rename from Images/create-and-set-zosmf-profile.png rename to COBOL Programming Course #1 - Getting Started/Images/create-and-set-zosmf-profile.png diff --git a/Images/image000.png b/COBOL Programming Course #1 - Getting Started/Images/image000.png similarity index 100% rename from Images/image000.png rename to COBOL Programming Course #1 - Getting Started/Images/image000.png diff --git a/Images/image001.png b/COBOL Programming Course #1 - Getting Started/Images/image001.png similarity index 100% rename from Images/image001.png rename to COBOL Programming Course #1 - Getting Started/Images/image001.png diff --git a/Images/image002.png b/COBOL Programming Course #1 - Getting Started/Images/image002.png similarity index 100% rename from Images/image002.png rename to COBOL Programming Course #1 - Getting Started/Images/image002.png diff --git a/Images/image003.png b/COBOL Programming Course #1 - Getting Started/Images/image003.png similarity index 100% rename from Images/image003.png rename to COBOL Programming Course #1 - Getting Started/Images/image003.png diff --git a/Images/image004.jpg b/COBOL Programming Course #1 - Getting Started/Images/image004.jpg similarity index 100% rename from Images/image004.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image004.jpg diff --git a/Images/image005.png b/COBOL Programming Course #1 - Getting Started/Images/image005.png similarity index 100% rename from Images/image005.png rename to COBOL Programming Course #1 - Getting Started/Images/image005.png diff --git a/Images/image006.png b/COBOL Programming Course #1 - Getting Started/Images/image006.png similarity index 100% rename from Images/image006.png rename to COBOL Programming Course #1 - Getting Started/Images/image006.png diff --git a/Images/image007.png b/COBOL Programming Course #1 - Getting Started/Images/image007.png similarity index 100% rename from Images/image007.png rename to COBOL Programming Course #1 - Getting Started/Images/image007.png diff --git a/Images/image008.png b/COBOL Programming Course #1 - Getting Started/Images/image008.png similarity index 100% rename from Images/image008.png rename to COBOL Programming Course #1 - Getting Started/Images/image008.png diff --git a/Images/image009.png b/COBOL Programming Course #1 - Getting Started/Images/image009.png similarity index 100% rename from Images/image009.png rename to COBOL Programming Course #1 - Getting Started/Images/image009.png diff --git a/Images/image010.png b/COBOL Programming Course #1 - Getting Started/Images/image010.png similarity index 100% rename from Images/image010.png rename to COBOL Programming Course #1 - Getting Started/Images/image010.png diff --git a/Images/image011.png b/COBOL Programming Course #1 - Getting Started/Images/image011.png similarity index 100% rename from Images/image011.png rename to COBOL Programming Course #1 - Getting Started/Images/image011.png diff --git a/Images/image012.png b/COBOL Programming Course #1 - Getting Started/Images/image012.png similarity index 100% rename from Images/image012.png rename to COBOL Programming Course #1 - Getting Started/Images/image012.png diff --git a/Images/image013.png b/COBOL Programming Course #1 - Getting Started/Images/image013.png similarity index 100% rename from Images/image013.png rename to COBOL Programming Course #1 - Getting Started/Images/image013.png diff --git a/Images/image014.png b/COBOL Programming Course #1 - Getting Started/Images/image014.png similarity index 100% rename from Images/image014.png rename to COBOL Programming Course #1 - Getting Started/Images/image014.png diff --git a/Images/image015.png b/COBOL Programming Course #1 - Getting Started/Images/image015.png similarity index 100% rename from Images/image015.png rename to COBOL Programming Course #1 - Getting Started/Images/image015.png diff --git a/Images/image016.png b/COBOL Programming Course #1 - Getting Started/Images/image016.png similarity index 100% rename from Images/image016.png rename to COBOL Programming Course #1 - Getting Started/Images/image016.png diff --git a/Images/image017.png b/COBOL Programming Course #1 - Getting Started/Images/image017.png similarity index 100% rename from Images/image017.png rename to COBOL Programming Course #1 - Getting Started/Images/image017.png diff --git a/Images/image018.png b/COBOL Programming Course #1 - Getting Started/Images/image018.png similarity index 100% rename from Images/image018.png rename to COBOL Programming Course #1 - Getting Started/Images/image018.png diff --git a/Images/image019.png b/COBOL Programming Course #1 - Getting Started/Images/image019.png similarity index 100% rename from Images/image019.png rename to COBOL Programming Course #1 - Getting Started/Images/image019.png diff --git a/Images/image020.png b/COBOL Programming Course #1 - Getting Started/Images/image020.png similarity index 100% rename from Images/image020.png rename to COBOL Programming Course #1 - Getting Started/Images/image020.png diff --git a/Images/image021.png b/COBOL Programming Course #1 - Getting Started/Images/image021.png similarity index 100% rename from Images/image021.png rename to COBOL Programming Course #1 - Getting Started/Images/image021.png diff --git a/Images/image022.png b/COBOL Programming Course #1 - Getting Started/Images/image022.png similarity index 100% rename from Images/image022.png rename to COBOL Programming Course #1 - Getting Started/Images/image022.png diff --git a/Images/image023.png b/COBOL Programming Course #1 - Getting Started/Images/image023.png similarity index 100% rename from Images/image023.png rename to COBOL Programming Course #1 - Getting Started/Images/image023.png diff --git a/Images/image024.png b/COBOL Programming Course #1 - Getting Started/Images/image024.png similarity index 100% rename from Images/image024.png rename to COBOL Programming Course #1 - Getting Started/Images/image024.png diff --git a/Images/image025.png b/COBOL Programming Course #1 - Getting Started/Images/image025.png similarity index 100% rename from Images/image025.png rename to COBOL Programming Course #1 - Getting Started/Images/image025.png diff --git a/Images/image026.png b/COBOL Programming Course #1 - Getting Started/Images/image026.png similarity index 100% rename from Images/image026.png rename to COBOL Programming Course #1 - Getting Started/Images/image026.png diff --git a/Images/image027.png b/COBOL Programming Course #1 - Getting Started/Images/image027.png similarity index 100% rename from Images/image027.png rename to COBOL Programming Course #1 - Getting Started/Images/image027.png diff --git a/Images/image028.png b/COBOL Programming Course #1 - Getting Started/Images/image028.png similarity index 100% rename from Images/image028.png rename to COBOL Programming Course #1 - Getting Started/Images/image028.png diff --git a/Images/image029.png b/COBOL Programming Course #1 - Getting Started/Images/image029.png similarity index 100% rename from Images/image029.png rename to COBOL Programming Course #1 - Getting Started/Images/image029.png diff --git a/Images/image030.jpg b/COBOL Programming Course #1 - Getting Started/Images/image030.jpg similarity index 100% rename from Images/image030.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image030.jpg diff --git a/Images/image031.png b/COBOL Programming Course #1 - Getting Started/Images/image031.png similarity index 100% rename from Images/image031.png rename to COBOL Programming Course #1 - Getting Started/Images/image031.png diff --git a/Images/image032.jpg b/COBOL Programming Course #1 - Getting Started/Images/image032.jpg similarity index 100% rename from Images/image032.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image032.jpg diff --git a/Images/image033.jpg b/COBOL Programming Course #1 - Getting Started/Images/image033.jpg similarity index 100% rename from Images/image033.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image033.jpg diff --git a/Images/image034.png b/COBOL Programming Course #1 - Getting Started/Images/image034.png similarity index 100% rename from Images/image034.png rename to COBOL Programming Course #1 - Getting Started/Images/image034.png diff --git a/Images/image035.png b/COBOL Programming Course #1 - Getting Started/Images/image035.png similarity index 100% rename from Images/image035.png rename to COBOL Programming Course #1 - Getting Started/Images/image035.png diff --git a/Images/image036.png b/COBOL Programming Course #1 - Getting Started/Images/image036.png similarity index 100% rename from Images/image036.png rename to COBOL Programming Course #1 - Getting Started/Images/image036.png diff --git a/Images/image037.png b/COBOL Programming Course #1 - Getting Started/Images/image037.png similarity index 100% rename from Images/image037.png rename to COBOL Programming Course #1 - Getting Started/Images/image037.png diff --git a/Images/image038.png b/COBOL Programming Course #1 - Getting Started/Images/image038.png similarity index 100% rename from Images/image038.png rename to COBOL Programming Course #1 - Getting Started/Images/image038.png diff --git a/Images/image039.png b/COBOL Programming Course #1 - Getting Started/Images/image039.png similarity index 100% rename from Images/image039.png rename to COBOL Programming Course #1 - Getting Started/Images/image039.png diff --git a/Images/image040.png b/COBOL Programming Course #1 - Getting Started/Images/image040.png similarity index 100% rename from Images/image040.png rename to COBOL Programming Course #1 - Getting Started/Images/image040.png diff --git a/Images/image041.png b/COBOL Programming Course #1 - Getting Started/Images/image041.png similarity index 100% rename from Images/image041.png rename to COBOL Programming Course #1 - Getting Started/Images/image041.png diff --git a/Images/image042.png b/COBOL Programming Course #1 - Getting Started/Images/image042.png similarity index 100% rename from Images/image042.png rename to COBOL Programming Course #1 - Getting Started/Images/image042.png diff --git a/Images/image043.png b/COBOL Programming Course #1 - Getting Started/Images/image043.png similarity index 100% rename from Images/image043.png rename to COBOL Programming Course #1 - Getting Started/Images/image043.png diff --git a/Images/image044.png b/COBOL Programming Course #1 - Getting Started/Images/image044.png similarity index 100% rename from Images/image044.png rename to COBOL Programming Course #1 - Getting Started/Images/image044.png diff --git a/Images/image044b.png b/COBOL Programming Course #1 - Getting Started/Images/image044b.png similarity index 100% rename from Images/image044b.png rename to COBOL Programming Course #1 - Getting Started/Images/image044b.png diff --git a/Images/image045.png b/COBOL Programming Course #1 - Getting Started/Images/image045.png similarity index 100% rename from Images/image045.png rename to COBOL Programming Course #1 - Getting Started/Images/image045.png diff --git a/Images/image046.png b/COBOL Programming Course #1 - Getting Started/Images/image046.png similarity index 100% rename from Images/image046.png rename to COBOL Programming Course #1 - Getting Started/Images/image046.png diff --git a/Images/image047.png b/COBOL Programming Course #1 - Getting Started/Images/image047.png similarity index 100% rename from Images/image047.png rename to COBOL Programming Course #1 - Getting Started/Images/image047.png diff --git a/Images/image048.png b/COBOL Programming Course #1 - Getting Started/Images/image048.png similarity index 100% rename from Images/image048.png rename to COBOL Programming Course #1 - Getting Started/Images/image048.png diff --git a/Images/image049.png b/COBOL Programming Course #1 - Getting Started/Images/image049.png similarity index 100% rename from Images/image049.png rename to COBOL Programming Course #1 - Getting Started/Images/image049.png diff --git a/Images/image050.jpg b/COBOL Programming Course #1 - Getting Started/Images/image050.jpg similarity index 100% rename from Images/image050.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image050.jpg diff --git a/Images/image051.png b/COBOL Programming Course #1 - Getting Started/Images/image051.png similarity index 100% rename from Images/image051.png rename to COBOL Programming Course #1 - Getting Started/Images/image051.png diff --git a/Images/image052.png b/COBOL Programming Course #1 - Getting Started/Images/image052.png similarity index 100% rename from Images/image052.png rename to COBOL Programming Course #1 - Getting Started/Images/image052.png diff --git a/Images/image053.jpg b/COBOL Programming Course #1 - Getting Started/Images/image053.jpg similarity index 100% rename from Images/image053.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image053.jpg diff --git a/Images/image054.png b/COBOL Programming Course #1 - Getting Started/Images/image054.png similarity index 100% rename from Images/image054.png rename to COBOL Programming Course #1 - Getting Started/Images/image054.png diff --git a/Images/image055.png b/COBOL Programming Course #1 - Getting Started/Images/image055.png similarity index 100% rename from Images/image055.png rename to COBOL Programming Course #1 - Getting Started/Images/image055.png diff --git a/Images/image056.jpg b/COBOL Programming Course #1 - Getting Started/Images/image056.jpg similarity index 100% rename from Images/image056.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image056.jpg diff --git a/Images/image057.png b/COBOL Programming Course #1 - Getting Started/Images/image057.png similarity index 100% rename from Images/image057.png rename to COBOL Programming Course #1 - Getting Started/Images/image057.png diff --git a/Images/image058.jpg b/COBOL Programming Course #1 - Getting Started/Images/image058.jpg similarity index 100% rename from Images/image058.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image058.jpg diff --git a/Images/image059.png b/COBOL Programming Course #1 - Getting Started/Images/image059.png similarity index 100% rename from Images/image059.png rename to COBOL Programming Course #1 - Getting Started/Images/image059.png diff --git a/Images/image060.png b/COBOL Programming Course #1 - Getting Started/Images/image060.png similarity index 100% rename from Images/image060.png rename to COBOL Programming Course #1 - Getting Started/Images/image060.png diff --git a/Images/image061.jpg b/COBOL Programming Course #1 - Getting Started/Images/image061.jpg similarity index 100% rename from Images/image061.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image061.jpg diff --git a/Images/image062.png b/COBOL Programming Course #1 - Getting Started/Images/image062.png similarity index 100% rename from Images/image062.png rename to COBOL Programming Course #1 - Getting Started/Images/image062.png diff --git a/Images/image063.png b/COBOL Programming Course #1 - Getting Started/Images/image063.png similarity index 100% rename from Images/image063.png rename to COBOL Programming Course #1 - Getting Started/Images/image063.png diff --git a/Images/image064.jpg b/COBOL Programming Course #1 - Getting Started/Images/image064.jpg similarity index 100% rename from Images/image064.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image064.jpg diff --git a/Images/image065.png b/COBOL Programming Course #1 - Getting Started/Images/image065.png similarity index 100% rename from Images/image065.png rename to COBOL Programming Course #1 - Getting Started/Images/image065.png diff --git a/Images/image066.png b/COBOL Programming Course #1 - Getting Started/Images/image066.png similarity index 100% rename from Images/image066.png rename to COBOL Programming Course #1 - Getting Started/Images/image066.png diff --git a/Images/image067.jpg b/COBOL Programming Course #1 - Getting Started/Images/image067.jpg similarity index 100% rename from Images/image067.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image067.jpg diff --git a/Images/image068.png b/COBOL Programming Course #1 - Getting Started/Images/image068.png similarity index 100% rename from Images/image068.png rename to COBOL Programming Course #1 - Getting Started/Images/image068.png diff --git a/Images/image069.png b/COBOL Programming Course #1 - Getting Started/Images/image069.png similarity index 100% rename from Images/image069.png rename to COBOL Programming Course #1 - Getting Started/Images/image069.png diff --git a/Images/image070.jpg b/COBOL Programming Course #1 - Getting Started/Images/image070.jpg similarity index 100% rename from Images/image070.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image070.jpg diff --git a/Images/image071.png b/COBOL Programming Course #1 - Getting Started/Images/image071.png similarity index 100% rename from Images/image071.png rename to COBOL Programming Course #1 - Getting Started/Images/image071.png diff --git a/Images/image072.png b/COBOL Programming Course #1 - Getting Started/Images/image072.png similarity index 100% rename from Images/image072.png rename to COBOL Programming Course #1 - Getting Started/Images/image072.png diff --git a/Images/image073.png b/COBOL Programming Course #1 - Getting Started/Images/image073.png similarity index 100% rename from Images/image073.png rename to COBOL Programming Course #1 - Getting Started/Images/image073.png diff --git a/Images/image074.png b/COBOL Programming Course #1 - Getting Started/Images/image074.png similarity index 100% rename from Images/image074.png rename to COBOL Programming Course #1 - Getting Started/Images/image074.png diff --git a/Images/image075.png b/COBOL Programming Course #1 - Getting Started/Images/image075.png similarity index 100% rename from Images/image075.png rename to COBOL Programming Course #1 - Getting Started/Images/image075.png diff --git a/Images/image076.png b/COBOL Programming Course #1 - Getting Started/Images/image076.png similarity index 100% rename from Images/image076.png rename to COBOL Programming Course #1 - Getting Started/Images/image076.png diff --git a/Images/image077.png b/COBOL Programming Course #1 - Getting Started/Images/image077.png similarity index 100% rename from Images/image077.png rename to COBOL Programming Course #1 - Getting Started/Images/image077.png diff --git a/Images/image078.jpg b/COBOL Programming Course #1 - Getting Started/Images/image078.jpg similarity index 100% rename from Images/image078.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image078.jpg diff --git a/Images/image079.png b/COBOL Programming Course #1 - Getting Started/Images/image079.png similarity index 100% rename from Images/image079.png rename to COBOL Programming Course #1 - Getting Started/Images/image079.png diff --git a/Images/image080.jpg b/COBOL Programming Course #1 - Getting Started/Images/image080.jpg similarity index 100% rename from Images/image080.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image080.jpg diff --git a/Images/image081.png b/COBOL Programming Course #1 - Getting Started/Images/image081.png similarity index 100% rename from Images/image081.png rename to COBOL Programming Course #1 - Getting Started/Images/image081.png diff --git a/Images/image082.jpg b/COBOL Programming Course #1 - Getting Started/Images/image082.jpg similarity index 100% rename from Images/image082.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image082.jpg diff --git a/Images/image083.png b/COBOL Programming Course #1 - Getting Started/Images/image083.png similarity index 100% rename from Images/image083.png rename to COBOL Programming Course #1 - Getting Started/Images/image083.png diff --git a/Images/image084.jpg b/COBOL Programming Course #1 - Getting Started/Images/image084.jpg similarity index 100% rename from Images/image084.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image084.jpg diff --git a/Images/image085.png b/COBOL Programming Course #1 - Getting Started/Images/image085.png similarity index 100% rename from Images/image085.png rename to COBOL Programming Course #1 - Getting Started/Images/image085.png diff --git a/Images/image086.jpg b/COBOL Programming Course #1 - Getting Started/Images/image086.jpg similarity index 100% rename from Images/image086.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image086.jpg diff --git a/Images/image087.png b/COBOL Programming Course #1 - Getting Started/Images/image087.png similarity index 100% rename from Images/image087.png rename to COBOL Programming Course #1 - Getting Started/Images/image087.png diff --git a/Images/image088.jpg b/COBOL Programming Course #1 - Getting Started/Images/image088.jpg similarity index 100% rename from Images/image088.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image088.jpg diff --git a/Images/image089.png b/COBOL Programming Course #1 - Getting Started/Images/image089.png similarity index 100% rename from Images/image089.png rename to COBOL Programming Course #1 - Getting Started/Images/image089.png diff --git a/Images/image090.jpg b/COBOL Programming Course #1 - Getting Started/Images/image090.jpg similarity index 100% rename from Images/image090.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image090.jpg diff --git a/Images/image090.png b/COBOL Programming Course #1 - Getting Started/Images/image090.png similarity index 100% rename from Images/image090.png rename to COBOL Programming Course #1 - Getting Started/Images/image090.png diff --git a/Images/image091.png b/COBOL Programming Course #1 - Getting Started/Images/image091.png similarity index 100% rename from Images/image091.png rename to COBOL Programming Course #1 - Getting Started/Images/image091.png diff --git a/Images/image092.png b/COBOL Programming Course #1 - Getting Started/Images/image092.png similarity index 100% rename from Images/image092.png rename to COBOL Programming Course #1 - Getting Started/Images/image092.png diff --git a/Images/image093.jpg b/COBOL Programming Course #1 - Getting Started/Images/image093.jpg similarity index 100% rename from Images/image093.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image093.jpg diff --git a/Images/image094.png b/COBOL Programming Course #1 - Getting Started/Images/image094.png similarity index 100% rename from Images/image094.png rename to COBOL Programming Course #1 - Getting Started/Images/image094.png diff --git a/Images/image095.jpg b/COBOL Programming Course #1 - Getting Started/Images/image095.jpg similarity index 100% rename from Images/image095.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image095.jpg diff --git a/Images/image096.png b/COBOL Programming Course #1 - Getting Started/Images/image096.png similarity index 100% rename from Images/image096.png rename to COBOL Programming Course #1 - Getting Started/Images/image096.png diff --git a/Images/image097.jpg b/COBOL Programming Course #1 - Getting Started/Images/image097.jpg similarity index 100% rename from Images/image097.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image097.jpg diff --git a/Images/image098.jpg b/COBOL Programming Course #1 - Getting Started/Images/image098.jpg similarity index 100% rename from Images/image098.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image098.jpg diff --git a/Images/image099.png b/COBOL Programming Course #1 - Getting Started/Images/image099.png similarity index 100% rename from Images/image099.png rename to COBOL Programming Course #1 - Getting Started/Images/image099.png diff --git a/Images/image100.jpg b/COBOL Programming Course #1 - Getting Started/Images/image100.jpg similarity index 100% rename from Images/image100.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image100.jpg diff --git a/Images/image101.png b/COBOL Programming Course #1 - Getting Started/Images/image101.png similarity index 100% rename from Images/image101.png rename to COBOL Programming Course #1 - Getting Started/Images/image101.png diff --git a/Images/image102.jpg b/COBOL Programming Course #1 - Getting Started/Images/image102.jpg similarity index 100% rename from Images/image102.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image102.jpg diff --git a/Images/image103.png b/COBOL Programming Course #1 - Getting Started/Images/image103.png similarity index 100% rename from Images/image103.png rename to COBOL Programming Course #1 - Getting Started/Images/image103.png diff --git a/Images/image104.jpg b/COBOL Programming Course #1 - Getting Started/Images/image104.jpg similarity index 100% rename from Images/image104.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image104.jpg diff --git a/Images/image105.png b/COBOL Programming Course #1 - Getting Started/Images/image105.png similarity index 100% rename from Images/image105.png rename to COBOL Programming Course #1 - Getting Started/Images/image105.png diff --git a/Images/image106.jpg b/COBOL Programming Course #1 - Getting Started/Images/image106.jpg similarity index 100% rename from Images/image106.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image106.jpg diff --git a/Images/image107.jpg b/COBOL Programming Course #1 - Getting Started/Images/image107.jpg similarity index 100% rename from Images/image107.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image107.jpg diff --git a/Images/image108.jpg b/COBOL Programming Course #1 - Getting Started/Images/image108.jpg similarity index 100% rename from Images/image108.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image108.jpg diff --git a/Images/image109.png b/COBOL Programming Course #1 - Getting Started/Images/image109.png similarity index 100% rename from Images/image109.png rename to COBOL Programming Course #1 - Getting Started/Images/image109.png diff --git a/Images/image110.png b/COBOL Programming Course #1 - Getting Started/Images/image110.png similarity index 100% rename from Images/image110.png rename to COBOL Programming Course #1 - Getting Started/Images/image110.png diff --git a/Images/image111.png b/COBOL Programming Course #1 - Getting Started/Images/image111.png similarity index 100% rename from Images/image111.png rename to COBOL Programming Course #1 - Getting Started/Images/image111.png diff --git a/Images/image112.png b/COBOL Programming Course #1 - Getting Started/Images/image112.png similarity index 100% rename from Images/image112.png rename to COBOL Programming Course #1 - Getting Started/Images/image112.png diff --git a/Images/image113.png b/COBOL Programming Course #1 - Getting Started/Images/image113.png similarity index 100% rename from Images/image113.png rename to COBOL Programming Course #1 - Getting Started/Images/image113.png diff --git a/Images/image114.png b/COBOL Programming Course #1 - Getting Started/Images/image114.png similarity index 100% rename from Images/image114.png rename to COBOL Programming Course #1 - Getting Started/Images/image114.png diff --git a/Images/image115.png b/COBOL Programming Course #1 - Getting Started/Images/image115.png similarity index 100% rename from Images/image115.png rename to COBOL Programming Course #1 - Getting Started/Images/image115.png diff --git a/Images/image116.png b/COBOL Programming Course #1 - Getting Started/Images/image116.png similarity index 100% rename from Images/image116.png rename to COBOL Programming Course #1 - Getting Started/Images/image116.png diff --git a/Images/image117.png b/COBOL Programming Course #1 - Getting Started/Images/image117.png similarity index 100% rename from Images/image117.png rename to COBOL Programming Course #1 - Getting Started/Images/image117.png diff --git a/Images/image118.png b/COBOL Programming Course #1 - Getting Started/Images/image118.png similarity index 100% rename from Images/image118.png rename to COBOL Programming Course #1 - Getting Started/Images/image118.png diff --git a/Images/image119.png b/COBOL Programming Course #1 - Getting Started/Images/image119.png similarity index 100% rename from Images/image119.png rename to COBOL Programming Course #1 - Getting Started/Images/image119.png diff --git a/Images/image120.png b/COBOL Programming Course #1 - Getting Started/Images/image120.png similarity index 100% rename from Images/image120.png rename to COBOL Programming Course #1 - Getting Started/Images/image120.png diff --git a/Images/image121.png b/COBOL Programming Course #1 - Getting Started/Images/image121.png similarity index 100% rename from Images/image121.png rename to COBOL Programming Course #1 - Getting Started/Images/image121.png diff --git a/Images/image122.png b/COBOL Programming Course #1 - Getting Started/Images/image122.png similarity index 100% rename from Images/image122.png rename to COBOL Programming Course #1 - Getting Started/Images/image122.png diff --git a/Images/image123.png b/COBOL Programming Course #1 - Getting Started/Images/image123.png similarity index 100% rename from Images/image123.png rename to COBOL Programming Course #1 - Getting Started/Images/image123.png diff --git a/Images/image124.png b/COBOL Programming Course #1 - Getting Started/Images/image124.png similarity index 100% rename from Images/image124.png rename to COBOL Programming Course #1 - Getting Started/Images/image124.png diff --git a/Images/image125.jpg b/COBOL Programming Course #1 - Getting Started/Images/image125.jpg similarity index 100% rename from Images/image125.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image125.jpg diff --git a/Images/image126.jpg b/COBOL Programming Course #1 - Getting Started/Images/image126.jpg similarity index 100% rename from Images/image126.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image126.jpg diff --git a/Images/image127.jpg b/COBOL Programming Course #1 - Getting Started/Images/image127.jpg similarity index 100% rename from Images/image127.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image127.jpg diff --git a/Images/image128.jpg b/COBOL Programming Course #1 - Getting Started/Images/image128.jpg similarity index 100% rename from Images/image128.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image128.jpg diff --git a/Images/image129.jpg b/COBOL Programming Course #1 - Getting Started/Images/image129.jpg similarity index 100% rename from Images/image129.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image129.jpg diff --git a/Images/image130.jpg b/COBOL Programming Course #1 - Getting Started/Images/image130.jpg similarity index 100% rename from Images/image130.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image130.jpg diff --git a/Images/image131.jpg b/COBOL Programming Course #1 - Getting Started/Images/image131.jpg similarity index 100% rename from Images/image131.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image131.jpg diff --git a/Images/image132.png b/COBOL Programming Course #1 - Getting Started/Images/image132.png similarity index 100% rename from Images/image132.png rename to COBOL Programming Course #1 - Getting Started/Images/image132.png diff --git a/Images/image133.png b/COBOL Programming Course #1 - Getting Started/Images/image133.png similarity index 100% rename from Images/image133.png rename to COBOL Programming Course #1 - Getting Started/Images/image133.png diff --git a/Images/image134.png b/COBOL Programming Course #1 - Getting Started/Images/image134.png similarity index 100% rename from Images/image134.png rename to COBOL Programming Course #1 - Getting Started/Images/image134.png diff --git a/Images/image135.png b/COBOL Programming Course #1 - Getting Started/Images/image135.png similarity index 100% rename from Images/image135.png rename to COBOL Programming Course #1 - Getting Started/Images/image135.png diff --git a/Images/image136.png b/COBOL Programming Course #1 - Getting Started/Images/image136.png similarity index 100% rename from Images/image136.png rename to COBOL Programming Course #1 - Getting Started/Images/image136.png diff --git a/Images/image137.png b/COBOL Programming Course #1 - Getting Started/Images/image137.png similarity index 100% rename from Images/image137.png rename to COBOL Programming Course #1 - Getting Started/Images/image137.png diff --git a/Images/image138.png b/COBOL Programming Course #1 - Getting Started/Images/image138.png similarity index 100% rename from Images/image138.png rename to COBOL Programming Course #1 - Getting Started/Images/image138.png diff --git a/Images/image139.png b/COBOL Programming Course #1 - Getting Started/Images/image139.png similarity index 100% rename from Images/image139.png rename to COBOL Programming Course #1 - Getting Started/Images/image139.png diff --git a/Images/image140.png b/COBOL Programming Course #1 - Getting Started/Images/image140.png similarity index 100% rename from Images/image140.png rename to COBOL Programming Course #1 - Getting Started/Images/image140.png diff --git a/Images/image141.jpg b/COBOL Programming Course #1 - Getting Started/Images/image141.jpg similarity index 100% rename from Images/image141.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image141.jpg diff --git a/Images/image142.jpg b/COBOL Programming Course #1 - Getting Started/Images/image142.jpg similarity index 100% rename from Images/image142.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image142.jpg diff --git a/Images/image143.png b/COBOL Programming Course #1 - Getting Started/Images/image143.png similarity index 100% rename from Images/image143.png rename to COBOL Programming Course #1 - Getting Started/Images/image143.png diff --git a/Images/image144.jpg b/COBOL Programming Course #1 - Getting Started/Images/image144.jpg similarity index 100% rename from Images/image144.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image144.jpg diff --git a/Images/image145.jpg b/COBOL Programming Course #1 - Getting Started/Images/image145.jpg similarity index 100% rename from Images/image145.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image145.jpg diff --git a/Images/image146.png b/COBOL Programming Course #1 - Getting Started/Images/image146.png similarity index 100% rename from Images/image146.png rename to COBOL Programming Course #1 - Getting Started/Images/image146.png diff --git a/Images/image147.png b/COBOL Programming Course #1 - Getting Started/Images/image147.png similarity index 100% rename from Images/image147.png rename to COBOL Programming Course #1 - Getting Started/Images/image147.png diff --git a/Images/image148.png b/COBOL Programming Course #1 - Getting Started/Images/image148.png similarity index 100% rename from Images/image148.png rename to COBOL Programming Course #1 - Getting Started/Images/image148.png diff --git a/Images/image149.jpg b/COBOL Programming Course #1 - Getting Started/Images/image149.jpg similarity index 100% rename from Images/image149.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image149.jpg diff --git a/Images/image150.jpg b/COBOL Programming Course #1 - Getting Started/Images/image150.jpg similarity index 100% rename from Images/image150.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image150.jpg diff --git a/Images/image151.png b/COBOL Programming Course #1 - Getting Started/Images/image151.png similarity index 100% rename from Images/image151.png rename to COBOL Programming Course #1 - Getting Started/Images/image151.png diff --git a/Images/image152.png b/COBOL Programming Course #1 - Getting Started/Images/image152.png similarity index 100% rename from Images/image152.png rename to COBOL Programming Course #1 - Getting Started/Images/image152.png diff --git a/Images/image153.png b/COBOL Programming Course #1 - Getting Started/Images/image153.png similarity index 100% rename from Images/image153.png rename to COBOL Programming Course #1 - Getting Started/Images/image153.png diff --git a/Images/image154.png b/COBOL Programming Course #1 - Getting Started/Images/image154.png similarity index 100% rename from Images/image154.png rename to COBOL Programming Course #1 - Getting Started/Images/image154.png diff --git a/Images/image155.png b/COBOL Programming Course #1 - Getting Started/Images/image155.png similarity index 100% rename from Images/image155.png rename to COBOL Programming Course #1 - Getting Started/Images/image155.png diff --git a/Images/image156.png b/COBOL Programming Course #1 - Getting Started/Images/image156.png similarity index 100% rename from Images/image156.png rename to COBOL Programming Course #1 - Getting Started/Images/image156.png diff --git a/Images/image157.png b/COBOL Programming Course #1 - Getting Started/Images/image157.png similarity index 100% rename from Images/image157.png rename to COBOL Programming Course #1 - Getting Started/Images/image157.png diff --git a/Images/image158.png b/COBOL Programming Course #1 - Getting Started/Images/image158.png similarity index 100% rename from Images/image158.png rename to COBOL Programming Course #1 - Getting Started/Images/image158.png diff --git a/Images/image159.jpg b/COBOL Programming Course #1 - Getting Started/Images/image159.jpg similarity index 100% rename from Images/image159.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image159.jpg diff --git a/Images/image160.png b/COBOL Programming Course #1 - Getting Started/Images/image160.png similarity index 100% rename from Images/image160.png rename to COBOL Programming Course #1 - Getting Started/Images/image160.png diff --git a/Images/image161.jpg b/COBOL Programming Course #1 - Getting Started/Images/image161.jpg similarity index 100% rename from Images/image161.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image161.jpg diff --git a/Images/image162.jpg b/COBOL Programming Course #1 - Getting Started/Images/image162.jpg similarity index 100% rename from Images/image162.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image162.jpg diff --git a/Images/image163.jpg b/COBOL Programming Course #1 - Getting Started/Images/image163.jpg similarity index 100% rename from Images/image163.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image163.jpg diff --git a/Images/image164.png b/COBOL Programming Course #1 - Getting Started/Images/image164.png similarity index 100% rename from Images/image164.png rename to COBOL Programming Course #1 - Getting Started/Images/image164.png diff --git a/Images/image165.png b/COBOL Programming Course #1 - Getting Started/Images/image165.png similarity index 100% rename from Images/image165.png rename to COBOL Programming Course #1 - Getting Started/Images/image165.png diff --git a/Images/image166.png b/COBOL Programming Course #1 - Getting Started/Images/image166.png similarity index 100% rename from Images/image166.png rename to COBOL Programming Course #1 - Getting Started/Images/image166.png diff --git a/Images/image167.png b/COBOL Programming Course #1 - Getting Started/Images/image167.png similarity index 100% rename from Images/image167.png rename to COBOL Programming Course #1 - Getting Started/Images/image167.png diff --git a/Images/image168.png b/COBOL Programming Course #1 - Getting Started/Images/image168.png similarity index 100% rename from Images/image168.png rename to COBOL Programming Course #1 - Getting Started/Images/image168.png diff --git a/Images/image169.png b/COBOL Programming Course #1 - Getting Started/Images/image169.png similarity index 100% rename from Images/image169.png rename to COBOL Programming Course #1 - Getting Started/Images/image169.png diff --git a/Images/image170.jpg b/COBOL Programming Course #1 - Getting Started/Images/image170.jpg similarity index 100% rename from Images/image170.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image170.jpg diff --git a/Images/image171.png b/COBOL Programming Course #1 - Getting Started/Images/image171.png similarity index 100% rename from Images/image171.png rename to COBOL Programming Course #1 - Getting Started/Images/image171.png diff --git a/Images/image172.jpg b/COBOL Programming Course #1 - Getting Started/Images/image172.jpg similarity index 100% rename from Images/image172.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image172.jpg diff --git a/Images/image173.jpg b/COBOL Programming Course #1 - Getting Started/Images/image173.jpg similarity index 100% rename from Images/image173.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image173.jpg diff --git a/Images/image174.jpg b/COBOL Programming Course #1 - Getting Started/Images/image174.jpg similarity index 100% rename from Images/image174.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image174.jpg diff --git a/Images/image175.jpg b/COBOL Programming Course #1 - Getting Started/Images/image175.jpg similarity index 100% rename from Images/image175.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image175.jpg diff --git a/Images/image176.jpg b/COBOL Programming Course #1 - Getting Started/Images/image176.jpg similarity index 100% rename from Images/image176.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image176.jpg diff --git a/Images/image177.jpg b/COBOL Programming Course #1 - Getting Started/Images/image177.jpg similarity index 100% rename from Images/image177.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image177.jpg diff --git a/Images/image178.jpg b/COBOL Programming Course #1 - Getting Started/Images/image178.jpg similarity index 100% rename from Images/image178.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image178.jpg diff --git a/Images/image179.jpg b/COBOL Programming Course #1 - Getting Started/Images/image179.jpg similarity index 100% rename from Images/image179.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image179.jpg diff --git a/Images/image180.jpg b/COBOL Programming Course #1 - Getting Started/Images/image180.jpg similarity index 100% rename from Images/image180.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image180.jpg diff --git a/Images/image181.jpg b/COBOL Programming Course #1 - Getting Started/Images/image181.jpg similarity index 100% rename from Images/image181.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image181.jpg diff --git a/Images/image182.jpg b/COBOL Programming Course #1 - Getting Started/Images/image182.jpg similarity index 100% rename from Images/image182.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image182.jpg diff --git a/Images/image183.jpg b/COBOL Programming Course #1 - Getting Started/Images/image183.jpg similarity index 100% rename from Images/image183.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image183.jpg diff --git a/Images/image184.jpg b/COBOL Programming Course #1 - Getting Started/Images/image184.jpg similarity index 100% rename from Images/image184.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image184.jpg diff --git a/Images/image185.jpg b/COBOL Programming Course #1 - Getting Started/Images/image185.jpg similarity index 100% rename from Images/image185.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image185.jpg diff --git a/Images/image186.jpg b/COBOL Programming Course #1 - Getting Started/Images/image186.jpg similarity index 100% rename from Images/image186.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image186.jpg diff --git a/Images/image187.jpg b/COBOL Programming Course #1 - Getting Started/Images/image187.jpg similarity index 100% rename from Images/image187.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image187.jpg diff --git a/Images/image188.jpg b/COBOL Programming Course #1 - Getting Started/Images/image188.jpg similarity index 100% rename from Images/image188.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image188.jpg diff --git a/Images/image189.jpg b/COBOL Programming Course #1 - Getting Started/Images/image189.jpg similarity index 100% rename from Images/image189.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image189.jpg diff --git a/Images/image190.jpg b/COBOL Programming Course #1 - Getting Started/Images/image190.jpg similarity index 100% rename from Images/image190.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image190.jpg diff --git a/Images/image191.jpg b/COBOL Programming Course #1 - Getting Started/Images/image191.jpg similarity index 100% rename from Images/image191.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image191.jpg diff --git a/Images/image192.jpg b/COBOL Programming Course #1 - Getting Started/Images/image192.jpg similarity index 100% rename from Images/image192.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image192.jpg diff --git a/Images/image193.jpg b/COBOL Programming Course #1 - Getting Started/Images/image193.jpg similarity index 100% rename from Images/image193.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image193.jpg diff --git a/Images/image194.jpg b/COBOL Programming Course #1 - Getting Started/Images/image194.jpg similarity index 100% rename from Images/image194.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image194.jpg diff --git a/Images/image195.jpg b/COBOL Programming Course #1 - Getting Started/Images/image195.jpg similarity index 100% rename from Images/image195.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image195.jpg diff --git a/Images/image196.jpg b/COBOL Programming Course #1 - Getting Started/Images/image196.jpg similarity index 100% rename from Images/image196.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image196.jpg diff --git a/Images/image197.jpg b/COBOL Programming Course #1 - Getting Started/Images/image197.jpg similarity index 100% rename from Images/image197.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image197.jpg diff --git a/Images/image198.jpg b/COBOL Programming Course #1 - Getting Started/Images/image198.jpg similarity index 100% rename from Images/image198.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image198.jpg diff --git a/Images/image199.jpg b/COBOL Programming Course #1 - Getting Started/Images/image199.jpg similarity index 100% rename from Images/image199.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image199.jpg diff --git a/Images/image200.jpg b/COBOL Programming Course #1 - Getting Started/Images/image200.jpg similarity index 100% rename from Images/image200.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image200.jpg diff --git a/Images/image201.jpg b/COBOL Programming Course #1 - Getting Started/Images/image201.jpg similarity index 100% rename from Images/image201.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image201.jpg diff --git a/Images/image202.jpg b/COBOL Programming Course #1 - Getting Started/Images/image202.jpg similarity index 100% rename from Images/image202.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image202.jpg diff --git a/Images/image203.jpg b/COBOL Programming Course #1 - Getting Started/Images/image203.jpg similarity index 100% rename from Images/image203.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image203.jpg diff --git a/Images/image204.jpg b/COBOL Programming Course #1 - Getting Started/Images/image204.jpg similarity index 100% rename from Images/image204.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image204.jpg diff --git a/Images/image205.jpg b/COBOL Programming Course #1 - Getting Started/Images/image205.jpg similarity index 100% rename from Images/image205.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image205.jpg diff --git a/Images/image206.jpg b/COBOL Programming Course #1 - Getting Started/Images/image206.jpg similarity index 100% rename from Images/image206.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image206.jpg diff --git a/Images/image207.jpg b/COBOL Programming Course #1 - Getting Started/Images/image207.jpg similarity index 100% rename from Images/image207.jpg rename to COBOL Programming Course #1 - Getting Started/Images/image207.jpg diff --git a/Images/image208.png b/COBOL Programming Course #1 - Getting Started/Images/image208.png similarity index 100% rename from Images/image208.png rename to COBOL Programming Course #1 - Getting Started/Images/image208.png diff --git a/Images/images.md b/COBOL Programming Course #1 - Getting Started/Images/images.md similarity index 100% rename from Images/images.md rename to COBOL Programming Course #1 - Getting Started/Images/images.md diff --git a/Images/npm-init-example.png b/COBOL Programming Course #1 - Getting Started/Images/npm-init-example.png similarity index 100% rename from Images/npm-init-example.png rename to COBOL Programming Course #1 - Getting Started/Images/npm-init-example.png diff --git a/Images/npm-run-clg-button.png b/COBOL Programming Course #1 - Getting Started/Images/npm-run-clg-button.png similarity index 100% rename from Images/npm-run-clg-button.png rename to COBOL Programming Course #1 - Getting Started/Images/npm-run-clg-button.png diff --git a/Images/npm-run-clg.png b/COBOL Programming Course #1 - Getting Started/Images/npm-run-clg.png similarity index 100% rename from Images/npm-run-clg.png rename to COBOL Programming Course #1 - Getting Started/Images/npm-run-clg.png diff --git a/Images/npm-script-button-click-and-run.png b/COBOL Programming Course #1 - Getting Started/Images/npm-script-button-click-and-run.png similarity index 100% rename from Images/npm-script-button-click-and-run.png rename to COBOL Programming Course #1 - Getting Started/Images/npm-script-button-click-and-run.png diff --git a/Images/one-click-cobol-build.png b/COBOL Programming Course #1 - Getting Started/Images/one-click-cobol-build.png similarity index 100% rename from Images/one-click-cobol-build.png rename to COBOL Programming Course #1 - Getting Started/Images/one-click-cobol-build.png diff --git a/Images/sample-config-json.png b/COBOL Programming Course #1 - Getting Started/Images/sample-config-json.png similarity index 100% rename from Images/sample-config-json.png rename to COBOL Programming Course #1 - Getting Started/Images/sample-config-json.png diff --git a/Images/sample-package-json.png b/COBOL Programming Course #1 - Getting Started/Images/sample-package-json.png similarity index 100% rename from Images/sample-package-json.png rename to COBOL Programming Course #1 - Getting Started/Images/sample-package-json.png diff --git a/Images/script-to-submit-job-check-rc.png b/COBOL Programming Course #1 - Getting Started/Images/script-to-submit-job-check-rc.png similarity index 100% rename from Images/script-to-submit-job-check-rc.png rename to COBOL Programming Course #1 - Getting Started/Images/script-to-submit-job-check-rc.png diff --git a/Images/vscode-add-folder.png b/COBOL Programming Course #1 - Getting Started/Images/vscode-add-folder.png similarity index 100% rename from Images/vscode-add-folder.png rename to COBOL Programming Course #1 - Getting Started/Images/vscode-add-folder.png diff --git a/Images/zowe-cli-help.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-cli-help.png similarity index 100% rename from Images/zowe-cli-help.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-cli-help.png diff --git a/Images/zowe-cli-response-format-json.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-cli-response-format-json.png similarity index 100% rename from Images/zowe-cli-response-format-json.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-cli-response-format-json.png diff --git a/Images/zowe-cli-version.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-cli-version.png similarity index 100% rename from Images/zowe-cli-version.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-cli-version.png diff --git a/Images/zowe-cli-web-help.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-cli-web-help.png similarity index 100% rename from Images/zowe-cli-web-help.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-cli-web-help.png diff --git a/Images/zowe-cli-zos-files-actions.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zos-files-actions.png similarity index 100% rename from Images/zowe-cli-zos-files-actions.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zos-files-actions.png diff --git a/Images/zowe-cli-zos-files-list-ds-command.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zos-files-list-ds-command.png similarity index 100% rename from Images/zowe-cli-zos-files-list-ds-command.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zos-files-list-ds-command.png diff --git a/Images/zowe-cli-zos-jobs-actions.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zos-jobs-actions.png similarity index 100% rename from Images/zowe-cli-zos-jobs-actions.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zos-jobs-actions.png diff --git a/Images/zowe-cli-zos-jobs-submit-ds-command.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zos-jobs-submit-ds-command.png similarity index 100% rename from Images/zowe-cli-zos-jobs-submit-ds-command.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zos-jobs-submit-ds-command.png diff --git a/Images/zowe-cli-zosmf-profile-creation-command.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zosmf-profile-creation-command.png similarity index 100% rename from Images/zowe-cli-zosmf-profile-creation-command.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-cli-zosmf-profile-creation-command.png diff --git a/Images/zowe-files-download-am.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-files-download-am.png similarity index 100% rename from Images/zowe-files-download-am.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-files-download-am.png diff --git a/Images/zowe-files-list-ds-and-am-commands.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-files-list-ds-and-am-commands.png similarity index 100% rename from Images/zowe-files-list-ds-and-am-commands.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-files-list-ds-and-am-commands.png diff --git a/Images/zowe-jobs-submit-ds-and-download-spool-output.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-jobs-submit-ds-and-download-spool-output.png similarity index 100% rename from Images/zowe-jobs-submit-ds-and-download-spool-output.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-jobs-submit-ds-and-download-spool-output.png diff --git a/Images/zowe-jobs-submit-ds-and-view-spool-output.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-jobs-submit-ds-and-view-spool-output.png similarity index 100% rename from Images/zowe-jobs-submit-ds-and-view-spool-output.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-jobs-submit-ds-and-view-spool-output.png diff --git a/Images/zowe-jobs-submit-ds-rfj.png b/COBOL Programming Course #1 - Getting Started/Images/zowe-jobs-submit-ds-rfj.png similarity index 100% rename from Images/zowe-jobs-submit-ds-rfj.png rename to COBOL Programming Course #1 - Getting Started/Images/zowe-jobs-submit-ds-rfj.png diff --git a/Labs/README.md b/COBOL Programming Course #1 - Getting Started/Labs/README.md similarity index 100% rename from Labs/README.md rename to COBOL Programming Course #1 - Getting Started/Labs/README.md diff --git a/Labs/cbl/ADDAMT.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/ADDAMT.cobol similarity index 100% rename from Labs/cbl/ADDAMT.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/ADDAMT.cobol diff --git a/Labs/cbl/CBL0001.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0001.cobol similarity index 100% rename from Labs/cbl/CBL0001.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0001.cobol diff --git a/Labs/cbl/CBL0002.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0002.cobol similarity index 100% rename from Labs/cbl/CBL0002.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0002.cobol diff --git a/Labs/cbl/CBL0004.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0004.cobol similarity index 100% rename from Labs/cbl/CBL0004.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0004.cobol diff --git a/Labs/cbl/CBL0005.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0005.cobol similarity index 100% rename from Labs/cbl/CBL0005.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0005.cobol diff --git a/Labs/cbl/CBL0006.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0006.cobol similarity index 100% rename from Labs/cbl/CBL0006.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0006.cobol diff --git a/Labs/cbl/CBL0007.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0007.cobol similarity index 100% rename from Labs/cbl/CBL0007.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0007.cobol diff --git a/Labs/cbl/CBL0008.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0008.cobol similarity index 100% rename from Labs/cbl/CBL0008.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0008.cobol diff --git a/Labs/cbl/CBL0009.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0009.cobol similarity index 100% rename from Labs/cbl/CBL0009.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0009.cobol diff --git a/Labs/cbl/CBL0010.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0010.cobol similarity index 100% rename from Labs/cbl/CBL0010.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0010.cobol diff --git a/Labs/cbl/CBL0011.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0011.cobol similarity index 100% rename from Labs/cbl/CBL0011.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0011.cobol diff --git a/Labs/cbl/CBL0012.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0012.cobol similarity index 100% rename from Labs/cbl/CBL0012.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/CBL0012.cobol diff --git a/Labs/cbl/COBOL.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/COBOL.cobol similarity index 100% rename from Labs/cbl/COBOL.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/COBOL.cobol diff --git a/Labs/cbl/HELLO.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/HELLO.cobol similarity index 100% rename from Labs/cbl/HELLO.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/HELLO.cobol diff --git a/Labs/cbl/PAYROL00.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/PAYROL00.cobol similarity index 100% rename from Labs/cbl/PAYROL00.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/PAYROL00.cobol diff --git a/Labs/cbl/PAYROL0X.cobol b/COBOL Programming Course #1 - Getting Started/Labs/cbl/PAYROL0X.cobol similarity index 100% rename from Labs/cbl/PAYROL0X.cobol rename to COBOL Programming Course #1 - Getting Started/Labs/cbl/PAYROL0X.cobol diff --git a/Labs/data/data b/COBOL Programming Course #1 - Getting Started/Labs/data/data similarity index 100% rename from Labs/data/data rename to COBOL Programming Course #1 - Getting Started/Labs/data/data diff --git a/Labs/data/xdata b/COBOL Programming Course #1 - Getting Started/Labs/data/xdata similarity index 100% rename from Labs/data/xdata rename to COBOL Programming Course #1 - Getting Started/Labs/data/xdata diff --git a/Labs/jcl/ADDAMT.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/ADDAMT.jcl similarity index 100% rename from Labs/jcl/ADDAMT.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/ADDAMT.jcl diff --git a/Labs/jcl/CBL0001J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0001J.jcl similarity index 100% rename from Labs/jcl/CBL0001J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0001J.jcl diff --git a/Labs/jcl/CBL0002J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0002J.jcl similarity index 100% rename from Labs/jcl/CBL0002J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0002J.jcl diff --git a/Labs/jcl/CBL0003J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0003J.jcl similarity index 100% rename from Labs/jcl/CBL0003J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0003J.jcl diff --git a/Labs/jcl/CBL0004J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0004J.jcl similarity index 100% rename from Labs/jcl/CBL0004J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0004J.jcl diff --git a/Labs/jcl/CBL0005J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0005J.jcl similarity index 100% rename from Labs/jcl/CBL0005J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0005J.jcl diff --git a/Labs/jcl/CBL0006J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0006J.jcl similarity index 100% rename from Labs/jcl/CBL0006J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0006J.jcl diff --git a/Labs/jcl/CBL0007J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0007J.jcl similarity index 100% rename from Labs/jcl/CBL0007J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0007J.jcl diff --git a/Labs/jcl/CBL0008J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0008J.jcl similarity index 100% rename from Labs/jcl/CBL0008J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0008J.jcl diff --git a/Labs/jcl/CBL0009J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0009J.jcl similarity index 100% rename from Labs/jcl/CBL0009J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0009J.jcl diff --git a/Labs/jcl/CBL0010J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0010J.jcl similarity index 100% rename from Labs/jcl/CBL0010J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0010J.jcl diff --git a/Labs/jcl/CBL0011J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0011J.jcl similarity index 100% rename from Labs/jcl/CBL0011J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0011J.jcl diff --git a/Labs/jcl/CBL0012J.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0012J.jcl similarity index 100% rename from Labs/jcl/CBL0012J.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/CBL0012J.jcl diff --git a/Labs/jcl/COBRUN.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/COBRUN.jcl similarity index 100% rename from Labs/jcl/COBRUN.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/COBRUN.jcl diff --git a/Labs/jcl/HELLO.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/HELLO.jcl similarity index 100% rename from Labs/jcl/HELLO.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/HELLO.jcl diff --git a/Labs/jcl/PAYROL00.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/PAYROL00.jcl similarity index 100% rename from Labs/jcl/PAYROL00.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/PAYROL00.jcl diff --git a/Labs/jcl/PAYROL0X.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jcl/PAYROL0X.jcl similarity index 100% rename from Labs/jcl/PAYROL0X.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jcl/PAYROL0X.jcl diff --git a/Labs/jclproc/IGYWC.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jclproc/IGYWC.jcl similarity index 100% rename from Labs/jclproc/IGYWC.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jclproc/IGYWC.jcl diff --git a/Labs/jclproc/IGYWCL.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jclproc/IGYWCL.jcl similarity index 100% rename from Labs/jclproc/IGYWCL.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jclproc/IGYWCL.jcl diff --git a/Labs/jclproc/IGYWCLG.jcl b/COBOL Programming Course #1 - Getting Started/Labs/jclproc/IGYWCLG.jcl similarity index 100% rename from Labs/jclproc/IGYWCLG.jcl rename to COBOL Programming Course #1 - Getting Started/Labs/jclproc/IGYWCLG.jcl diff --git a/COBOL Programming Course #1 - Getting Started/README.md b/COBOL Programming Course #1 - Getting Started/README.md new file mode 100644 index 00000000..24a6824b --- /dev/null +++ b/COBOL Programming Course #1 - Getting Started/README.md @@ -0,0 +1,59 @@ +![](https://github.com/openmainframeproject/artwork/raw/master/projects/cobol-programming-course/cobol-programming-course-color.png) + +![License](https://img.shields.io/github/license/OpenMainframeProject/cobol-programming-course) + +# COBOL Programming Course + +This project is a set of training materials and labs for a "Getting Started" level course on COBOL. + +## How to use + +To begin, select a recent [release](https://github.com/openmainframeproject/cobol-programming-course/releases) of the course. Under a given release, you should see two assets. + +- The COBOL Programming with VSCode PDF asset contains the course instructions. +- The Source code asset contains everything that was in the project when the release was published. + +To complete the course, you will also need to do one of the following: +- Select a [provider](#providers) below and follow their registration process. Once complete, you should be given system details to use in the course. +- Upload the source code for the course (located in the Labs folder) to your mainframe environment. + +If you run into any issues, please don't hesitate to reach out on our [slack channel](https://openmainframeproject.slack.com/archives/C011NE32Z1T). + +## Discussion + +You can connect with the community in a variety of ways... + +- [#cobol-programming-course channel on Open Mainframe Project Slack](https://slack.openmainframeproject.org) +- ['COBOL technical questions' category on Open Mainframe Project Community Forums](https://community.openmainframeproject.org/c/cobol-technical-questions/16) +- [COBOL Programming Course Discussion Mailing list](https://lists.openmainframeproject.org/g/cobol-course-discussion) + +## Providers + +These materials are being used by other organizations to provide COBOL training to the community. This project, nor Open Mainframe Project, doesn't review, maintain, or endorse any one of these particular providers. If you are using these materials in your training materials, feel free [to edit and issue a pull request](https://github.com/openmainframeproject/cobol-programming-course/edit/governance-docs/README.md) to have it included. + +- IBM has provided a [free environment for completing the labs](http://ibm.biz/cobollabs). +- IBM has provided a [free trial to IDz environment](https://developer.ibm.com/mainframe/products/ibm-z-open-development). + +## Build + +The PDF is built using the following [pandoc](https://pandoc.org/) command. Note: pdflatex is required. [MiKTeX](https://miktex.org/) can be installed to accomodate this. + +``` +pandoc "COBOL Programming with VSCode.md" -o "COBOL Programming with VSCode.pdf" --number-sections --toc -B Front_Matter.tex --listings +``` + +`Front_Matter.tex` contains the content before the table of contents. `COBOL Programming with VSCode.md` contains the body. The command combines the two, generates the section numbers and table of contents for the body, and outputs `COBOL Programming with VSCode.pdf` + +## Contributing + +Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. + +All contributions must align with the [Open Mainframe Project contribution guidelines](https://github.com/openmainframeproject/tac/blob/master/process/contribution_guidelines.md), including having a DCO signoff on all commits. + +## Governance + +This project is openly governed as defined in [GOVERNANCE.md](GOVERNANCE.md). + +## Credits + +The courseware materials were made available through a joint collaboration IBM, it's clients, and American River College and proposed as a new project by IBM. diff --git a/README.md b/README.md index 24a6824b..4f11ec95 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,12 @@ # COBOL Programming Course -This project is a set of training materials and labs for a "Getting Started" level course on COBOL. +This project is a set of training materials and labs for COBOL on z/OS. ## How to use -To begin, select a recent [release](https://github.com/openmainframeproject/cobol-programming-course/releases) of the course. Under a given release, you should see two assets. - -- The COBOL Programming with VSCode PDF asset contains the course instructions. -- The Source code asset contains everything that was in the project when the release was published. - -To complete the course, you will also need to do one of the following: -- Select a [provider](#providers) below and follow their registration process. Once complete, you should be given system details to use in the course. -- Upload the source code for the course (located in the Labs folder) to your mainframe environment. +The following books are available within this repository. To get started, follow the steps in their README. +[COBOL Programming Course #1 - Getting Started] If you run into any issues, please don't hesitate to reach out on our [slack channel](https://openmainframeproject.slack.com/archives/C011NE32Z1T). From e52628ffcebc934e7ecc385f0643efecedc5b30e Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 15:38:15 -0400 Subject: [PATCH 02/12] Add commercial tooling section Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- .../README.md | 41 ++++--------------- 1 file changed, 7 insertions(+), 34 deletions(-) diff --git a/COBOL Programming Course #1 - Getting Started/README.md b/COBOL Programming Course #1 - Getting Started/README.md index 24a6824b..a3bd78fd 100644 --- a/COBOL Programming Course #1 - Getting Started/README.md +++ b/COBOL Programming Course #1 - Getting Started/README.md @@ -1,16 +1,12 @@ -![](https://github.com/openmainframeproject/artwork/raw/master/projects/cobol-programming-course/cobol-programming-course-color.png) +# COBOL Programming Course #1 - Getting Started -![License](https://img.shields.io/github/license/OpenMainframeProject/cobol-programming-course) +This project is a set of training materials and labs for a "Getting Started" level course on COBOL. Free and publicly available client tooling is used to interact with the mainframe environment allowing participants to easily leverage these technologies after the course. See the Commercial Tooling [README](Commercial%20Tooling/README.md) for information on completing this course using commercial tooling. -# COBOL Programming Course - -This project is a set of training materials and labs for a "Getting Started" level course on COBOL. - -## How to use +## How to get started To begin, select a recent [release](https://github.com/openmainframeproject/cobol-programming-course/releases) of the course. Under a given release, you should see two assets. -- The COBOL Programming with VSCode PDF asset contains the course instructions. +- The COBOL Programming Course #1 - Getting Started PDF asset contains the course instructions. - The Source code asset contains everything that was in the project when the release was published. To complete the course, you will also need to do one of the following: @@ -19,41 +15,18 @@ To complete the course, you will also need to do one of the following: If you run into any issues, please don't hesitate to reach out on our [slack channel](https://openmainframeproject.slack.com/archives/C011NE32Z1T). -## Discussion - -You can connect with the community in a variety of ways... - -- [#cobol-programming-course channel on Open Mainframe Project Slack](https://slack.openmainframeproject.org) -- ['COBOL technical questions' category on Open Mainframe Project Community Forums](https://community.openmainframeproject.org/c/cobol-technical-questions/16) -- [COBOL Programming Course Discussion Mailing list](https://lists.openmainframeproject.org/g/cobol-course-discussion) - ## Providers These materials are being used by other organizations to provide COBOL training to the community. This project, nor Open Mainframe Project, doesn't review, maintain, or endorse any one of these particular providers. If you are using these materials in your training materials, feel free [to edit and issue a pull request](https://github.com/openmainframeproject/cobol-programming-course/edit/governance-docs/README.md) to have it included. -- IBM has provided a [free environment for completing the labs](http://ibm.biz/cobollabs). -- IBM has provided a [free trial to IDz environment](https://developer.ibm.com/mainframe/products/ibm-z-open-development). +- IBM has provided a [free environment for completing this lab](http://ibm.biz/cobollabs). ## Build The PDF is built using the following [pandoc](https://pandoc.org/) command. Note: pdflatex is required. [MiKTeX](https://miktex.org/) can be installed to accomodate this. ``` -pandoc "COBOL Programming with VSCode.md" -o "COBOL Programming with VSCode.pdf" --number-sections --toc -B Front_Matter.tex --listings +pandoc "COBOL Programming Course #1 - Getting Started.md" -o "COBOL Programming Course #1 - Getting Started.pdf" --number-sections --toc -B Front_Matter.tex --listings ``` -`Front_Matter.tex` contains the content before the table of contents. `COBOL Programming with VSCode.md` contains the body. The command combines the two, generates the section numbers and table of contents for the body, and outputs `COBOL Programming with VSCode.pdf` - -## Contributing - -Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. - -All contributions must align with the [Open Mainframe Project contribution guidelines](https://github.com/openmainframeproject/tac/blob/master/process/contribution_guidelines.md), including having a DCO signoff on all commits. - -## Governance - -This project is openly governed as defined in [GOVERNANCE.md](GOVERNANCE.md). - -## Credits - -The courseware materials were made available through a joint collaboration IBM, it's clients, and American River College and proposed as a new project by IBM. +`Front_Matter.tex` contains the content before the table of contents. `COBOL Programming Course #1 - Getting Started.md` contains the body. The command combines the two, generates the section numbers and table of contents for the body, and outputs `COBOL Programming Course #1 - Getting Started.pdf` \ No newline at end of file From ca19df1705e926a13db7c4e1878c1cf0a9e91452 Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 15:42:06 -0400 Subject: [PATCH 03/12] Add commercial tooling section Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- .gitignore | 2 +- ...amming Course #1 - Getting Started - IDz.md | 0 .../Commercial Tooling/README.md | 18 ++++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md create mode 100644 COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md diff --git a/.gitignore b/.gitignore index 43163393..d09096c8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ .DS_Store *~ -COBOL Programming with VSCode.pdf +*.pdf diff --git a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md new file mode 100644 index 00000000..e69de29b diff --git a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md new file mode 100644 index 00000000..62d11200 --- /dev/null +++ b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md @@ -0,0 +1,18 @@ +# COBOL Programming Course #1 - Getting Started - Commercial Tooling + +This directory contains implementations of COBOL Programming Course #1 using commercial tooling. Neither this project nor Open Mainframe Project reviews, maintains, or endorses any one of these commercial tools. If you would like to add your implementation of the course using commercial tooling, feel free to open a pull request to have it included. + +## How to get started + +There are currently no official releases of COBOL Programming Course #1 using commercial tooling. All content remains in development. However, you can view and contribute to the following implementations: +- [IBM Developer for z/OS](IBM%20Developer%20for%20zOS/COBOL%20Programming%20Course%20#1%20-%20Getting%20Started%20-%20IDz.md) + +## Providers + +To leverage commercial tooling while completing this course, vendors offer free trials for their commercial tools. + +- IBM has provided a [free trial to IDz environment](https://developer.ibm.com/mainframe/products/ibm-z-open-development). + +## Build + +PDFs can be built using [pandoc](https://pandoc.org/) and [MiKTeX](https://miktex.org/) \ No newline at end of file From a67e97f944751d998add4136d0627b5de19a163f Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 16:08:53 -0400 Subject: [PATCH 04/12] Add structure for additional books Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- ...Programming Course #2 - Advanced Topics.md | 0 .../README.md | 23 ++++++++++++++++ .../COBOL Programming Course #3 - Testing.md | 0 .../README.md | 23 ++++++++++++++++ README.md | 27 +++++-------------- 5 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 COBOL Programming Course #2 - Advanced Topics/COBOL Programming Course #2 - Advanced Topics.md create mode 100644 COBOL Programming Course #2 - Advanced Topics/README.md create mode 100644 COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md create mode 100644 COBOL Programming Course #3 - Testing/README.md diff --git a/COBOL Programming Course #2 - Advanced Topics/COBOL Programming Course #2 - Advanced Topics.md b/COBOL Programming Course #2 - Advanced Topics/COBOL Programming Course #2 - Advanced Topics.md new file mode 100644 index 00000000..e69de29b diff --git a/COBOL Programming Course #2 - Advanced Topics/README.md b/COBOL Programming Course #2 - Advanced Topics/README.md new file mode 100644 index 00000000..b8caf5cc --- /dev/null +++ b/COBOL Programming Course #2 - Advanced Topics/README.md @@ -0,0 +1,23 @@ +# COBOL Programming Course #2 - Advanced Topics + +This project is a set of training materials and labs for an Advanced Topics course on COBOL. Free and publicly available client tooling is used to interact with the mainframe environment allowing participants to easily leverage these technologies after the course. + +## How to get started + +There are currently no official releases of COBOL Programming Course #2 - Advanced Topics. All content remains in development. We encourage you to view and contribute to the [book](COBOL%20Programming%20Course%20#2%20-%20Advanced%20Topics.md) :) + +If you run into any issues, please don't hesitate to reach out on our [slack channel](https://openmainframeproject.slack.com/archives/C011NE32Z1T). + +## Providers + +These materials are being used by other organizations to provide COBOL training to the community. Neither this project nor Open Mainframe Project reviews, maintains, or endorses any one of these particular providers. If you are using these materials in your training materials, feel free [to edit and issue a pull request](https://github.com/openmainframeproject/cobol-programming-course/edit/governance-docs/README.md) to have it included. + +- IBM has provided a [free environment for completing this lab](http://ibm.biz/cobollabs). + +## Build + +A PDF can be built using the following [pandoc](https://pandoc.org/) command. Note: pdflatex is required. [MiKTeX](https://miktex.org/) can be installed to accomodate this. + +``` +pandoc "COBOL Programming Course #2 - Advanced Topics.md" -o "COBOL Programming Course #2 - Advanced Topics.pdf" --number-sections --toc --listings +``` \ No newline at end of file diff --git a/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md b/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md new file mode 100644 index 00000000..e69de29b diff --git a/COBOL Programming Course #3 - Testing/README.md b/COBOL Programming Course #3 - Testing/README.md new file mode 100644 index 00000000..5ad1f53f --- /dev/null +++ b/COBOL Programming Course #3 - Testing/README.md @@ -0,0 +1,23 @@ +# COBOL Programming Course #3 - Testing + +This project is a set of training materials and labs for testing COBOL applications on z/OS. Free and publicly available client tooling is used to interact with the mainframe environment allowing participants to easily leverage these technologies after the course. + +## How to get started + +There are currently no official releases of COBOL Programming Course #3 - Testing. All content remains in development. We encourage you to view and contribute to the [book](COBOL%20Programming%20Course%20#3%20-%20Testing.md) :) + +If you run into any issues, please don't hesitate to reach out on our [slack channel](https://openmainframeproject.slack.com/archives/C011NE32Z1T). + +## Providers + +These materials are being used by other organizations to provide COBOL training to the community. Neither this project nor Open Mainframe Project reviews, maintains, or endorses any one of these particular providers. If you are using these materials in your training materials, feel free [to edit and issue a pull request](https://github.com/openmainframeproject/cobol-programming-course/edit/governance-docs/README.md) to have it included. + +- IBM has provided a [free environment for completing this lab](http://ibm.biz/cobollabs). + +## Build + +A PDF can be built using the following [pandoc](https://pandoc.org/) command. Note: pdflatex is required. [MiKTeX](https://miktex.org/) can be installed to accomodate this. + +``` +pandoc "COBOL Programming Course #3 - Testing.md" -o "COBOL Programming Course #3 - Testing.pdf" --number-sections --toc --listings +``` \ No newline at end of file diff --git a/README.md b/README.md index 4f11ec95..c24b51af 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,14 @@ # COBOL Programming Course -This project is a set of training materials and labs for COBOL on z/OS. +This project is a set of training materials and labs for COBOL on z/OS. The following books are available within this repository. To get started, follow the steps in their respective READMEs. -## How to use +- Released + - [COBOL Programming Course #1 - Getting Started](COBOL%20Programming%20Course%20%231%20-%20Getting%20Started/README.md) -The following books are available within this repository. To get started, follow the steps in their README. -[COBOL Programming Course #1 - Getting Started] +- Incubation + - [COBOL Programming Course #2 - Advanced Topics](COBOL%20Programming%20Course%20%232%20-%20Advanced%20Topics/README.md) + - [COBOL Programming Course #3 - Testing](COBOL%20Programming%20Course%20%233%20-%20Testing/README.md) If you run into any issues, please don't hesitate to reach out on our [slack channel](https://openmainframeproject.slack.com/archives/C011NE32Z1T). @@ -21,23 +23,6 @@ You can connect with the community in a variety of ways... - ['COBOL technical questions' category on Open Mainframe Project Community Forums](https://community.openmainframeproject.org/c/cobol-technical-questions/16) - [COBOL Programming Course Discussion Mailing list](https://lists.openmainframeproject.org/g/cobol-course-discussion) -## Providers - -These materials are being used by other organizations to provide COBOL training to the community. This project, nor Open Mainframe Project, doesn't review, maintain, or endorse any one of these particular providers. If you are using these materials in your training materials, feel free [to edit and issue a pull request](https://github.com/openmainframeproject/cobol-programming-course/edit/governance-docs/README.md) to have it included. - -- IBM has provided a [free environment for completing the labs](http://ibm.biz/cobollabs). -- IBM has provided a [free trial to IDz environment](https://developer.ibm.com/mainframe/products/ibm-z-open-development). - -## Build - -The PDF is built using the following [pandoc](https://pandoc.org/) command. Note: pdflatex is required. [MiKTeX](https://miktex.org/) can be installed to accomodate this. - -``` -pandoc "COBOL Programming with VSCode.md" -o "COBOL Programming with VSCode.pdf" --number-sections --toc -B Front_Matter.tex --listings -``` - -`Front_Matter.tex` contains the content before the table of contents. `COBOL Programming with VSCode.md` contains the body. The command combines the two, generates the section numbers and table of contents for the body, and outputs `COBOL Programming with VSCode.pdf` - ## Contributing Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. From a97ce2d3de929e40dbfb9ad607408ab247738108 Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 16:29:04 -0400 Subject: [PATCH 05/12] Update release guidelines Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- RELEASE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RELEASE.md b/RELEASE.md index 0fb05827..3ea3902a 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -2,4 +2,4 @@ This project is generally a rolling release project ( meaning the latest HEAD of master is the current materials ), but generally it's advised that those looking to leverage these materials in something downstream ( such as other training materials or labs enviroments ) pull from the [latest release tag](https://github.com/openmainframeproject/cobol-programming-course/releases) which makes it easier to see where the materials derived from. -Releases are cut usually once a week from the then current HEAD of master, and provided as markdown files and source code only. If you desire a different format, please refer to the [build instructions](README.md#build). +Releases are cut usually once a month from the then current HEAD of master, and provided as pdfs and source code only. From 1486ec7fb20b7c8406e4e7c29efc93771da0c410 Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 16:39:41 -0400 Subject: [PATCH 06/12] Update README Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- COBOL Programming Course #1 - Getting Started/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/COBOL Programming Course #1 - Getting Started/README.md b/COBOL Programming Course #1 - Getting Started/README.md index a3bd78fd..3352c757 100644 --- a/COBOL Programming Course #1 - Getting Started/README.md +++ b/COBOL Programming Course #1 - Getting Started/README.md @@ -17,7 +17,7 @@ If you run into any issues, please don't hesitate to reach out on our [slack cha ## Providers -These materials are being used by other organizations to provide COBOL training to the community. This project, nor Open Mainframe Project, doesn't review, maintain, or endorse any one of these particular providers. If you are using these materials in your training materials, feel free [to edit and issue a pull request](https://github.com/openmainframeproject/cobol-programming-course/edit/governance-docs/README.md) to have it included. +These materials are being used by other organizations to provide COBOL training to the community. Neither this project nor Open Mainframe Project reviews, maintains, or endorses any one of these particular providers. If you are using these materials in your training materials, feel free [to edit and issue a pull request](https://github.com/openmainframeproject/cobol-programming-course/edit/governance-docs/README.md) to have it included. - IBM has provided a [free environment for completing this lab](http://ibm.biz/cobollabs). From b759646cc3ce4df972ec94c3debca725c9516376 Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 16:45:35 -0400 Subject: [PATCH 07/12] Separate commercial and testing content Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- ...Programming Course #1 - Getting Started.md | 1284 ----------------- ...mming Course #1 - Getting Started - IDz.md | 962 ++++++++++++ .../COBOL Programming Course #3 - Testing.md | 312 ++++ 3 files changed, 1274 insertions(+), 1284 deletions(-) diff --git a/COBOL Programming Course #1 - Getting Started/COBOL Programming Course #1 - Getting Started.md b/COBOL Programming Course #1 - Getting Started/COBOL Programming Course #1 - Getting Started.md index a13ab971..402a158b 100644 --- a/COBOL Programming Course #1 - Getting Started/COBOL Programming Course #1 - Getting Started.md +++ b/COBOL Programming Course #1 - Getting Started/COBOL Programming Course #1 - Getting Started.md @@ -3926,1287 +3926,3 @@ Previous lab programs made use of a date/time intrinsic function. The date/time **Lab Hints** Refer to CBL0011 line 120 for the proper formatting of the function-name causing the compile error. - -\newpage - -# Part 3 - VSCode alternatives and testing {.unnumbered} - -# Installing IBM Developer for Z - -This chapter covers all aspects of download and installation of IBM Developer for z/OS and any prerequisites that are needed. It includes: - -- **Install prerequisites** - - - **Hardware prerequisites** - - - **Software prerequisites** - - - **Download and install IBM's Installation Manager** - -- **Install product offerings through IM** - -- **Summary** - -## Install prerequisites - -This section will cover the necessary steps and information to download and install the prerequisites needed for the installation of IBM Developer for z/OS. This includes both hardware and software pre-requisites. It is important to verify your workstation hardware and software meets the prerequisites below before attempting to install IBM Developer for z/OS (IDz). - - -### Hardware prerequisites - -From the link below, you will find the requirements for installing and running IDz on the different supported OS platforms: Windows, Linux, Mac and z/OS. Select your proper platform and verify that your system meets the operating systems and hardware minimum requirements. - -- [https://www.ibm.com/support/pages/node/713257](https://www.ibm.com/support/pages/node/713257) - - -### Software prerequisites - -Also found in the link above, are the software requirements for each supported OS platform. After selecting your platform from the link, the software prerequisites are listed under the "Prerequisites" tab. - -- You will use the Installation Manager to automate the process of installing IBM Developer for z/OS (IDz) by selecting it in the Install Packages window. - - -### Download and install IBM's Installation Manager - -Use the following steps to download and install IBM's Installation Manager. - -1. Click the following link: [https://developer.ibm.com/mainframe/products/downloads/eclipse-tools/](https://developer.ibm.com/mainframe/products/downloads/eclipse-tools/) - - - This will open a page where you can scroll down to locate IBM Developer for z/OS - - - -**2.** **Check the box** , then scroll to the bottom of the page and click **Select** - - - -3. Click the **Aqua 3.1 Select** button - - - -4. Click either the **Installation Manager install** option or the**Eclipse p2 install** option - - - Note that Installation Manager is preferred as it automates much of the install process. - - - -5. Select "**Starting from fresh** " - - - -6. Download, unzip and install IBM Installation Manager (IM) and IDz using one of the following options: - - - User install: imLauncherWindowsUser.bat - - - Admin install: imLauncherWindows.bat - -The process of installing Installation Manager runs unattended. After it's finished, click **Restart Installation Manager** to install the product. - - - -## Install product offerings through IM - -Use the following steps to install IM packages: - - - -1. Select the product by **checking the box** next to IBM Developer for z/OS in Install Packages, shown in Figure 1. - -![](Images/image172.jpg) - -*Figure 1. Install packages* - -2. Click **Next** - - - Installation Manager will download the software components after resolving references to your operating system and to the Trial Software Repository. - - - -3. Read the License Agreement terms - and if you're willing to continue - - -4. **Accept** and click **Next** - - - -5. From Install Packages - click **Next** to accept the installation defaults - - - -6. From Select Language - English is the default, but you can change the language from the displayed product options. - - - -7. From Install Packages - click **Next** - - -8. From Configuration: - - - Check **Configure my z/OS connection now** - - - Enter the following values from Figure 2. : - -![](Images/image173.jpg) - -*Figure 2. Configuration options* - -9. Click **Next** and then **Finish** - -**Note:** The version numbers in our examples are provided purely for reference and may not reflect the latest versions of the software. - -## Summary - -In this chapter we have walked through the process of downloading and installing IBM's Installation Manage. Which was subsequently used to walk through a series of dialogs to install IDz. - -\newpage - -# Enabling IBM Developer for Z to work with COBOL - -In this chapter we will explain how to use IDz and its COBOL-specific language-sensitive-editor as an alternative to other editors mentioned in this book. We will also cover how using the editor can help you develop COBOL source code in a feature rich environment. - - -- **Introduction to IDz** - - - **What is IDz?** - - - **IDz architecture** - - - **Installing the IDz client** - -- **Basic editing in** IDz - - - **Launch IDz** - - - **Overview of the IDz/Eclipse workspace and tools** - - - **Accessing code on the mainframe - open a COBOL program** - - - **COBOL program syntax highlighting** - - - **Navigating within a COBOL file** - - - **Working with COBOL source** - - - **Saving your work** - - - **Working in Full Screen Mode** - - - **Code-completion (Content Assist)** - - - **Handling syntax errors - the IDz COBOL Parser** - -- **Access to batch jobs - launch and view results in JES** - -- **Summary** - - -## Introduction to IDz - -This section introduces IDz - IBM's flagship Integrated Development Environment for both today's production z/OS application work - tomorrow's DevOps application work - and future work with modern architectures and component-based systems. - - -### What is IDz? - -IBM Developer for z/OS Enterprise Edition is a comprehensive solution for creating and maintaining z/OS applications efficiently. The rich set of COBOL, PL/I, C/C++, High Level Assembler (HLASM), JCL, DB/SQL - including Stored Procedures and Java development tools and optimized tooling for Batch, CICS, IMS and DB2 runtimes, provide z/OS application developers a modern development environment for enhanced productivity. - -Typical uses for IDz include but are not limited to: - -- Access to Multiple Virtual Storage (MVS), z/OS Unix, Job Entry Subsystem (JES) artifacts from an Eclipse based environment - - - Eclipse is a modern GUI framework - widely used throughout the software development world on new and existing enterprise applications. - -- Issue z/OS commands directly - from within the Eclipse development environment. - -- Create new z/OS Datasets, members, Unix files and folders. - -- Drag and drop files from one z/OS logical partition (LPAR) to another or from workstation to z/OS and vice versa. - -- Intelligent and advanced remote edit / save and compile. - -### IDz architecture - -IDz has two basic components: - -a. An IDz Client - -b. A server-based "listener" that responds to development requests from the client - -The IDz Client is installed on your machine, by you, while your company's systems administration staff installs and configures the Server Listener on z/OS. The relationship between these two components is shown in Figure 1. - -![](Images/image174.jpg) - -*`Figure 1.` `IDz client/server architecture`* - - -### Installing the IDz client - -IBM provides a 60-day free, client trial license for this course. You can start the installation process from here: - -[https://developer.ibm.com/mainframe/products/downloads/eclipse-tools/](https://developer.ibm.com/mainframe/products/downloads/eclipse-tools/) - - - -## Basic editing in IDz - -For the rest of this chapter, we will use the CBL0001 sample program to demonstrate how rich of an experience editing COBOL in IDz can be. The steps covered are simply informative, to help the reader better understand through examples and visuals and are not required for the reader to complete. - - -### Launch IDz - -- Upon launching IDz from your desktop, IDz will prompt you for a "workspace" directory, shown in Figure 2. - - - For this example, we accept the default workspace and click **OK.** - -![](Images/image175.jpg) - -*Figure 2. IDz workspace directory selection* - -**Note:** a "Workspace" is a collection of folders on your PC that contain and manage your IDz client development environment, tools, preferences, etc. - - -### Overview of the IDz/Eclipse workspace and tools - -When the product loads it will look something like Figure 3. - - -![](Images/image176.jpg) - -*Figure 3. IDz workbench - after launch* - -Here are few terms and vocabulary that will be helpful at this point, illustrated in Figure 4. - -- The entire product (IDz client) you're looking at in Figure 4 is called the Workspace. - - - You can think of this Workspace as analogous to a development workbench - that has several preferences pre-configured. - -- The Workspace contains several Perspectives and a perspective is a defined layout for your tools - which are called Views. - -- A View is a singular tool for working on some aspect of a z/OS application. There are hundreds of IDz Views, each has a purpose, and in this book, we will use a subset of these views: - - - Editor - a view used to create or modify code - - - Remote Systems - a view for accessing code that resides on a mainframe - - - Properties - a view that shows you the attributes of something (often a file characteristics) - - - z/OS Projects - a view used to organize specific files for faster access - - - -![](Images/image177.jpg) - -*Figure 4. The Workspace annotated* - - -### Accessing code on the mainframe - open a COBOL program - -If you're using the IBM mainframe you will have a TSO ID assigned (and password) along with a group of files called "Libraries" named: `.CBL` `.JCL` `.LOAD` etc. To access code on the mainframe you would: - -- **Expand** `.CBL` - -- **Double-click: CBL0001.cbl** to load the program into the editor - -When the warning message in Figure 5. appears: - -- **Check "Do not show this message window again"** - -- **Close the Warning** - -![](Images/image178.jpg) - -*Figure 5. Warning message* - - -### COBOL program syntax highlighting - -The first thing you'll notice is that the COBOL source is highlighted in Figure 6, designating: - -- COBOL Keywords are indicated with blue font. - -- Variable (field) definitions: - - - Variables are defined elements in your COBOL program that hold data your program will process. - - - The variable names appear black in the editor. - - - Definitions of your variables are displayed in red/maroon font. - -- Remarks: - - - COBOL Remarks are used to document your program's behavior, design, purpose, etc. In CBL0001, Remarks (which start with an asterisk \* in column 7) are used to separate source lines making the program more legible. - - - -![](Images/image179.jpg) - -*Figure 6. CBL0001 sample program* - - -### Navigating within a COBOL file - -The first thing you will want to do with an open COBOL program file is to navigate within the file. There are several options you can use for this: - -- The scroll bars on the right-hand side of the view behave just like MS-Word. - -- Click the up/down arrows in the right-hand side to move down one line at a time. - -- PgUp and PgDn navigate through the code, one physical "page" of lines at a time. - -- You can click your mouse (set focus) inside the COBOL source and use the mouse scrolling wheel to move up and down within the file. - -- Ctrl+home jumps to the top of the source file. - -- Ctrl+End jumps to the bottom of the file. - -- The Outline View in Figure 7. is basically a program table-of-contents - displaying all the elements in your program organized within the COBOL language structure. Each element in the Outline View hyper-links the variables file definition and/or Paragraph in the program source to where the element is defined. - - - -![](Images/image180.jpg) - -*Figure 7. Outline view hyper-links* - - - - -### Working with COBOL source - -The Editor contains several dozen tools for doing efficient/effective development work with COBOL programs. None of the tools are difficult to use, but in this book, we concentrate on the tools & techniques needed for introductory COBOL programming. - - - -Before doing any development, you could press (simultaneously) **Ctrl+Shift+M.** This hot-key combination turns on COBOL line-number management - and will keep the sequence numbers in columns 7380 from shifting to the left and causing syntax errors. - -#### Basic source editing functionality: - -- How to change an existing line: - - - Select a line with your mouse cursor and type-over the existing statement. - - - Note that the standard MS-Windows Shift+Home, Shift+End keys work. - -- How to delete a line: - - - To Delete a line, select the line and delete it with the **Delete** key on your PC. - - - Or select the line and press: **Ctrl+X** , this will cut the line copying it to your clipboard. - -- How to add a line: - - - To add a line, click your mouse-cursor at the right-most end of the line (but to the left of the green COBOL sequence numbers in columns 73 80) and press **Enter.** - - -### Saving your work - -There are various ways that you can save your work during your session. From simply closing the file (Figure 8. ) and selecting **Yes** , to using a "hot-key" combination such as: - -- **Ctrl+S** - Saves your work (back to the mainframe) - -- **Ctrl+Z** - "Undoes" (backs out) previous edits - one at a time - -- **Ctrl+F4** - Displays the same save dialog shown in Figure 8 - -![](Images/image181.jpg) - -![](Images/image182.jpg) - -*Figure 8. Close and save a file* - - - -**Note:** From Figure 8 - Select **Yes** to close and save your work, **No** to close the file without saving and **Cancel** to return to Edit without having saved. - - -### Working in Full Screen Mode - -While the COBOL programs you have learned from and worked with in this course are not colossal in size, there are times you may have noticed the benefit from working in Full Screen Mode. Full Screen Mode allows you to see far more code at-a-glance, making it easier to both understand what a program does and make changes to the appropriate elements. - -- To enter Full-Screen Mode you would **double-click the tab with the program name on it** - on the top of the Editor View, shown in Figure 9. - -- To restore the View out of Full-Screen, double-click the tab a second time. - -![](Images/image183.jpg) - -*Figure 9. Double-Click the Editor View tab to enter Full-Screen mode* - - - -![](Images/image184.jpg) - -*Figure 10. Source code in Full Screen mode* - - -### Code-completion (Content Assist) - -Code-completion (or in Eclipse terms; "Content Assist") allows you to type partial text, press **Ctrl+Spacebar** and choose the completed COBOL keyword, variable name or COBOL paragraph label from a popup window, see Figure 11. All variables with names that begin with "ACC" are displayed. - -![](Images/image185.jpg) - -*Figure 11. Content Assist* - -You can also reference COBOL keywords by entering the beginning of the keyword and pressing Ctrl+Spacebar, displayed in Figure 12. - - -![](Images/image186.jpg) - -*Figure 12. Pressing Ctrl+Spacebar to view & select COBOL keywords* - - -### Handling syntax errors - the IDz COBOL Parser - -IDz also provides a level of syntax checking for its supported languages, including COBOL, JCL, SQL, PL/I, etc. Although not as complete and authoritative as the mainframe COBOL compiler (which produces executable machine instructions), it is a method of quickly identifying syntax errors in your code and is helpful to see before submitting the source file for compilation. - -To demonstrate, let's create an error and then see how the editor shows it to us. From Figure 13. you can see that we've misspelled "LASTREC" (it's been changed to LASTREC1). - -- Immediately after typing the letter "1" at the end of LASTREC the IDz COBOL parser: - - - Recognized the error and flagged it - - - Added a statement tip (recommendation) to change the spelling to LASTREC - - - -![](Images/image187.jpg) - -*Figure 13. Highlighting errors in source code* - - - -We can either choose to select the recommended change or do some more research on why that statement is considered invalid COBOL syntax. - - -## Access to batch jobs - launch and view results in JES - -After you have edited a program in the labs throughout this book, cleared up any syntax errors, saved and closed your file, you likely launched a JCL job to "compile and link" the code. This is often termed a "build operation", as it creates an executable version of your COBOL program ready to test and/or run and produce business results. - - - -The action of launching a batch job has been described in greater detail previously in this book. Below is a simple series of steps to illustrate an example of doing such in IDz: - -1. Obtain a "JCL file" that does the compile/link procedure, in our case this is HELLO.jcl, displayed in Figure 14. - - - -2. We then modified portions of the file in order to build the program/code, shown in Figure 14. - - - -3. Submit the JCL to a z/OS subsystem called JES (Job Entry Subsystem) by right clicking and selecting **Submit** from the menu that appears, as shown in Figure 14. - - -![](Images/image188.jpg) -*Figure 14. Submitting a JCL file* - - - -4. After submitting the JCL, there will be a prompt to locate the job from a job submission confirmation pop-up, see Figure 15. Here, you would select **Locate Job** . - - - -![](Images/image189.jpg) - -*Figure 15. Locate the Job after submission* - -5. Then navigate down to the JES elements in the Remote Systems view, open the job like Figure 16 shows and inspect the job results. - - - -![](Images/image190.jpg) - -*Figure 16. Access to JES and Jobs through Remote Systems* - - - -**JCL = Job Control Language -** A mainframe computing language that controls the running of "batch" jobs. A JCL File consists of JCL statements. - -**JES = Job Entry Subsystem -** An area in a mainframe that handles the running of "batch jobs" - -**Batch Job -** Work done on a mainframe in a non-interactive mode - overnight financial processing, updates to online databases and systems, etc. - - -## Summary - -In this chapter, you have been able to go through some of the key editing features of the IDz. These capabilities make editing COBOL, PL/I, JCL, Assembler, SQL and several other z/OS software languages (Java, JavaScript, HTLM, JSON, etc.) a little easier. - - - -We've covered, in this chapter, less than 5% of what IDz has to offer for the z/OS professional. To learn more: - - -- IBM instructional videos on IDz: - - [https://developer.ibm.com/mainframe/videos/](https://developer.ibm.com/mainframe/videos/) - -- Ongoing IBM (free) Remote Instructor-led training on IDz: - - [https://developer.ibm.com/mainframe/idzrdz-remote-training/](https://developer.ibm.com/mainframe/idzrdz-remote-training/) - -\newpage - -# Using ISPF to work with COBOL - -In this chapter we will explain how to use the tools of ISPF to develop COBOL source code, submit and manage jobs. - -- **Introduction to TSO/ISPF** - - - **What is TSO/ISPF?** - - - **TSO vs. ISPF** - - - **TSO/ISPF in the real world** - - - **ISPF emulation architecture** - - - **Accessing the 3270-Emulator** - -- **Basic editing** - - - **Launch IDz** - - - **Access TSO/ISPF from IDz** - - - **Log in to ISPF** - -- **Overview of the ISPF primary option menu** - - - **What if my cursor becomes stuck in the user interface?** - - - **Edit entry panel** - - - **ISPF edit** - - - **Navigating within a COBOL file** - - - **Working with COBOL source - Prefix Area** - - - **Saving your work** - -- **Access to batch jobs - launch and view results in JES** - - - **Steps - using the same basic workflow as edit** - -- **Summary** - - -## Introduction to TSO/ISPF - -This section introduces TSO/ISPF, IBM's central z/OS tooling, used in nearly 100% of the world's mainframe facilities to do application development and systems administration. - -### What is TSO/ISPF? - -Introduced in 1974, TSO/ISPF is a set of mainframe software components that built out almost all the mainframe systems and applications present in the business world yesterday and today. TSO/ISPF tooling is accessed via 3270-data stream technology ("Emulation") products that are PF-Key (program function key) tools, living in a character-based (not GUI) user interface. - -### TSO vs. ISPF - -Technically, TSO (Time Sharing Option) is an application that runs directly on z/OS machines - and ISPF (Interactive Systems Programming Facility) is the user-interface to TSO tools and functionality. Sometimes you will hear the term TSO, sometimes ISPF and sometimes TSO/ISPF. From the standpoint of COBOL programming, you can consider these to be synonymous. In this chapter, we will use the term ISPF (no one actually ever says "interactive systems programming facility" anyway). - - -### TSO/ISPF in the real world - -Every company's ISPF uses a base set of tools and features, but then customizes the interface; adding, changing or uninstalling features they feel are necessary for optimal use in their business/technical environment. - -Standard ISPF functionality includes: - -- Access to MVS files, z/OS Unix and JES artifacts using 3270-data stream (character-based) emulator. - - - Note that there are several ISPF emulation packages available. In this chapter, we'll be demonstrating and discussing ISPF using IDz's "Host Connection Emulation", which is a free component of IDz. - - - Ultimately, all the host ISPF software functionality is the same, so it won't matter much which product you use. - -- Issue z/OS commands directly. - -- Submit and manage z/OS "batch jobs" - executables that run unattended on the mainframe. - -- Create new z/OS Datasets, members, Unix files and folders. - -- Edit MVS files and Datasets. - - - Primary focus of this chapter. - - -### ISPF emulation architecture - -There are two basic components: - -a. A server-based "listener" that responds to development requests from the emulation client. - -b. Your ISPF Emulation Client, usually termed: 3270-Emulator - or just "emulator". - -You would be responsible for installing the emulator on your machine. Your company's systems administration staff would be responsible for installing and configuring the server listener on z/OS. In this book you spent nearly 100% of your time performing COBOL development activities, primarily; program edit and compile/link/run coding and testing programs. - - - -The ISPF Emulation architecture is depicted in Figure 1. Note that definitions of terms like RACF/ACF-2 and Top Secret (along with JES, CICS, REXX, etc.) can be found on the web. - - - -![](Images/image191.jpg) - -*Figure 1. `ISPF Emulation-z/OS architecture`* - - -### Accessing the 3270-Emulator - -Depending on what 3270-emulation product you're using, launching the product and setting it up will be different, and we can't cover all the alternatives in this book. However, because we will be documenting the use of TSO/ISPF using IDz, that is what our examples will be based on utilizing. To see a more detailed instruction on installing the client visit "Installing IBM Developer for Z". - - -## Basic editing - -For the rest of this chapter we will use the CBL0001 sample program to demonstrate editing COBOL using ISPF. The steps covered are simply informative, to help the reader better understand through examples and visuals and are not required for the reader to complete. - - -### Launch IDz - -- First, launch IDz from your desktop. - -- IDz will prompt for a "workspace" directory. - - - For the purposes of this book we accept the default workspace and click OK. - -- You will also be prompted for your TSO USERID and PASSWORD. - - -### Access TSO/ISPF from IDz - -- After IDz has launched - from Remote Systems: - - - Right-click on MVS Files and select: Host Connection Emulator. - -![](Images/image192.jpg) - -*Figure 2. Accessing IDz's built-in emulator* - - -### Log in to ISPF - -After selecting Host Connection Emulator, you should see something like a mainframe 3270-Emulator screen that lists mainframe applications available on your system, shown in Figure 3. This screen is site-specific, so what you see may not look exactly like Figure 3, but you should see something like "TSO" or "LOGON". - - - -*Figure 3. TN3270 z/OS access screen* - - - -If you've typed your TSO ID correctly, you will then be prompted for your TSO password, which you must obtain from your company or from you class instructor. See Figure 4. - - - -![](Images/image194.jpg) - -*Figure 4. Password login screen* - -Following a successfully entered password, you will see several system broadcast message screens. Each of them followed by three asterisks, shown in Figure 5. The asterisks are informing you that the system wants you to press **Enter** . - - - - - -![](Images/image195.jpg) - -*Figure 5. TSO "waiting for Enter messages or "prompts"* - - - -**Note:** The TSO system messages may contain important information, such as the disposition of a submitted job. - - - -## Overview of the ISPF primary option menu - -After you’ve pressed **Enter** , you should see something like Figure 6. , the ISPF Primary Option Menu, or simply the "primary menu". - - - -![](Images/image196.jpg) - -*Figure 6. ISPF primary option dialog* - - - -Note that the primary menu in Figure 6 shows 14 options - numbered 0 11, SD and U. There are also some PF Key assignments at the bottom of the screen. These PF Key assignments are consistent throughout the product and are defined as: - -- **F1** **Help** on the current screen (many ISPF professionals refer to these screens as "dialogs") - -- **F2** **Split** the screen horizontally. This allows you to work in two different areas simultaneously. - -- **F3** **Exit** or return from the prior tool menu. - -- **F7** **Page backward** - -- **F8** **Page forward** - -- **F9** **Swap** your cursor focus between split screens. - -- **F10** **Actions** bounces your cursor up to the Options at the top of the screen. - -- **F12** **Cancel** returns you to the previous z/OS application. In this case, F12 logs you out of ISPF and puts you in "Native TSO mode", which is similar to command line Unix and where you can enter commands to z/OS (the mainframe OS), but you cannot use ISPF to do development work. - -- **SD** **SDSF** (Systems Display and Search Facility) to view the status of batch "jobs". - -- **U** **Unix** access to the Unix subsystem running on z/OS. - -Every shop will have some small variation on the ISPF primary menu, but for now let's type the number two on the Option line and press **Enter,** as shown in Figure 7. - - - -![](Images/image197.jpg) - -*Figure 7. Accessing edit - option 2 from the ISPF primary menu* - - -### What if my cursor becomes stuck in the user interface? - -There are specific areas of 3270 screens designated for input, prefixed with: - -**Option = = = >** - - - -If your cursor focus is not on the option line and you type, you will "freeze" the screen. To get out of this situation: - -- Click the tiny square at the bottom left corner of your 3270 screen. - -- And press the **Attn** key, this will reset the screen for input allowing you to continue, shown in Figure 8. - -- ![](Images/image198.jpg) - -*Figure 8. IDz 3270 control keys* - - - -### Edit entry panel - -Figure 9. is an example of the edit entry panel. This screen allows you to specify the location of what you wish to edit. Note that you can create new programs and source files in TSO libraries (often referred to as Partitioned Data Sets (PDS). That is outside the scope of this chapter. - - - -There are numerous ways to specify a file to edit, but for now we're going to: - -1. List all the program files in a library. - -2. Select the program to edit from a list. - - -- From Figure 9. : - -- Type `CBL` on the Name . . . entry area - -- Press **Enter** - -This will bring up the PDS member selection screen (Figure 10. ). Note that you did not have to enter: .CBL. This is because ISPF knows your TSO logon and automatically prefixes it before file names on the dialog input lines, if the file name isn't surrounded by apostrophes. - - - -On the selection screen, hit the **tab** key three times and type an `S` next to CBL0001**,** then press **Enter** . This will open CBL0001 with the ISPF screen where we can edit the source, shown in Figure 12. - -![](Images/image199.jpg) - -*Figure 9. Edit (option 2) dialog (entry panel) - where you select a file to edit* - - - -![](Images/image200.jpg) - -*Figure 10. The PDS member selection screen - where you select (S) the file you want to edit* - - - -When the file initially opens you will probably get some warning text, which can be removed by typing `res` on the command line and pressing **Enter** , shown in Figure 11. - - - -![](Images/image201.jpg) - -*Figure 11. Resetting the warnings on the command line* - - - -![](Images/image202.jpg) - -*Figure 12. ISPF editor* - - -### ISPF edit - -The layout of the ISPF Editor is shown in Figure 12. The prominent areas include: - -- Command line - Where you issue change, find and navigation commands. - -- Prefix Area - Where you issue line-level source modification commands (copy/paste/etc.). - -- Your source file (COBOL Program Source). - -- PF-Key definitions for editing, for example, PF3 == "save and close my edit session". - -Note that there are dozens of ISPF productivity techniques, but in this chapter, we explore only a subset of them. - - - -### Navigating within a COBOL file - -The first thing you will want to do with an open COBOL program file is to navigate within the file. There are several options you can use for this: - -- PF-Key command navigation: - - - PF8 - Scrolls down in the source one physical page at a time. - - - PF7 - Scrolls up in the source one physical page at a time. - -- Command line command navigation: (see Figure 13. ) - note that the commands are not case-sensitive: - - - Bottom - Scrolls to the bottom of the file - - - Top - Scrolls to the top of file - - - Locate nn - Scrolls to the exact line number entered - - - Locate can be abbreviated to L - -![](Images/image203.jpg) - -*Figure 13. Issuing command line commands* - - -### Working with COBOL source - Prefix Area - -The ISPF editor contains several dozen tools for doing efficient/effective development work with COBOL programs. All are easy to learn, but in this section will concentrate on the tools & editing techniques needed for introductory COBOL programming. - -#### Basic source editing functionality (see Figure 14. ) - -- Change an existing line: - - - Type-over the existing statement(s). - -- Delete a line: - - - Type a `D` on the line in the Prefix Area. - - - Type `DD` on a line and `DD` on some line below it to "Block Delete" lines. - -- Repeat a line: - - - Type an `R` on the line in the Prefix Area. - - - Type `RR` on a line and `RR` on some line below it - to "Block Repeat" lines. - -- Insert a line: - - - Type an `I` on one line above where you want the line inserted. - - - Type `In` to insert multiple lines. - -- Copy a line: - - - Type a `C` on the line in the Prefix Area - and `A` (above) or `B` (below) a line where you want copied line to go. - - - Type `CC` on a line and `CC` on some line below it "Block Copy" lines. - -- Move a line: - - - Type an `M` on the line in the Prefix Area - and `A` (above) or `B` (below) a line where you want copied line to go. - -**o** Type `MM` on a line and `MM` on some line below it "Block Move" lines. - -![](Images/image204.jpg) - -*Figure 14. Series of Prefix Area commands "stacked" or issued simultaneously* - - -### Saving your work - -There are various ways that you can save your work: - -- Typing `save` on the command line saves your work and leaves you in ISPF edit. - -- Pressing **PF3** saves your work and exits ISPF edit. - -- Typing `cancel` on the command line cancels all changes since the previous save or the beginning of your ISPF edit session. - -- Typing `=X` on the command line exits ISPF edit back to the Primary Option Menu. - - - Note that you will be prompted to save or cancel changes to the file. - - > -## Access to batch jobs - launch and view results in JES - -After you have edited a program, cleared up any syntax errors, saved and closed your file, you will launch a JCL job to "compile and link" the code. This is often termed a "build operation", as it creates an executable version of your COBOL program ready to test and/or run and produce business results. - -This section demonstrates: - -- How to obtain a "JCL file" that does the compile/link procedure. - -- How to modify portions of the file in order to build your program/code. - -- How to "Submit the JCL" to a z/OS subsystem called "JES" (Job Entry Subsystem), see Figure 15. - -- After submitting the JCL, how to access the Outlist, see Figure 16. - -- How to navigate down to the JES elements in the Remote Systems view, open the job and inspect the job results shown in Figure 16. - - - -**JCL = Job Control Language -** A mainframe computing language that controls the running of "batch" jobs. A JCL file consists of JCL statements. - -**JES = Job Entry Subsystem -** An area in a mainframe that handles the running of "batch jobs". - -**Batch Job -** Work done on a mainframe in a non-interactive mode - overnight financial processing, updates to online databases and systems, etc. - - -### Steps - using the same basic workflow as edit - -- From Option 2: - - - Type `JCL` on the Other Partitioned files line and press **Enter** to create a list of files in this library - - - From the list, hit **tab** three times and select CBL0001J by typing an `S` next to the file name and pressing **Enter.** - - - Type `sub (or submit)` on the ISPF editor command line and press **Enter.** - - - Jot down - or remember - the JES number assigned to the job, shown in Figure 15. - - - Use the job Outlist tool assigned to you by your shop or instructor to validate results. - - - There are several different tools by IBM and third-party vendors that support the viewing, saving, printing, etc. of job output. - - - Consult with your instructor or manager to learn the steps in order to use them. - - - -![](Images/image205.jpg) - -*Figure 15.` `Submitting a JCL file* - -![](Images/image206.jpg) - -*Figure 16. Job number assigned by JES* - - - -## Summary - -In this chapter we have walked through some of the editing features using TSO/ISPF and the ISPF editor. These capabilities ease editing COBOL, PL/I, JCL, Assembler, SQL and several other z/OS software languages (REXX, CLIST, etc.). - - - -We've covered in this chapter less than 5% of what ISPF offers for the z/OS professional. To learn more, there are several quality books on the subject and videos available on YouTube. - -- A link to an excellent instructional video on ISPF: - - [https://www.youtube.com/watch?v=vOiHiI7b9iY](https://www.youtube.com/watch?v=vOiHiI7b9iY) - -\newpage - -# Testing - -In this chapter, we focus on the importance of thoroughly testing software to ensure its quality. No language or program is exempt from the importance of testing and automated testing, including programs written in COBOL. The chapter explains how this can only be achieved in an effective and efficient way by automating the testing as part of a continuous delivery pipeline and introduces a framework that can enable such automation. - - -We will look at some of the background to software testing and the different types of testing, the value to an enterprise of using a continuous integration/continuous delivery pipeline, why automation is vital in CI/CD pipelines, and the risks of not adopting automation. - - - -- **Importance of testing** - - - **What is testing and why do it?** - - - **What is unit testing?** - - - **What is function/integration/system testing?** - - - **The role of exploratory testing** - -- **Basics of continuous integration, continuous delivery** - - - **Introduction to DevOps and CI/CD pipelines** - - - **Focus on efficiency and automation through the pipeline** - - - **Tests as the quality gatekeeper through phases of the pipeline** - - - **Managing the pipeline when test cases fail** - -- **Testing on z/OS** - - - **Importance of testing on z/OS** - - - **Challenges for test automation on z/OS** - -- **Why does this matter?** - - - **Value of automated testing in continuous delivery** - - - **Dangers of not automating testing** - - - **Risks of not adopting continuous delivery** - - - **Use of automated testing for system reliability** - -- **How can test automation be achieved on z/OS?** - - -## Importance of testing - -If software is not tested, how can you or your users have confidence that it will behave as intended? - - - -> -### What is testing and why do it? - -Testing is the process of validating that software carries out the actions and provides the results that are expected. It can, and should, encompass a number of different types of testing carried out at a number of different phases during the development lifecycle of the product, and potentially continue after the software has been released. This allows errors and omissions in the software to be uncovered, as well as ensuring that it meets the user requirements. - - - -There are several alarming examples of software defects and problems that could have been avoided by applying the proper and sufficient testing. - - - -Put simply, software testing can be described as verification of the system or application under test. Cem Kaner offers this definition: - -"Software testing is an empirical technical investigation conducted to provide stakeholders with information about the quality of the product or service under test." - - - -### What is unit testing? - -Unit testing is the earliest phase of testing and validates that an individual unit or component of a software solution performs as designed. Unit testing is typically carried out by the developer who wrote the code within the unit or component under test, along with other early validation activities such as static analysis and code review. That is not to say that the unit tests created by the developer might also be re-run at later stages in the software lifecycle, to validate that the individual units still behave as intended. - - - -Unit testing is important because the earlier defects can be found (or avoided), the less resource is required to resolve them. A problem found early might be corrected by simple editing in minutes, whereas the same problem found later might require a lot of rewriting and re-testing. Unit testing also often takes advantage of the developer's knowledge of the internals of the unit or units being tested. - - - -The unit tests that are created as part of unit testing can also be very important, if they are designed in such a way that they can be run and re-run later in the development cycle, to validate that the behavior of the software units is still correct. - - -### What is function/integration/system testing? - -Beyond the realm of unit testing, which is carried out by the developer, are a range of types of testing that typically fall into the realm of the tester. These validate that when individual units of code are integrated together, or introduced into an existing software system, the overall system both continues to work correctly without any regressions and displays the new functionality that the new code is intended to enable. There are a multitude of terms used to define these different types of testing, and in most organizations, there will be a sequence of test phases through which code will pass, each with their own names. - - - -A useful approach to categorizing types of testing are the **Agile Test Quadrants** , introduced by Brian Marick ([http://www.exampler.com/old-blog/2003/08/21.1.html#agile-testing-project-1](http://www.exampler.com/old-blog/2003/08/21.1.html#agile-testing-project-1)). This looks at tests in terms of distinguishing whether they are business facing or technology facing, as well as whether they are used by or on behalf of programmers to support programming or are intended to critique the product. This results in four quadrants (see Figure 1): - - - -- **Quadrant Q1** looks at unit testing, as well as component and integration testing, all of which focus on the technology. - -- **Quadrant Q2** looks at more business facing and system level tests, such as functional tests and story tests. - -- **Quadrant Q3** represents tests that focus on the business-level capability of the product, and aim to critique or discover any problems with this, such as exploratory testing, usability and user acceptance testing - -- **Quadrant Q4** is focused on the system as a whole and how it meets business needs, but from a technology perspective, such as performance, load, stress, and security testing. - -- Quadrants Q1 and Q2 often lend themselves to automated testing, while Q3 requires a more exploratory and manual approach, and Q4 might require tools focused on testing for performance or security, for example. - -![](Images/image207.jpg) - -*Figure 1. Agile Testing Quadrants (from http://tryqa.com/what-are-test-pyramid-and-testing-quadrants-in-agile-testing-methodology/ )* - - - -Martin Fowler and Mike Kohn have discussed the concept of a Test Pyramid (see ’The Practical Test Pyramid’: [https://martinfowler.com/articles/practical-test-pyramid.html](https://martinfowler.com/articles/practical-test-pyramid.html)), which emphasizes the importance of a wide base of many small unit tests, then built upon that a set of equally important but less numerous tests that Mike Cohn called 'Service Tests'. At the top of the pyramid are 'End to End tests', which include user interface tests, and which test the entire system from end to end. Service tests covers a similar scope of testing as Integration Testing but is a term which has not gained much traction, and in our usage Integration Testing covers all the pyramid above the unit tests. - - - -This chapter is not going to attempt to provide definitive definitions of the various types of testing but will use 'Integration Testing' as an umbrella term to cover much of the testing that occurs after development and which lends itself to automation. This is where individual units of software are tested together, as well as being tested with other components including external parts of the system. Such tests are usually run in an environment that matches some aspects of the ultimate target environment for the software. Included within 'Integration Testing' are regression testing, functional testing, system testing, U.I. testing, end-to-end testing, user acceptance testing, performance testing. - - - -A distinction should be made between types of **testing** and types of **tests** . Unit tests for example can, and should, be run during later test phases, especially as part of regression testing. - - -### The role of exploratory testing - -Exploratory testing was defined by Cem Kaner in 1984 (see [http://www.kaner.com/pdfs/QAIExploring.pdf](http://www.kaner.com/pdfs/QAIExploring.pdf)) as, "a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of their work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project." - - - -Exploratory testing allows a tester to use their skills and experience to discover, investigate and learn about the behavior of the software under test. In the spirit of the Agile Manifesto, it emphasizes the "personal freedom and responsibility of the individual tester" ([https://www.guru99.com/exploratory-testing.html](https://www.guru99.com/exploratory-testing.html)). - - - -In terms of the Agile Testing Quadrants, exploratory testing lies towards the side that aims to 'critique the product', which is covered nicely in this post: [https://www.testingexcellence.com/exploratory-testing-important-agile-projects/](https://www.testingexcellence.com/exploratory-testing-important-agile-projects/) . - - - -Exploratory testing is often referred to as being a 'thinking' activity. It is also sometimes referred to as ad-hoc testing, but in reality, it is a much more directed and organized activity than being purely ad-hoc. - - - -This type of testing makes the best use of the skills of the tester, but clearly by its very nature does not lend itself to automation. The value of automation of testing lies in freeing the tester from the need to manually carry out repetitive and un-thinking testing. - - -## Basics of continuous integration, continuous delivery - -Continuous Integration and Continuous Delivery (CI/CD) are important practices within a DevOps approach, which allow software to be evolved and enhanced at a rate that meets the needs of the business and users, rather than being artificially delayed by long testing cycles which in turn result in a batching up of the delivery of software changes. - - -### Introduction to DevOps and CI/CD pipelines - -At its heart, DevOps refers to a building a greater collaboration between the software development and IT operations teams within an organization. By working together, the systems development lifecycle of building, testing and releasing software can be shortened, and software changes can be continuously integrated and continuously delivered to provide value more rapidly and reliably. - -A key step in adopting a successful DevOps approach is to set up a **CI/CD pipeline** . - -**Continuous Integration (CI)** is a technique first identified by Grady Booch, involving frequent checking in of small code changes made by a development team, which are merged together into a 'Master' code stream. CI provides a consistent way of building and packaging changes and validating that they work together, encouraging teams to commit changes more frequently. Martin Fowler summarized the benefits by saying that "Continuous Integration doesn't get rid of bugs, but it does make them dramatically easier to find and remove". - -**Continuous Delivery (CD)** progresses the code changes further around the pipeline process, by automating the delivery of the changed software to a series of environments for testing, and ultimately production. Some people distinguish between Continuous Delivery, which ensures working and tested releases of software are ready at any time, to production, but requires a manual decision process prior to that final deployment, and continuous deployment which also automates the releasing into production. - - - -All of this requires **Continuous Testing** to ensure that quality software is being made available at each stage, and ultimately delivered to production. To take this further, there is also value in continuous monitoring of the software in production, continuous feedback from stakeholders and users, and ultimately 'Continuous Everything'. - - - -Making everything as continuous and as automated as possible is what a **DevOps pipeline** aims to achieve. Such pipelines are often represented pictorially as a funnel, with code units being fed in at one end, passing through various phases of building and testing within a sequence of environments, and being delivered into production at the end. - - - -We prefer to represent the pipeline as a cyclical and iterative process, where developers write, build and unit test their code, repeating steps as needed. Then those units are fed into further cycles of integration and system styles of testing. Following release into production, the software system is continually monitored, and further enhancements are planned, resulting in the cycle being repeated. Figure 2 shows a schematic that represents this view of the pipeline. - - - -![](Images/image208.png) - -*Figure 2. Representation of a DevOps pipeline* - - - -In Figure 2, after planning for the next release, based on user input, and potentially analyzing the code to understand where to introduce the changes, the coding phase begins. The developer will write, build and unit test the code, gradually adding in function and ensuring that it works as an individual unit as intended, using their preferred IDE and preferred tools for source code management, dependency resolution, etc. When the code is ready, it will be delivered into the pipeline, which uses an artifact repository to manage the process. The software now enters the testing phases, where the test environments are provisioned (or might already exist), the code changes are deployed into the environment to be tested, and tests are run. The tests might, themselves, drive the provisioning and deployment, or this might be done separately. This phase of the pipeline is an iterative process, moving through different levels of testing, often in different environments. When failures occur, they need to be efficiently diagnosed, and if needed, the code will be amended, rebuilt, and unit tested again. Feedback from users will be sought during this phase, to ensure that what is being delivered meets their needs. When the code change has successfully passed all the required phases of testing, it will be released to production. The software changes and the production environment will continue to be monitored and planning for the next release can begin. Figure 2 illustrates some of the tools and products that might be used to implement the various stages of the pipeline. - -Some of these building blocks are probably in place at many enterprises, but it is likely that most of the activities are carried out in a manual way and it is the lack of automation of those steps that slows delivery. - - - -A DevOps pipeline can only be efficient, or indeed practical, if it can be automated. - - -### Focus on efficiency and automation through the pipeline - -The driver for building a CI/CD pipeline is to increase efficiency and speed of delivery. This means that all the steps in the pipeline need to be both quick and reliable and the only realistic way of achieving that is through automation. - - -### Tests as the quality gatekeeper through phases of the pipeline - -As a software change is delivered through a CI/CD pipeline, it is important to ensure its quality and readiness to move on to the next phase. Testing is the gatekeeper that can give confidence that this is the case - and can also flag up where it is not. - -This testing also needs to be carried out continuously, as each change is delivered. 'Continuous testing' has been described as being a process of "testing early, testing often, testing everywhere, and automate" ([https://www.guru99.com/continuous-testing.html](https://www.guru99.com/continuous-testing.html)). - - - -A key principle of the move to DevOps and a CI/CD pipeline is that as much of the testing as possible needs to be automated. Also, it is not just the tests themselves that need to be automated, but also the checking of whether the tests have passed. - - - -**Some quotes on the importance of test automation:** - -"To achieve such speed and agility, it is important to automate all the testing processes and configure them to run automatically when the deployment is completed in the QA environment." From [https://www.softwaretestinghelp.com/devops-and-software-testing/](https://www.softwaretestinghelp.com/devops-and-software-testing/) - -"Test automation has become crucial to keep quality control intact while maintaining the speed of releases." From [https://dzone.com/articles/role-of-test-automation-in-devops](https://dzone.com/articles/role-of-test-automation-in-devops) - -[DevOps can simply not succeed if it still requires a large number of test cases to be run manually.](https://twitter.com/intent/tweet?source=webclient&via=atlassian&text=DevOps%20can%20simply%20not%20succeed%20if%20it%20still%20requires%20a%20large%20number%20of%20test%20cases%20to%20be%20run%20manually.&url=https://www.atlassian.com/blog/devops/test-automation-secret-devops-success) - - - -However, not all testing can or should be automated. Exploratory testing might well follow different paths as a result of what is discovered during the process. Penetration testing often relies on innovation and trying something new, which is difficult to automate. User acceptance testing will often involve users interacting with the system in a flexible way. - - - -**Testing versus Checking** - -Testing is an interactive activity that involves evaluating whether software meets its purpose, by exploring and experimenting with its behavior. This requires human creativity and cannot be automated. What is possible to automate is the checking that the software meets these expectations that we have discovered by testing. James Bach and Michael Bolton introduced this distinction between testing and checking (see [https://www.satisfice.com/blog/archives/856](https://www.satisfice.com/blog/archives/856)): "we distinguish between aspects of the testing process that machines can do versus those that only skilled humans can do. We have done this linguistically by adapting the ordinary English word “checking” to refer to what tools can do.". - - - -When we speak of testing in this chapter from this point on, we are referring to what would more strictly be called **checking**, rather than testing. - - - -The key point is that anything that lends itself to automation should be automated, to allow time for these other activities where automation is genuinely not appropriate. The fact that something is quite difficult to automate should not be used as an excuse for failing to automate it. - - -### Managing the pipeline when test cases fail - -As noted above, if the tests are automated, but checking or reacting to their results is not, then that is only half of the story. When building a CI/CD pipeline, thought should be given to what happens when test cases fail. - - - -The diagnostics that will reveal the cause of the failure should be collected in a known location and made available in an easy way to the engineer who will investigate the problem. The software change that caused the failure should be easily identifiable, and its progress through the pipeline should be halted, or reversed. Other software changes that have not caused the failure should be able to continue unimpeded, unless they are only viable with the failing change, which should also be something the pipeline can detect and act upon. Finally, it is possible that the failure could be due to a problem with the test or the test environment, and those possibilities must also be easy to detect and investigate. - - -## Testing on z/OS - -Many organizations have chosen IBM Z for the most critical aspects of their businesses, especially in industries including banking, insurance, and retail, where disruptions cannot be tolerated. This means that in addition to relying on the inherent reliability, security and resilience of the platform, such companies also carry out extensive testing before introducing any change. - - -### Importance of testing on z/OS - -Due to the mission critical nature of the software and applications running on z/OS, testing is vital to ensure that services can be provided uninterrupted, and that any change will both work as intended and not impact anything else. This makes testing arguably more vital on z/OS than on any other platform. - - - -The terminology used to describe the various phases of testing of z/OS applications indicate the importance that organizations attach to this testing, with terms like 'Quality Assurance' testing, 'Pre-Production' testing, 'User Acceptance' testing, not to mention the extensive phases of regression testing and performance testing required when introducing any change into the system. - - - -This means that the estimates for any project that makes changes to an application on z/OS, or for a new application, include a very large portion of effort allocated to testing. - - -### Challenges for test automation on z/OS - -With such extensive testing required, it might be thought that test automation would be widespread on z/OS. However, test automation on z/OS has historically proved to be very difficult. - - - -Surveys and user research carried out by the IBM CICS Transaction Server for z/OS organization have shown that between 92 and 95% of testing on the platform is entirely or mostly manual, which is in line with industry estimates that place the percentage of manual testing at around 80% ("Even today, 80 percent of enterprise testing is done manually." - Sandeep Johri, Tricentis CEO). The manual testing can vary in nature from a test suite that just needs to be set up and run manually, to typing in a sequence of steps that are described in a hardcopy book of test cases. - - - -Why is test automation such a challenge on z/OS? Some of the reasons are: - -- Very large systems have been built up over the years; large both in terms of the number and size of components making up each application, and in terms of the environment in which the applications run. Finding a way to drive these large systems as part of an automated test has proved challenging. - -- There is a lack of test automation tools that understand the z/OS operating system, its subsystems and file stores, to make it practical to adopt these tools. - -- The data is tightly integrated with the applications which use it and is often used by multiple applications. Providing suitable test data, which can be isolated for use by each test run, and reset to known values, has been very challenging. - -- Many applications rely on components which were developed many years ago, which means that testing needs to ensure these components will still run without issues or regressions. As Rosalind Radcliffe put it, "The best thing about the mainframe is a module compiled 40 years ago will still run. The worst thing about the mainframe is a module compiled 40 years ago will still run." [https://www.sonatype.com/an-innovators-journey-rosalind-radcliffe](https://www.sonatype.com/an-innovators-journey-rosalind-radcliffe) - -The difficulty in achieving this has resulted in falling back to manual processes and checks, and as a result continuing to use waterfall processes. To quote Sandeep Johri again, "If you move to Agile development but your testing cycle is still 6 to 12 weeks due to manual testing, you’ll fall right back into a Waterfall mode” ([https://devops.com/devops-chat-continuous-testing-w-sandeep-johri-ceo-tricentis/](https://devops.com/devops-chat-continuous-testing-w-sandeep-johri-ceo-tricentis/)). If the testing cycle takes a long time, then developers will be tempted to group together lots of changes to get them tested all together, which is entirely counter to the idea of continuous integration. - - - -## Why does this matter? - -Organizations that use z/OS for their mission-critical systems have enjoyed growth and success for many years. So, does it matter if most of the testing is done manually? In today's world, it is important to be able to respond very rapidly to new market opportunities and threats, and to have confidence in the quality and robustness of the services that you provide. - - -### Value of automated testing in continuous delivery - -As we have seen, if testing cannot be automated, then it is difficult if not impossible to gain the benefits of continuous delivery, reducing the agility of an organization and its ability to react and innovate quickly. Even responding to a new competitive threat or compliance regulation might not be possible without a CI/CD pipeline and automated testing. - - -### Dangers of not automating testing - -If an organization continues to test manually, then they run the risk that the test cycle will be too long to enable the required agility and speed to market, or the amount of testing will have to be reduced, leading to uncertainty over the quality of the software being delivered, or perhaps both. - - -### Risks of not adopting continuous delivery - -If an organization does not adopt a continuous delivery approach, in which small changes can be constantly delivered and tested, then there is a tendency to save up all the changes until enough have been made to justify the large effort involved in testing a software release. Not only does this mean that users endure a long wait for new function to become available, but if problems occur then it is harder to identify the cause and to isolate the failing component. - - -Even more damaging could be the impact of being unable to deliver function rapidly into the marketplace, and missing opportunities as a result. - - -### Use of automated testing for system reliability - -With automated testing in place, it is easy to run the checks which ensure the software is working as expected. So, whenever a change is introduced into the system, such as applying maintenance, a hardware upgrade, or updates to another component, there is automation available to verify that all is as it should be. This also means that such changes can be made more easily and with more confidence. - - -## How can test automation be achieved on z/OS? - -Many organizations have built, or are now building, CI/CD pipelines for their z/OS applications, with considerable success. These teams are looking to test automation to help them achieve an efficient pipeline. This chapter described an approach to test automation on z/OS, by using a framework for automating tests which offers deep integration with z/OS capabilities. - - diff --git a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md index e69de29b..ccf733ac 100644 --- a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md +++ b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md @@ -0,0 +1,962 @@ +# Installing IBM Developer for Z + +This chapter covers all aspects of download and installation of IBM Developer for z/OS and any prerequisites that are needed. It includes: + +- **Install prerequisites** + + - **Hardware prerequisites** + + - **Software prerequisites** + + - **Download and install IBM's Installation Manager** + +- **Install product offerings through IM** + +- **Summary** + +## Install prerequisites + +This section will cover the necessary steps and information to download and install the prerequisites needed for the installation of IBM Developer for z/OS. This includes both hardware and software pre-requisites. It is important to verify your workstation hardware and software meets the prerequisites below before attempting to install IBM Developer for z/OS (IDz). + + +### Hardware prerequisites + +From the link below, you will find the requirements for installing and running IDz on the different supported OS platforms: Windows, Linux, Mac and z/OS. Select your proper platform and verify that your system meets the operating systems and hardware minimum requirements. + +- [https://www.ibm.com/support/pages/node/713257](https://www.ibm.com/support/pages/node/713257) + + +### Software prerequisites + +Also found in the link above, are the software requirements for each supported OS platform. After selecting your platform from the link, the software prerequisites are listed under the "Prerequisites" tab. + +- You will use the Installation Manager to automate the process of installing IBM Developer for z/OS (IDz) by selecting it in the Install Packages window. + + +### Download and install IBM's Installation Manager + +Use the following steps to download and install IBM's Installation Manager. + +1. Click the following link: [https://developer.ibm.com/mainframe/products/downloads/eclipse-tools/](https://developer.ibm.com/mainframe/products/downloads/eclipse-tools/) + + - This will open a page where you can scroll down to locate IBM Developer for z/OS + + + +**2.** **Check the box** , then scroll to the bottom of the page and click **Select** + + + +3. Click the **Aqua 3.1 Select** button + + + +4. Click either the **Installation Manager install** option or the**Eclipse p2 install** option + + - Note that Installation Manager is preferred as it automates much of the install process. + + + +5. Select "**Starting from fresh** " + + + +6. Download, unzip and install IBM Installation Manager (IM) and IDz using one of the following options: + + - User install: imLauncherWindowsUser.bat + + - Admin install: imLauncherWindows.bat + +The process of installing Installation Manager runs unattended. After it's finished, click **Restart Installation Manager** to install the product. + + + +## Install product offerings through IM + +Use the following steps to install IM packages: + + + +1. Select the product by **checking the box** next to IBM Developer for z/OS in Install Packages, shown in Figure 1. + +![](Images/image172.jpg) + +*Figure 1. Install packages* + +2. Click **Next** + + - Installation Manager will download the software components after resolving references to your operating system and to the Trial Software Repository. + + + +3. Read the License Agreement terms - and if you're willing to continue + + +4. **Accept** and click **Next** + + + +5. From Install Packages - click **Next** to accept the installation defaults + + + +6. From Select Language - English is the default, but you can change the language from the displayed product options. + + + +7. From Install Packages - click **Next** + + +8. From Configuration: + + - Check **Configure my z/OS connection now** + + - Enter the following values from Figure 2. : + +![](Images/image173.jpg) + +*Figure 2. Configuration options* + +9. Click **Next** and then **Finish** + +**Note:** The version numbers in our examples are provided purely for reference and may not reflect the latest versions of the software. + +## Summary + +In this chapter we have walked through the process of downloading and installing IBM's Installation Manage. Which was subsequently used to walk through a series of dialogs to install IDz. + +\newpage + +# Enabling IBM Developer for Z to work with COBOL + +In this chapter we will explain how to use IDz and its COBOL-specific language-sensitive-editor as an alternative to other editors mentioned in this book. We will also cover how using the editor can help you develop COBOL source code in a feature rich environment. + + +- **Introduction to IDz** + + - **What is IDz?** + + - **IDz architecture** + + - **Installing the IDz client** + +- **Basic editing in** IDz + + - **Launch IDz** + + - **Overview of the IDz/Eclipse workspace and tools** + + - **Accessing code on the mainframe - open a COBOL program** + + - **COBOL program syntax highlighting** + + - **Navigating within a COBOL file** + + - **Working with COBOL source** + + - **Saving your work** + + - **Working in Full Screen Mode** + + - **Code-completion (Content Assist)** + + - **Handling syntax errors - the IDz COBOL Parser** + +- **Access to batch jobs - launch and view results in JES** + +- **Summary** + + +## Introduction to IDz + +This section introduces IDz - IBM's flagship Integrated Development Environment for both today's production z/OS application work - tomorrow's DevOps application work - and future work with modern architectures and component-based systems. + + +### What is IDz? + +IBM Developer for z/OS Enterprise Edition is a comprehensive solution for creating and maintaining z/OS applications efficiently. The rich set of COBOL, PL/I, C/C++, High Level Assembler (HLASM), JCL, DB/SQL - including Stored Procedures and Java development tools and optimized tooling for Batch, CICS, IMS and DB2 runtimes, provide z/OS application developers a modern development environment for enhanced productivity. + +Typical uses for IDz include but are not limited to: + +- Access to Multiple Virtual Storage (MVS), z/OS Unix, Job Entry Subsystem (JES) artifacts from an Eclipse based environment + + - Eclipse is a modern GUI framework - widely used throughout the software development world on new and existing enterprise applications. + +- Issue z/OS commands directly - from within the Eclipse development environment. + +- Create new z/OS Datasets, members, Unix files and folders. + +- Drag and drop files from one z/OS logical partition (LPAR) to another or from workstation to z/OS and vice versa. + +- Intelligent and advanced remote edit / save and compile. + +### IDz architecture + +IDz has two basic components: + +a. An IDz Client + +b. A server-based "listener" that responds to development requests from the client + +The IDz Client is installed on your machine, by you, while your company's systems administration staff installs and configures the Server Listener on z/OS. The relationship between these two components is shown in Figure 1. + +![](Images/image174.jpg) + +*`Figure 1.` `IDz client/server architecture`* + + +### Installing the IDz client + +IBM provides a 60-day free, client trial license for this course. You can start the installation process from here: + +[https://developer.ibm.com/mainframe/products/downloads/eclipse-tools/](https://developer.ibm.com/mainframe/products/downloads/eclipse-tools/) + + + +## Basic editing in IDz + +For the rest of this chapter, we will use the CBL0001 sample program to demonstrate how rich of an experience editing COBOL in IDz can be. The steps covered are simply informative, to help the reader better understand through examples and visuals and are not required for the reader to complete. + + +### Launch IDz + +- Upon launching IDz from your desktop, IDz will prompt you for a "workspace" directory, shown in Figure 2. + + - For this example, we accept the default workspace and click **OK.** + +![](Images/image175.jpg) + +*Figure 2. IDz workspace directory selection* + +**Note:** a "Workspace" is a collection of folders on your PC that contain and manage your IDz client development environment, tools, preferences, etc. + + +### Overview of the IDz/Eclipse workspace and tools + +When the product loads it will look something like Figure 3. + + +![](Images/image176.jpg) + +*Figure 3. IDz workbench - after launch* + +Here are few terms and vocabulary that will be helpful at this point, illustrated in Figure 4. + +- The entire product (IDz client) you're looking at in Figure 4 is called the Workspace. + + - You can think of this Workspace as analogous to a development workbench - that has several preferences pre-configured. + +- The Workspace contains several Perspectives and a perspective is a defined layout for your tools - which are called Views. + +- A View is a singular tool for working on some aspect of a z/OS application. There are hundreds of IDz Views, each has a purpose, and in this book, we will use a subset of these views: + + - Editor - a view used to create or modify code + + - Remote Systems - a view for accessing code that resides on a mainframe + + - Properties - a view that shows you the attributes of something (often a file characteristics) + + - z/OS Projects - a view used to organize specific files for faster access + + + +![](Images/image177.jpg) + +*Figure 4. The Workspace annotated* + + +### Accessing code on the mainframe - open a COBOL program + +If you're using the IBM mainframe you will have a TSO ID assigned (and password) along with a group of files called "Libraries" named: `.CBL` `.JCL` `.LOAD` etc. To access code on the mainframe you would: + +- **Expand** `.CBL` + +- **Double-click: CBL0001.cbl** to load the program into the editor + +When the warning message in Figure 5. appears: + +- **Check "Do not show this message window again"** + +- **Close the Warning** + +![](Images/image178.jpg) + +*Figure 5. Warning message* + + +### COBOL program syntax highlighting + +The first thing you'll notice is that the COBOL source is highlighted in Figure 6, designating: + +- COBOL Keywords are indicated with blue font. + +- Variable (field) definitions: + + - Variables are defined elements in your COBOL program that hold data your program will process. + + - The variable names appear black in the editor. + + - Definitions of your variables are displayed in red/maroon font. + +- Remarks: + + - COBOL Remarks are used to document your program's behavior, design, purpose, etc. In CBL0001, Remarks (which start with an asterisk \* in column 7) are used to separate source lines making the program more legible. + + + +![](Images/image179.jpg) + +*Figure 6. CBL0001 sample program* + + +### Navigating within a COBOL file + +The first thing you will want to do with an open COBOL program file is to navigate within the file. There are several options you can use for this: + +- The scroll bars on the right-hand side of the view behave just like MS-Word. + +- Click the up/down arrows in the right-hand side to move down one line at a time. + +- PgUp and PgDn navigate through the code, one physical "page" of lines at a time. + +- You can click your mouse (set focus) inside the COBOL source and use the mouse scrolling wheel to move up and down within the file. + +- Ctrl+home jumps to the top of the source file. + +- Ctrl+End jumps to the bottom of the file. + +- The Outline View in Figure 7. is basically a program table-of-contents - displaying all the elements in your program organized within the COBOL language structure. Each element in the Outline View hyper-links the variables file definition and/or Paragraph in the program source to where the element is defined. + + + +![](Images/image180.jpg) + +*Figure 7. Outline view hyper-links* + + + + +### Working with COBOL source + +The Editor contains several dozen tools for doing efficient/effective development work with COBOL programs. None of the tools are difficult to use, but in this book, we concentrate on the tools & techniques needed for introductory COBOL programming. + + + +Before doing any development, you could press (simultaneously) **Ctrl+Shift+M.** This hot-key combination turns on COBOL line-number management - and will keep the sequence numbers in columns 7380 from shifting to the left and causing syntax errors. + +#### Basic source editing functionality: + +- How to change an existing line: + + - Select a line with your mouse cursor and type-over the existing statement. + + - Note that the standard MS-Windows Shift+Home, Shift+End keys work. + +- How to delete a line: + + - To Delete a line, select the line and delete it with the **Delete** key on your PC. + + - Or select the line and press: **Ctrl+X** , this will cut the line copying it to your clipboard. + +- How to add a line: + + - To add a line, click your mouse-cursor at the right-most end of the line (but to the left of the green COBOL sequence numbers in columns 73 80) and press **Enter.** + + +### Saving your work + +There are various ways that you can save your work during your session. From simply closing the file (Figure 8. ) and selecting **Yes** , to using a "hot-key" combination such as: + +- **Ctrl+S** - Saves your work (back to the mainframe) + +- **Ctrl+Z** - "Undoes" (backs out) previous edits - one at a time + +- **Ctrl+F4** - Displays the same save dialog shown in Figure 8 + +![](Images/image181.jpg) + +![](Images/image182.jpg) + +*Figure 8. Close and save a file* + + + +**Note:** From Figure 8 - Select **Yes** to close and save your work, **No** to close the file without saving and **Cancel** to return to Edit without having saved. + + +### Working in Full Screen Mode + +While the COBOL programs you have learned from and worked with in this course are not colossal in size, there are times you may have noticed the benefit from working in Full Screen Mode. Full Screen Mode allows you to see far more code at-a-glance, making it easier to both understand what a program does and make changes to the appropriate elements. + +- To enter Full-Screen Mode you would **double-click the tab with the program name on it** - on the top of the Editor View, shown in Figure 9. + +- To restore the View out of Full-Screen, double-click the tab a second time. + +![](Images/image183.jpg) + +*Figure 9. Double-Click the Editor View tab to enter Full-Screen mode* + + + +![](Images/image184.jpg) + +*Figure 10. Source code in Full Screen mode* + + +### Code-completion (Content Assist) + +Code-completion (or in Eclipse terms; "Content Assist") allows you to type partial text, press **Ctrl+Spacebar** and choose the completed COBOL keyword, variable name or COBOL paragraph label from a popup window, see Figure 11. All variables with names that begin with "ACC" are displayed. + +![](Images/image185.jpg) + +*Figure 11. Content Assist* + +You can also reference COBOL keywords by entering the beginning of the keyword and pressing Ctrl+Spacebar, displayed in Figure 12. + + +![](Images/image186.jpg) + +*Figure 12. Pressing Ctrl+Spacebar to view & select COBOL keywords* + + +### Handling syntax errors - the IDz COBOL Parser + +IDz also provides a level of syntax checking for its supported languages, including COBOL, JCL, SQL, PL/I, etc. Although not as complete and authoritative as the mainframe COBOL compiler (which produces executable machine instructions), it is a method of quickly identifying syntax errors in your code and is helpful to see before submitting the source file for compilation. + +To demonstrate, let's create an error and then see how the editor shows it to us. From Figure 13. you can see that we've misspelled "LASTREC" (it's been changed to LASTREC1). + +- Immediately after typing the letter "1" at the end of LASTREC the IDz COBOL parser: + + - Recognized the error and flagged it + + - Added a statement tip (recommendation) to change the spelling to LASTREC + + + +![](Images/image187.jpg) + +*Figure 13. Highlighting errors in source code* + + + +We can either choose to select the recommended change or do some more research on why that statement is considered invalid COBOL syntax. + + +## Access to batch jobs - launch and view results in JES + +After you have edited a program in the labs throughout this book, cleared up any syntax errors, saved and closed your file, you likely launched a JCL job to "compile and link" the code. This is often termed a "build operation", as it creates an executable version of your COBOL program ready to test and/or run and produce business results. + + + +The action of launching a batch job has been described in greater detail previously in this book. Below is a simple series of steps to illustrate an example of doing such in IDz: + +1. Obtain a "JCL file" that does the compile/link procedure, in our case this is HELLO.jcl, displayed in Figure 14. + + + +2. We then modified portions of the file in order to build the program/code, shown in Figure 14. + + + +3. Submit the JCL to a z/OS subsystem called JES (Job Entry Subsystem) by right clicking and selecting **Submit** from the menu that appears, as shown in Figure 14. + + +![](Images/image188.jpg) +*Figure 14. Submitting a JCL file* + + + +4. After submitting the JCL, there will be a prompt to locate the job from a job submission confirmation pop-up, see Figure 15. Here, you would select **Locate Job** . + + + +![](Images/image189.jpg) + +*Figure 15. Locate the Job after submission* + +5. Then navigate down to the JES elements in the Remote Systems view, open the job like Figure 16 shows and inspect the job results. + + + +![](Images/image190.jpg) + +*Figure 16. Access to JES and Jobs through Remote Systems* + + + +**JCL = Job Control Language -** A mainframe computing language that controls the running of "batch" jobs. A JCL File consists of JCL statements. + +**JES = Job Entry Subsystem -** An area in a mainframe that handles the running of "batch jobs" + +**Batch Job -** Work done on a mainframe in a non-interactive mode - overnight financial processing, updates to online databases and systems, etc. + + +## Summary + +In this chapter, you have been able to go through some of the key editing features of the IDz. These capabilities make editing COBOL, PL/I, JCL, Assembler, SQL and several other z/OS software languages (Java, JavaScript, HTLM, JSON, etc.) a little easier. + + + +We've covered, in this chapter, less than 5% of what IDz has to offer for the z/OS professional. To learn more: + + +- IBM instructional videos on IDz: + + [https://developer.ibm.com/mainframe/videos/](https://developer.ibm.com/mainframe/videos/) + +- Ongoing IBM (free) Remote Instructor-led training on IDz: + + [https://developer.ibm.com/mainframe/idzrdz-remote-training/](https://developer.ibm.com/mainframe/idzrdz-remote-training/) + +\newpage + +# Using ISPF to work with COBOL + +In this chapter we will explain how to use the tools of ISPF to develop COBOL source code, submit and manage jobs. + +- **Introduction to TSO/ISPF** + + - **What is TSO/ISPF?** + + - **TSO vs. ISPF** + + - **TSO/ISPF in the real world** + + - **ISPF emulation architecture** + + - **Accessing the 3270-Emulator** + +- **Basic editing** + + - **Launch IDz** + + - **Access TSO/ISPF from IDz** + + - **Log in to ISPF** + +- **Overview of the ISPF primary option menu** + + - **What if my cursor becomes stuck in the user interface?** + + - **Edit entry panel** + + - **ISPF edit** + + - **Navigating within a COBOL file** + + - **Working with COBOL source - Prefix Area** + + - **Saving your work** + +- **Access to batch jobs - launch and view results in JES** + + - **Steps - using the same basic workflow as edit** + +- **Summary** + + +## Introduction to TSO/ISPF + +This section introduces TSO/ISPF, IBM's central z/OS tooling, used in nearly 100% of the world's mainframe facilities to do application development and systems administration. + +### What is TSO/ISPF? + +Introduced in 1974, TSO/ISPF is a set of mainframe software components that built out almost all the mainframe systems and applications present in the business world yesterday and today. TSO/ISPF tooling is accessed via 3270-data stream technology ("Emulation") products that are PF-Key (program function key) tools, living in a character-based (not GUI) user interface. + +### TSO vs. ISPF + +Technically, TSO (Time Sharing Option) is an application that runs directly on z/OS machines - and ISPF (Interactive Systems Programming Facility) is the user-interface to TSO tools and functionality. Sometimes you will hear the term TSO, sometimes ISPF and sometimes TSO/ISPF. From the standpoint of COBOL programming, you can consider these to be synonymous. In this chapter, we will use the term ISPF (no one actually ever says "interactive systems programming facility" anyway). + + +### TSO/ISPF in the real world + +Every company's ISPF uses a base set of tools and features, but then customizes the interface; adding, changing or uninstalling features they feel are necessary for optimal use in their business/technical environment. + +Standard ISPF functionality includes: + +- Access to MVS files, z/OS Unix and JES artifacts using 3270-data stream (character-based) emulator. + + - Note that there are several ISPF emulation packages available. In this chapter, we'll be demonstrating and discussing ISPF using IDz's "Host Connection Emulation", which is a free component of IDz. + + - Ultimately, all the host ISPF software functionality is the same, so it won't matter much which product you use. + +- Issue z/OS commands directly. + +- Submit and manage z/OS "batch jobs" - executables that run unattended on the mainframe. + +- Create new z/OS Datasets, members, Unix files and folders. + +- Edit MVS files and Datasets. + + - Primary focus of this chapter. + + +### ISPF emulation architecture + +There are two basic components: + +a. A server-based "listener" that responds to development requests from the emulation client. + +b. Your ISPF Emulation Client, usually termed: 3270-Emulator - or just "emulator". + +You would be responsible for installing the emulator on your machine. Your company's systems administration staff would be responsible for installing and configuring the server listener on z/OS. In this book you spent nearly 100% of your time performing COBOL development activities, primarily; program edit and compile/link/run coding and testing programs. + + + +The ISPF Emulation architecture is depicted in Figure 1. Note that definitions of terms like RACF/ACF-2 and Top Secret (along with JES, CICS, REXX, etc.) can be found on the web. + + + +![](Images/image191.jpg) + +*Figure 1. `ISPF Emulation-z/OS architecture`* + + +### Accessing the 3270-Emulator + +Depending on what 3270-emulation product you're using, launching the product and setting it up will be different, and we can't cover all the alternatives in this book. However, because we will be documenting the use of TSO/ISPF using IDz, that is what our examples will be based on utilizing. To see a more detailed instruction on installing the client visit "Installing IBM Developer for Z". + + +## Basic editing + +For the rest of this chapter we will use the CBL0001 sample program to demonstrate editing COBOL using ISPF. The steps covered are simply informative, to help the reader better understand through examples and visuals and are not required for the reader to complete. + + +### Launch IDz + +- First, launch IDz from your desktop. + +- IDz will prompt for a "workspace" directory. + + - For the purposes of this book we accept the default workspace and click OK. + +- You will also be prompted for your TSO USERID and PASSWORD. + + +### Access TSO/ISPF from IDz + +- After IDz has launched - from Remote Systems: + + - Right-click on MVS Files and select: Host Connection Emulator. + +![](Images/image192.jpg) + +*Figure 2. Accessing IDz's built-in emulator* + + +### Log in to ISPF + +After selecting Host Connection Emulator, you should see something like a mainframe 3270-Emulator screen that lists mainframe applications available on your system, shown in Figure 3. This screen is site-specific, so what you see may not look exactly like Figure 3, but you should see something like "TSO" or "LOGON". + + + +*Figure 3. TN3270 z/OS access screen* + + + +If you've typed your TSO ID correctly, you will then be prompted for your TSO password, which you must obtain from your company or from you class instructor. See Figure 4. + + + +![](Images/image194.jpg) + +*Figure 4. Password login screen* + +Following a successfully entered password, you will see several system broadcast message screens. Each of them followed by three asterisks, shown in Figure 5. The asterisks are informing you that the system wants you to press **Enter** . + + + + + +![](Images/image195.jpg) + +*Figure 5. TSO "waiting for Enter messages or "prompts"* + + + +**Note:** The TSO system messages may contain important information, such as the disposition of a submitted job. + + + +## Overview of the ISPF primary option menu + +After you’ve pressed **Enter** , you should see something like Figure 6. , the ISPF Primary Option Menu, or simply the "primary menu". + + + +![](Images/image196.jpg) + +*Figure 6. ISPF primary option dialog* + + + +Note that the primary menu in Figure 6 shows 14 options - numbered 0 11, SD and U. There are also some PF Key assignments at the bottom of the screen. These PF Key assignments are consistent throughout the product and are defined as: + +- **F1** **Help** on the current screen (many ISPF professionals refer to these screens as "dialogs") + +- **F2** **Split** the screen horizontally. This allows you to work in two different areas simultaneously. + +- **F3** **Exit** or return from the prior tool menu. + +- **F7** **Page backward** + +- **F8** **Page forward** + +- **F9** **Swap** your cursor focus between split screens. + +- **F10** **Actions** bounces your cursor up to the Options at the top of the screen. + +- **F12** **Cancel** returns you to the previous z/OS application. In this case, F12 logs you out of ISPF and puts you in "Native TSO mode", which is similar to command line Unix and where you can enter commands to z/OS (the mainframe OS), but you cannot use ISPF to do development work. + +- **SD** **SDSF** (Systems Display and Search Facility) to view the status of batch "jobs". + +- **U** **Unix** access to the Unix subsystem running on z/OS. + +Every shop will have some small variation on the ISPF primary menu, but for now let's type the number two on the Option line and press **Enter,** as shown in Figure 7. + + + +![](Images/image197.jpg) + +*Figure 7. Accessing edit - option 2 from the ISPF primary menu* + + +### What if my cursor becomes stuck in the user interface? + +There are specific areas of 3270 screens designated for input, prefixed with: + +**Option = = = >** + + + +If your cursor focus is not on the option line and you type, you will "freeze" the screen. To get out of this situation: + +- Click the tiny square at the bottom left corner of your 3270 screen. + +- And press the **Attn** key, this will reset the screen for input allowing you to continue, shown in Figure 8. + +- ![](Images/image198.jpg) + +*Figure 8. IDz 3270 control keys* + + + +### Edit entry panel + +Figure 9. is an example of the edit entry panel. This screen allows you to specify the location of what you wish to edit. Note that you can create new programs and source files in TSO libraries (often referred to as Partitioned Data Sets (PDS). That is outside the scope of this chapter. + + + +There are numerous ways to specify a file to edit, but for now we're going to: + +1. List all the program files in a library. + +2. Select the program to edit from a list. + + +- From Figure 9. : + +- Type `CBL` on the Name . . . entry area + +- Press **Enter** + +This will bring up the PDS member selection screen (Figure 10. ). Note that you did not have to enter: .CBL. This is because ISPF knows your TSO logon and automatically prefixes it before file names on the dialog input lines, if the file name isn't surrounded by apostrophes. + + + +On the selection screen, hit the **tab** key three times and type an `S` next to CBL0001**,** then press **Enter** . This will open CBL0001 with the ISPF screen where we can edit the source, shown in Figure 12. + +![](Images/image199.jpg) + +*Figure 9. Edit (option 2) dialog (entry panel) - where you select a file to edit* + + + +![](Images/image200.jpg) + +*Figure 10. The PDS member selection screen - where you select (S) the file you want to edit* + + + +When the file initially opens you will probably get some warning text, which can be removed by typing `res` on the command line and pressing **Enter** , shown in Figure 11. + + + +![](Images/image201.jpg) + +*Figure 11. Resetting the warnings on the command line* + + + +![](Images/image202.jpg) + +*Figure 12. ISPF editor* + + +### ISPF edit + +The layout of the ISPF Editor is shown in Figure 12. The prominent areas include: + +- Command line - Where you issue change, find and navigation commands. + +- Prefix Area - Where you issue line-level source modification commands (copy/paste/etc.). + +- Your source file (COBOL Program Source). + +- PF-Key definitions for editing, for example, PF3 == "save and close my edit session". + +Note that there are dozens of ISPF productivity techniques, but in this chapter, we explore only a subset of them. + + + +### Navigating within a COBOL file + +The first thing you will want to do with an open COBOL program file is to navigate within the file. There are several options you can use for this: + +- PF-Key command navigation: + + - PF8 - Scrolls down in the source one physical page at a time. + + - PF7 - Scrolls up in the source one physical page at a time. + +- Command line command navigation: (see Figure 13. ) - note that the commands are not case-sensitive: + + - Bottom - Scrolls to the bottom of the file + + - Top - Scrolls to the top of file + + - Locate nn - Scrolls to the exact line number entered + + - Locate can be abbreviated to L + +![](Images/image203.jpg) + +*Figure 13. Issuing command line commands* + + +### Working with COBOL source - Prefix Area + +The ISPF editor contains several dozen tools for doing efficient/effective development work with COBOL programs. All are easy to learn, but in this section will concentrate on the tools & editing techniques needed for introductory COBOL programming. + +#### Basic source editing functionality (see Figure 14. ) + +- Change an existing line: + + - Type-over the existing statement(s). + +- Delete a line: + + - Type a `D` on the line in the Prefix Area. + + - Type `DD` on a line and `DD` on some line below it to "Block Delete" lines. + +- Repeat a line: + + - Type an `R` on the line in the Prefix Area. + + - Type `RR` on a line and `RR` on some line below it - to "Block Repeat" lines. + +- Insert a line: + + - Type an `I` on one line above where you want the line inserted. + + - Type `In` to insert multiple lines. + +- Copy a line: + + - Type a `C` on the line in the Prefix Area - and `A` (above) or `B` (below) a line where you want copied line to go. + + - Type `CC` on a line and `CC` on some line below it "Block Copy" lines. + +- Move a line: + + - Type an `M` on the line in the Prefix Area - and `A` (above) or `B` (below) a line where you want copied line to go. + +**o** Type `MM` on a line and `MM` on some line below it "Block Move" lines. + +![](Images/image204.jpg) + +*Figure 14. Series of Prefix Area commands "stacked" or issued simultaneously* + + +### Saving your work + +There are various ways that you can save your work: + +- Typing `save` on the command line saves your work and leaves you in ISPF edit. + +- Pressing **PF3** saves your work and exits ISPF edit. + +- Typing `cancel` on the command line cancels all changes since the previous save or the beginning of your ISPF edit session. + +- Typing `=X` on the command line exits ISPF edit back to the Primary Option Menu. + + - Note that you will be prompted to save or cancel changes to the file. + + > +## Access to batch jobs - launch and view results in JES + +After you have edited a program, cleared up any syntax errors, saved and closed your file, you will launch a JCL job to "compile and link" the code. This is often termed a "build operation", as it creates an executable version of your COBOL program ready to test and/or run and produce business results. + +This section demonstrates: + +- How to obtain a "JCL file" that does the compile/link procedure. + +- How to modify portions of the file in order to build your program/code. + +- How to "Submit the JCL" to a z/OS subsystem called "JES" (Job Entry Subsystem), see Figure 15. + +- After submitting the JCL, how to access the Outlist, see Figure 16. + +- How to navigate down to the JES elements in the Remote Systems view, open the job and inspect the job results shown in Figure 16. + + + +**JCL = Job Control Language -** A mainframe computing language that controls the running of "batch" jobs. A JCL file consists of JCL statements. + +**JES = Job Entry Subsystem -** An area in a mainframe that handles the running of "batch jobs". + +**Batch Job -** Work done on a mainframe in a non-interactive mode - overnight financial processing, updates to online databases and systems, etc. + + +### Steps - using the same basic workflow as edit + +- From Option 2: + + - Type `JCL` on the Other Partitioned files line and press **Enter** to create a list of files in this library + + - From the list, hit **tab** three times and select CBL0001J by typing an `S` next to the file name and pressing **Enter.** + + - Type `sub (or submit)` on the ISPF editor command line and press **Enter.** + + - Jot down - or remember - the JES number assigned to the job, shown in Figure 15. + + - Use the job Outlist tool assigned to you by your shop or instructor to validate results. + + - There are several different tools by IBM and third-party vendors that support the viewing, saving, printing, etc. of job output. + + - Consult with your instructor or manager to learn the steps in order to use them. + + + +![](Images/image205.jpg) + +*Figure 15.` `Submitting a JCL file* + +![](Images/image206.jpg) + +*Figure 16. Job number assigned by JES* + + + +## Summary + +In this chapter we have walked through some of the editing features using TSO/ISPF and the ISPF editor. These capabilities ease editing COBOL, PL/I, JCL, Assembler, SQL and several other z/OS software languages (REXX, CLIST, etc.). + + + +We've covered in this chapter less than 5% of what ISPF offers for the z/OS professional. To learn more, there are several quality books on the subject and videos available on YouTube. + +- A link to an excellent instructional video on ISPF: + + [https://www.youtube.com/watch?v=vOiHiI7b9iY](https://www.youtube.com/watch?v=vOiHiI7b9iY) diff --git a/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md b/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md index e69de29b..b00a245f 100644 --- a/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md +++ b/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md @@ -0,0 +1,312 @@ +# Testing + +In this chapter, we focus on the importance of thoroughly testing software to ensure its quality. No language or program is exempt from the importance of testing and automated testing, including programs written in COBOL. The chapter explains how this can only be achieved in an effective and efficient way by automating the testing as part of a continuous delivery pipeline and introduces a framework that can enable such automation. + + +We will look at some of the background to software testing and the different types of testing, the value to an enterprise of using a continuous integration/continuous delivery pipeline, why automation is vital in CI/CD pipelines, and the risks of not adopting automation. + + + +- **Importance of testing** + + - **What is testing and why do it?** + + - **What is unit testing?** + + - **What is function/integration/system testing?** + + - **The role of exploratory testing** + +- **Basics of continuous integration, continuous delivery** + + - **Introduction to DevOps and CI/CD pipelines** + + - **Focus on efficiency and automation through the pipeline** + + - **Tests as the quality gatekeeper through phases of the pipeline** + + - **Managing the pipeline when test cases fail** + +- **Testing on z/OS** + + - **Importance of testing on z/OS** + + - **Challenges for test automation on z/OS** + +- **Why does this matter?** + + - **Value of automated testing in continuous delivery** + + - **Dangers of not automating testing** + + - **Risks of not adopting continuous delivery** + + - **Use of automated testing for system reliability** + +- **How can test automation be achieved on z/OS?** + + +## Importance of testing + +If software is not tested, how can you or your users have confidence that it will behave as intended? + + + +> +### What is testing and why do it? + +Testing is the process of validating that software carries out the actions and provides the results that are expected. It can, and should, encompass a number of different types of testing carried out at a number of different phases during the development lifecycle of the product, and potentially continue after the software has been released. This allows errors and omissions in the software to be uncovered, as well as ensuring that it meets the user requirements. + + + +There are several alarming examples of software defects and problems that could have been avoided by applying the proper and sufficient testing. + + + +Put simply, software testing can be described as verification of the system or application under test. Cem Kaner offers this definition: + +"Software testing is an empirical technical investigation conducted to provide stakeholders with information about the quality of the product or service under test." + + + +### What is unit testing? + +Unit testing is the earliest phase of testing and validates that an individual unit or component of a software solution performs as designed. Unit testing is typically carried out by the developer who wrote the code within the unit or component under test, along with other early validation activities such as static analysis and code review. That is not to say that the unit tests created by the developer might also be re-run at later stages in the software lifecycle, to validate that the individual units still behave as intended. + + + +Unit testing is important because the earlier defects can be found (or avoided), the less resource is required to resolve them. A problem found early might be corrected by simple editing in minutes, whereas the same problem found later might require a lot of rewriting and re-testing. Unit testing also often takes advantage of the developer's knowledge of the internals of the unit or units being tested. + + + +The unit tests that are created as part of unit testing can also be very important, if they are designed in such a way that they can be run and re-run later in the development cycle, to validate that the behavior of the software units is still correct. + + +### What is function/integration/system testing? + +Beyond the realm of unit testing, which is carried out by the developer, are a range of types of testing that typically fall into the realm of the tester. These validate that when individual units of code are integrated together, or introduced into an existing software system, the overall system both continues to work correctly without any regressions and displays the new functionality that the new code is intended to enable. There are a multitude of terms used to define these different types of testing, and in most organizations, there will be a sequence of test phases through which code will pass, each with their own names. + + + +A useful approach to categorizing types of testing are the **Agile Test Quadrants** , introduced by Brian Marick ([http://www.exampler.com/old-blog/2003/08/21.1.html#agile-testing-project-1](http://www.exampler.com/old-blog/2003/08/21.1.html#agile-testing-project-1)). This looks at tests in terms of distinguishing whether they are business facing or technology facing, as well as whether they are used by or on behalf of programmers to support programming or are intended to critique the product. This results in four quadrants (see Figure 1): + + + +- **Quadrant Q1** looks at unit testing, as well as component and integration testing, all of which focus on the technology. + +- **Quadrant Q2** looks at more business facing and system level tests, such as functional tests and story tests. + +- **Quadrant Q3** represents tests that focus on the business-level capability of the product, and aim to critique or discover any problems with this, such as exploratory testing, usability and user acceptance testing + +- **Quadrant Q4** is focused on the system as a whole and how it meets business needs, but from a technology perspective, such as performance, load, stress, and security testing. + +- Quadrants Q1 and Q2 often lend themselves to automated testing, while Q3 requires a more exploratory and manual approach, and Q4 might require tools focused on testing for performance or security, for example. + +![](Images/image207.jpg) + +*Figure 1. Agile Testing Quadrants (from http://tryqa.com/what-are-test-pyramid-and-testing-quadrants-in-agile-testing-methodology/ )* + + + +Martin Fowler and Mike Kohn have discussed the concept of a Test Pyramid (see ’The Practical Test Pyramid’: [https://martinfowler.com/articles/practical-test-pyramid.html](https://martinfowler.com/articles/practical-test-pyramid.html)), which emphasizes the importance of a wide base of many small unit tests, then built upon that a set of equally important but less numerous tests that Mike Cohn called 'Service Tests'. At the top of the pyramid are 'End to End tests', which include user interface tests, and which test the entire system from end to end. Service tests covers a similar scope of testing as Integration Testing but is a term which has not gained much traction, and in our usage Integration Testing covers all the pyramid above the unit tests. + + + +This chapter is not going to attempt to provide definitive definitions of the various types of testing but will use 'Integration Testing' as an umbrella term to cover much of the testing that occurs after development and which lends itself to automation. This is where individual units of software are tested together, as well as being tested with other components including external parts of the system. Such tests are usually run in an environment that matches some aspects of the ultimate target environment for the software. Included within 'Integration Testing' are regression testing, functional testing, system testing, U.I. testing, end-to-end testing, user acceptance testing, performance testing. + + + +A distinction should be made between types of **testing** and types of **tests** . Unit tests for example can, and should, be run during later test phases, especially as part of regression testing. + + +### The role of exploratory testing + +Exploratory testing was defined by Cem Kaner in 1984 (see [http://www.kaner.com/pdfs/QAIExploring.pdf](http://www.kaner.com/pdfs/QAIExploring.pdf)) as, "a style of software testing that emphasizes the personal freedom and responsibility of the individual tester to continually optimize the quality of their work by treating test-related learning, test design, test execution, and test result interpretation as mutually supportive activities that run in parallel throughout the project." + + + +Exploratory testing allows a tester to use their skills and experience to discover, investigate and learn about the behavior of the software under test. In the spirit of the Agile Manifesto, it emphasizes the "personal freedom and responsibility of the individual tester" ([https://www.guru99.com/exploratory-testing.html](https://www.guru99.com/exploratory-testing.html)). + + + +In terms of the Agile Testing Quadrants, exploratory testing lies towards the side that aims to 'critique the product', which is covered nicely in this post: [https://www.testingexcellence.com/exploratory-testing-important-agile-projects/](https://www.testingexcellence.com/exploratory-testing-important-agile-projects/) . + + + +Exploratory testing is often referred to as being a 'thinking' activity. It is also sometimes referred to as ad-hoc testing, but in reality, it is a much more directed and organized activity than being purely ad-hoc. + + + +This type of testing makes the best use of the skills of the tester, but clearly by its very nature does not lend itself to automation. The value of automation of testing lies in freeing the tester from the need to manually carry out repetitive and un-thinking testing. + + +## Basics of continuous integration, continuous delivery + +Continuous Integration and Continuous Delivery (CI/CD) are important practices within a DevOps approach, which allow software to be evolved and enhanced at a rate that meets the needs of the business and users, rather than being artificially delayed by long testing cycles which in turn result in a batching up of the delivery of software changes. + + +### Introduction to DevOps and CI/CD pipelines + +At its heart, DevOps refers to a building a greater collaboration between the software development and IT operations teams within an organization. By working together, the systems development lifecycle of building, testing and releasing software can be shortened, and software changes can be continuously integrated and continuously delivered to provide value more rapidly and reliably. + +A key step in adopting a successful DevOps approach is to set up a **CI/CD pipeline** . + +**Continuous Integration (CI)** is a technique first identified by Grady Booch, involving frequent checking in of small code changes made by a development team, which are merged together into a 'Master' code stream. CI provides a consistent way of building and packaging changes and validating that they work together, encouraging teams to commit changes more frequently. Martin Fowler summarized the benefits by saying that "Continuous Integration doesn't get rid of bugs, but it does make them dramatically easier to find and remove". + +**Continuous Delivery (CD)** progresses the code changes further around the pipeline process, by automating the delivery of the changed software to a series of environments for testing, and ultimately production. Some people distinguish between Continuous Delivery, which ensures working and tested releases of software are ready at any time, to production, but requires a manual decision process prior to that final deployment, and continuous deployment which also automates the releasing into production. + + + +All of this requires **Continuous Testing** to ensure that quality software is being made available at each stage, and ultimately delivered to production. To take this further, there is also value in continuous monitoring of the software in production, continuous feedback from stakeholders and users, and ultimately 'Continuous Everything'. + + + +Making everything as continuous and as automated as possible is what a **DevOps pipeline** aims to achieve. Such pipelines are often represented pictorially as a funnel, with code units being fed in at one end, passing through various phases of building and testing within a sequence of environments, and being delivered into production at the end. + + + +We prefer to represent the pipeline as a cyclical and iterative process, where developers write, build and unit test their code, repeating steps as needed. Then those units are fed into further cycles of integration and system styles of testing. Following release into production, the software system is continually monitored, and further enhancements are planned, resulting in the cycle being repeated. Figure 2 shows a schematic that represents this view of the pipeline. + + + +![](Images/image208.png) + +*Figure 2. Representation of a DevOps pipeline* + + + +In Figure 2, after planning for the next release, based on user input, and potentially analyzing the code to understand where to introduce the changes, the coding phase begins. The developer will write, build and unit test the code, gradually adding in function and ensuring that it works as an individual unit as intended, using their preferred IDE and preferred tools for source code management, dependency resolution, etc. When the code is ready, it will be delivered into the pipeline, which uses an artifact repository to manage the process. The software now enters the testing phases, where the test environments are provisioned (or might already exist), the code changes are deployed into the environment to be tested, and tests are run. The tests might, themselves, drive the provisioning and deployment, or this might be done separately. This phase of the pipeline is an iterative process, moving through different levels of testing, often in different environments. When failures occur, they need to be efficiently diagnosed, and if needed, the code will be amended, rebuilt, and unit tested again. Feedback from users will be sought during this phase, to ensure that what is being delivered meets their needs. When the code change has successfully passed all the required phases of testing, it will be released to production. The software changes and the production environment will continue to be monitored and planning for the next release can begin. Figure 2 illustrates some of the tools and products that might be used to implement the various stages of the pipeline. + +Some of these building blocks are probably in place at many enterprises, but it is likely that most of the activities are carried out in a manual way and it is the lack of automation of those steps that slows delivery. + + + +A DevOps pipeline can only be efficient, or indeed practical, if it can be automated. + + +### Focus on efficiency and automation through the pipeline + +The driver for building a CI/CD pipeline is to increase efficiency and speed of delivery. This means that all the steps in the pipeline need to be both quick and reliable and the only realistic way of achieving that is through automation. + + +### Tests as the quality gatekeeper through phases of the pipeline + +As a software change is delivered through a CI/CD pipeline, it is important to ensure its quality and readiness to move on to the next phase. Testing is the gatekeeper that can give confidence that this is the case - and can also flag up where it is not. + +This testing also needs to be carried out continuously, as each change is delivered. 'Continuous testing' has been described as being a process of "testing early, testing often, testing everywhere, and automate" ([https://www.guru99.com/continuous-testing.html](https://www.guru99.com/continuous-testing.html)). + + + +A key principle of the move to DevOps and a CI/CD pipeline is that as much of the testing as possible needs to be automated. Also, it is not just the tests themselves that need to be automated, but also the checking of whether the tests have passed. + + + +**Some quotes on the importance of test automation:** + +"To achieve such speed and agility, it is important to automate all the testing processes and configure them to run automatically when the deployment is completed in the QA environment." From [https://www.softwaretestinghelp.com/devops-and-software-testing/](https://www.softwaretestinghelp.com/devops-and-software-testing/) + +"Test automation has become crucial to keep quality control intact while maintaining the speed of releases." From [https://dzone.com/articles/role-of-test-automation-in-devops](https://dzone.com/articles/role-of-test-automation-in-devops) + +[DevOps can simply not succeed if it still requires a large number of test cases to be run manually.](https://twitter.com/intent/tweet?source=webclient&via=atlassian&text=DevOps%20can%20simply%20not%20succeed%20if%20it%20still%20requires%20a%20large%20number%20of%20test%20cases%20to%20be%20run%20manually.&url=https://www.atlassian.com/blog/devops/test-automation-secret-devops-success) + + + +However, not all testing can or should be automated. Exploratory testing might well follow different paths as a result of what is discovered during the process. Penetration testing often relies on innovation and trying something new, which is difficult to automate. User acceptance testing will often involve users interacting with the system in a flexible way. + + + +**Testing versus Checking** + +Testing is an interactive activity that involves evaluating whether software meets its purpose, by exploring and experimenting with its behavior. This requires human creativity and cannot be automated. What is possible to automate is the checking that the software meets these expectations that we have discovered by testing. James Bach and Michael Bolton introduced this distinction between testing and checking (see [https://www.satisfice.com/blog/archives/856](https://www.satisfice.com/blog/archives/856)): "we distinguish between aspects of the testing process that machines can do versus those that only skilled humans can do. We have done this linguistically by adapting the ordinary English word “checking” to refer to what tools can do.". + + + +When we speak of testing in this chapter from this point on, we are referring to what would more strictly be called **checking**, rather than testing. + + + +The key point is that anything that lends itself to automation should be automated, to allow time for these other activities where automation is genuinely not appropriate. The fact that something is quite difficult to automate should not be used as an excuse for failing to automate it. + + +### Managing the pipeline when test cases fail + +As noted above, if the tests are automated, but checking or reacting to their results is not, then that is only half of the story. When building a CI/CD pipeline, thought should be given to what happens when test cases fail. + + + +The diagnostics that will reveal the cause of the failure should be collected in a known location and made available in an easy way to the engineer who will investigate the problem. The software change that caused the failure should be easily identifiable, and its progress through the pipeline should be halted, or reversed. Other software changes that have not caused the failure should be able to continue unimpeded, unless they are only viable with the failing change, which should also be something the pipeline can detect and act upon. Finally, it is possible that the failure could be due to a problem with the test or the test environment, and those possibilities must also be easy to detect and investigate. + + +## Testing on z/OS + +Many organizations have chosen IBM Z for the most critical aspects of their businesses, especially in industries including banking, insurance, and retail, where disruptions cannot be tolerated. This means that in addition to relying on the inherent reliability, security and resilience of the platform, such companies also carry out extensive testing before introducing any change. + + +### Importance of testing on z/OS + +Due to the mission critical nature of the software and applications running on z/OS, testing is vital to ensure that services can be provided uninterrupted, and that any change will both work as intended and not impact anything else. This makes testing arguably more vital on z/OS than on any other platform. + + + +The terminology used to describe the various phases of testing of z/OS applications indicate the importance that organizations attach to this testing, with terms like 'Quality Assurance' testing, 'Pre-Production' testing, 'User Acceptance' testing, not to mention the extensive phases of regression testing and performance testing required when introducing any change into the system. + + + +This means that the estimates for any project that makes changes to an application on z/OS, or for a new application, include a very large portion of effort allocated to testing. + + +### Challenges for test automation on z/OS + +With such extensive testing required, it might be thought that test automation would be widespread on z/OS. However, test automation on z/OS has historically proved to be very difficult. + + + +Surveys and user research carried out by the IBM CICS Transaction Server for z/OS organization have shown that between 92 and 95% of testing on the platform is entirely or mostly manual, which is in line with industry estimates that place the percentage of manual testing at around 80% ("Even today, 80 percent of enterprise testing is done manually." - Sandeep Johri, Tricentis CEO). The manual testing can vary in nature from a test suite that just needs to be set up and run manually, to typing in a sequence of steps that are described in a hardcopy book of test cases. + + + +Why is test automation such a challenge on z/OS? Some of the reasons are: + +- Very large systems have been built up over the years; large both in terms of the number and size of components making up each application, and in terms of the environment in which the applications run. Finding a way to drive these large systems as part of an automated test has proved challenging. + +- There is a lack of test automation tools that understand the z/OS operating system, its subsystems and file stores, to make it practical to adopt these tools. + +- The data is tightly integrated with the applications which use it and is often used by multiple applications. Providing suitable test data, which can be isolated for use by each test run, and reset to known values, has been very challenging. + +- Many applications rely on components which were developed many years ago, which means that testing needs to ensure these components will still run without issues or regressions. As Rosalind Radcliffe put it, "The best thing about the mainframe is a module compiled 40 years ago will still run. The worst thing about the mainframe is a module compiled 40 years ago will still run." [https://www.sonatype.com/an-innovators-journey-rosalind-radcliffe](https://www.sonatype.com/an-innovators-journey-rosalind-radcliffe) + +The difficulty in achieving this has resulted in falling back to manual processes and checks, and as a result continuing to use waterfall processes. To quote Sandeep Johri again, "If you move to Agile development but your testing cycle is still 6 to 12 weeks due to manual testing, you’ll fall right back into a Waterfall mode” ([https://devops.com/devops-chat-continuous-testing-w-sandeep-johri-ceo-tricentis/](https://devops.com/devops-chat-continuous-testing-w-sandeep-johri-ceo-tricentis/)). If the testing cycle takes a long time, then developers will be tempted to group together lots of changes to get them tested all together, which is entirely counter to the idea of continuous integration. + + + +## Why does this matter? + +Organizations that use z/OS for their mission-critical systems have enjoyed growth and success for many years. So, does it matter if most of the testing is done manually? In today's world, it is important to be able to respond very rapidly to new market opportunities and threats, and to have confidence in the quality and robustness of the services that you provide. + + +### Value of automated testing in continuous delivery + +As we have seen, if testing cannot be automated, then it is difficult if not impossible to gain the benefits of continuous delivery, reducing the agility of an organization and its ability to react and innovate quickly. Even responding to a new competitive threat or compliance regulation might not be possible without a CI/CD pipeline and automated testing. + + +### Dangers of not automating testing + +If an organization continues to test manually, then they run the risk that the test cycle will be too long to enable the required agility and speed to market, or the amount of testing will have to be reduced, leading to uncertainty over the quality of the software being delivered, or perhaps both. + + +### Risks of not adopting continuous delivery + +If an organization does not adopt a continuous delivery approach, in which small changes can be constantly delivered and tested, then there is a tendency to save up all the changes until enough have been made to justify the large effort involved in testing a software release. Not only does this mean that users endure a long wait for new function to become available, but if problems occur then it is harder to identify the cause and to isolate the failing component. + + +Even more damaging could be the impact of being unable to deliver function rapidly into the marketplace, and missing opportunities as a result. + + +### Use of automated testing for system reliability + +With automated testing in place, it is easy to run the checks which ensure the software is working as expected. So, whenever a change is introduced into the system, such as applying maintenance, a hardware upgrade, or updates to another component, there is automation available to verify that all is as it should be. This also means that such changes can be made more easily and with more confidence. + + +## How can test automation be achieved on z/OS? + +Many organizations have built, or are now building, CI/CD pipelines for their z/OS applications, with considerable success. These teams are looking to test automation to help them achieve an efficient pipeline. This chapter described an approach to test automation on z/OS, by using a framework for automating tests which offers deep integration with z/OS capabilities. \ No newline at end of file From 21acb6977a1bf5f41ac82cd2f98ddd3c7058e3fd Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 16:53:02 -0400 Subject: [PATCH 08/12] Move Images Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- .../IBM Developer for zOS}/Images/image172.jpg | Bin .../IBM Developer for zOS}/Images/image173.jpg | Bin .../IBM Developer for zOS}/Images/image174.jpg | Bin .../IBM Developer for zOS}/Images/image175.jpg | Bin .../IBM Developer for zOS}/Images/image176.jpg | Bin .../IBM Developer for zOS}/Images/image177.jpg | Bin .../IBM Developer for zOS}/Images/image178.jpg | Bin .../IBM Developer for zOS}/Images/image179.jpg | Bin .../IBM Developer for zOS}/Images/image180.jpg | Bin .../IBM Developer for zOS}/Images/image181.jpg | Bin .../IBM Developer for zOS}/Images/image182.jpg | Bin .../IBM Developer for zOS}/Images/image183.jpg | Bin .../IBM Developer for zOS}/Images/image184.jpg | Bin .../IBM Developer for zOS}/Images/image185.jpg | Bin .../IBM Developer for zOS}/Images/image186.jpg | Bin .../IBM Developer for zOS}/Images/image187.jpg | Bin .../IBM Developer for zOS}/Images/image188.jpg | Bin .../IBM Developer for zOS}/Images/image189.jpg | Bin .../IBM Developer for zOS}/Images/image190.jpg | Bin .../IBM Developer for zOS}/Images/image191.jpg | Bin .../IBM Developer for zOS}/Images/image192.jpg | Bin .../IBM Developer for zOS}/Images/image193.jpg | Bin .../IBM Developer for zOS}/Images/image194.jpg | Bin .../IBM Developer for zOS}/Images/image195.jpg | Bin .../IBM Developer for zOS}/Images/image196.jpg | Bin .../IBM Developer for zOS}/Images/image197.jpg | Bin .../IBM Developer for zOS}/Images/image198.jpg | Bin .../IBM Developer for zOS}/Images/image199.jpg | Bin .../IBM Developer for zOS}/Images/image200.jpg | Bin .../IBM Developer for zOS}/Images/image201.jpg | Bin .../IBM Developer for zOS}/Images/image202.jpg | Bin .../IBM Developer for zOS}/Images/image203.jpg | Bin .../IBM Developer for zOS}/Images/image204.jpg | Bin .../IBM Developer for zOS}/Images/image205.jpg | Bin .../IBM Developer for zOS}/Images/image206.jpg | Bin .../Images/image207.jpg | Bin .../Images/image208.png | Bin 37 files changed, 0 insertions(+), 0 deletions(-) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image172.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image173.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image174.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image175.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image176.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image177.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image178.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image179.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image180.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image181.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image182.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image183.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image184.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image185.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image186.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image187.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image188.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image189.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image190.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image191.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image192.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image193.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image194.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image195.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image196.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image197.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image198.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image199.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image200.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image201.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image202.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image203.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image204.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image205.jpg (100%) rename COBOL Programming Course #1 - Getting Started/{ => Commercial Tooling/IBM Developer for zOS}/Images/image206.jpg (100%) rename {COBOL Programming Course #1 - Getting Started => COBOL Programming Course #3 - Testing}/Images/image207.jpg (100%) rename {COBOL Programming Course #1 - Getting Started => COBOL Programming Course #3 - Testing}/Images/image208.png (100%) diff --git a/COBOL Programming Course #1 - Getting Started/Images/image172.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image172.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image172.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image172.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image173.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image173.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image173.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image173.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image174.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image174.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image174.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image174.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image175.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image175.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image175.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image175.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image176.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image176.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image176.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image176.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image177.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image177.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image177.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image177.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image178.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image178.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image178.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image178.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image179.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image179.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image179.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image179.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image180.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image180.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image180.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image180.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image181.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image181.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image181.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image181.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image182.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image182.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image182.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image182.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image183.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image183.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image183.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image183.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image184.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image184.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image184.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image184.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image185.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image185.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image185.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image185.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image186.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image186.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image186.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image186.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image187.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image187.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image187.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image187.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image188.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image188.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image188.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image188.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image189.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image189.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image189.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image189.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image190.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image190.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image190.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image190.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image191.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image191.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image191.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image191.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image192.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image192.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image192.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image192.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image193.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image193.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image193.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image193.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image194.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image194.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image194.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image194.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image195.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image195.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image195.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image195.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image196.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image196.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image196.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image196.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image197.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image197.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image197.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image197.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image198.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image198.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image198.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image198.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image199.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image199.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image199.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image199.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image200.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image200.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image200.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image200.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image201.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image201.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image201.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image201.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image202.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image202.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image202.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image202.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image203.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image203.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image203.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image203.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image204.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image204.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image204.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image204.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image205.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image205.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image205.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image205.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image206.jpg b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image206.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image206.jpg rename to COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/Images/image206.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image207.jpg b/COBOL Programming Course #3 - Testing/Images/image207.jpg similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image207.jpg rename to COBOL Programming Course #3 - Testing/Images/image207.jpg diff --git a/COBOL Programming Course #1 - Getting Started/Images/image208.png b/COBOL Programming Course #3 - Testing/Images/image208.png similarity index 100% rename from COBOL Programming Course #1 - Getting Started/Images/image208.png rename to COBOL Programming Course #3 - Testing/Images/image208.png From 4038a4c89fa345d6244ca279cd6874ddd97269fa Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 17:05:01 -0400 Subject: [PATCH 09/12] PDF Build and Formatting Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- ...mming Course #1 - Getting Started - IDz.md | 21 +++++++++++++++++ ...Programming Course #2 - Advanced Topics.md | 23 +++++++++++++++++++ .../COBOL Programming Course #3 - Testing.md | 21 +++++++++++++++++ 3 files changed, 65 insertions(+) diff --git a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md index ccf733ac..b542d2a4 100644 --- a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md +++ b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/IBM Developer for zOS/COBOL Programming Course #1 - Getting Started - IDz.md @@ -1,3 +1,24 @@ +--- +geometry: +- margin=1in +header-includes: +- \lstset{basicstyle=\ttfamily, + stepnumber=2, + numbersep=5pt, + backgroundcolor=\color{black!10}, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + captionpos=b, + breaklines=true, + breakatwhitespace=true, + breakautoindent=true, + linewidth=\textwidth} +- \hypersetup{colorlinks=true, + linkcolor=blue} +--- +\newpage # Installing IBM Developer for Z This chapter covers all aspects of download and installation of IBM Developer for z/OS and any prerequisites that are needed. It includes: diff --git a/COBOL Programming Course #2 - Advanced Topics/COBOL Programming Course #2 - Advanced Topics.md b/COBOL Programming Course #2 - Advanced Topics/COBOL Programming Course #2 - Advanced Topics.md index e69de29b..cab29150 100644 --- a/COBOL Programming Course #2 - Advanced Topics/COBOL Programming Course #2 - Advanced Topics.md +++ b/COBOL Programming Course #2 - Advanced Topics/COBOL Programming Course #2 - Advanced Topics.md @@ -0,0 +1,23 @@ +--- +geometry: +- margin=1in +header-includes: +- \lstset{basicstyle=\ttfamily, + stepnumber=2, + numbersep=5pt, + backgroundcolor=\color{black!10}, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + captionpos=b, + breaklines=true, + breakatwhitespace=true, + breakautoindent=true, + linewidth=\textwidth} +- \hypersetup{colorlinks=true, + linkcolor=blue} +--- +\newpage +# Advanced Topic #1 +Coming soon! \ No newline at end of file diff --git a/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md b/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md index b00a245f..19ac28a7 100644 --- a/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md +++ b/COBOL Programming Course #3 - Testing/COBOL Programming Course #3 - Testing.md @@ -1,3 +1,24 @@ +--- +geometry: +- margin=1in +header-includes: +- \lstset{basicstyle=\ttfamily, + stepnumber=2, + numbersep=5pt, + backgroundcolor=\color{black!10}, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2, + captionpos=b, + breaklines=true, + breakatwhitespace=true, + breakautoindent=true, + linewidth=\textwidth} +- \hypersetup{colorlinks=true, + linkcolor=blue} +--- +\newpage # Testing In this chapter, we focus on the importance of thoroughly testing software to ensure its quality. No language or program is exempt from the importance of testing and automated testing, including programs written in COBOL. The chapter explains how this can only be achieved in an effective and efficient way by automating the testing as part of a continuous delivery pipeline and introduces a framework that can enable such automation. From 3fb36d424ccc9584e4918f533f08db3f34d3cd0d Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 17:10:31 -0400 Subject: [PATCH 10/12] Fix link Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- .../Commercial Tooling/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md index 62d11200..17cfafc4 100644 --- a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md +++ b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md @@ -5,7 +5,7 @@ This directory contains implementations of COBOL Programming Course #1 using com ## How to get started There are currently no official releases of COBOL Programming Course #1 using commercial tooling. All content remains in development. However, you can view and contribute to the following implementations: -- [IBM Developer for z/OS](IBM%20Developer%20for%20zOS/COBOL%20Programming%20Course%20#1%20-%20Getting%20Started%20-%20IDz.md) +- [IBM Developer for z/OS](IBM%20Developer%20for%20zOS/COBOL%20Programming%20Course%20%231%20-%20Getting%20Started%20-%20IDz.md) ## Providers From 01ca649f15792b5793e9760a46a28a8874f0b249 Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 17:12:44 -0400 Subject: [PATCH 11/12] Fix links Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- COBOL Programming Course #2 - Advanced Topics/README.md | 2 +- COBOL Programming Course #3 - Testing/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/COBOL Programming Course #2 - Advanced Topics/README.md b/COBOL Programming Course #2 - Advanced Topics/README.md index b8caf5cc..e887ffa2 100644 --- a/COBOL Programming Course #2 - Advanced Topics/README.md +++ b/COBOL Programming Course #2 - Advanced Topics/README.md @@ -4,7 +4,7 @@ This project is a set of training materials and labs for an Advanced Topics cour ## How to get started -There are currently no official releases of COBOL Programming Course #2 - Advanced Topics. All content remains in development. We encourage you to view and contribute to the [book](COBOL%20Programming%20Course%20#2%20-%20Advanced%20Topics.md) :) +There are currently no official releases of COBOL Programming Course #2 - Advanced Topics. All content remains in development. We encourage you to view and contribute to the [book](COBOL%20Programming%20Course%20%232%20-%20Advanced%20Topics.md) :) If you run into any issues, please don't hesitate to reach out on our [slack channel](https://openmainframeproject.slack.com/archives/C011NE32Z1T). diff --git a/COBOL Programming Course #3 - Testing/README.md b/COBOL Programming Course #3 - Testing/README.md index 5ad1f53f..92516575 100644 --- a/COBOL Programming Course #3 - Testing/README.md +++ b/COBOL Programming Course #3 - Testing/README.md @@ -4,7 +4,7 @@ This project is a set of training materials and labs for testing COBOL applicati ## How to get started -There are currently no official releases of COBOL Programming Course #3 - Testing. All content remains in development. We encourage you to view and contribute to the [book](COBOL%20Programming%20Course%20#3%20-%20Testing.md) :) +There are currently no official releases of COBOL Programming Course #3 - Testing. All content remains in development. We encourage you to view and contribute to the [book](COBOL%20Programming%20Course%20%233%20-%20Testing.md) :) If you run into any issues, please don't hesitate to reach out on our [slack channel](https://openmainframeproject.slack.com/archives/C011NE32Z1T). From 2399907a690a255ab22e5310f6f7d9ed95a14812 Mon Sep 17 00:00:00 2001 From: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> Date: Fri, 29 May 2020 17:24:44 -0400 Subject: [PATCH 12/12] Update README Signed-off-by: MikeBauerCA <35504792+MikeBauerCA@users.noreply.github.com> --- .../Commercial Tooling/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md index 17cfafc4..4a7d631e 100644 --- a/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md +++ b/COBOL Programming Course #1 - Getting Started/Commercial Tooling/README.md @@ -1,6 +1,6 @@ # COBOL Programming Course #1 - Getting Started - Commercial Tooling -This directory contains implementations of COBOL Programming Course #1 using commercial tooling. Neither this project nor Open Mainframe Project reviews, maintains, or endorses any one of these commercial tools. If you would like to add your implementation of the course using commercial tooling, feel free to open a pull request to have it included. +This directory contains implementations of COBOL Programming Course #1 using commercial tooling. Neither this project nor Open Mainframe Project endorses any one of these commercial tools. If you would like to add your implementation of the course using commercial tooling, feel free to open a pull request to have it included. ## How to get started