Training materials and labs for a "Getting Started" level course on COBOL

License

COBOL Programming Course

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.

If you run into any issues, please don't hesitate to reach out on our slack channel.

Discussion

You can connect with the community in a variety of ways...

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, including having a DCO signoff on all commits.

Governance

This project is openly governed as defined in 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.

Video Course Links

Owner
Open Mainframe Project
Home for technical activities hosted by the Open Mainframe Project.
Open Mainframe Project
Comments
  • Stuck at Chapter 4.6 and Credentials

    Stuck at Chapter 4.6 and Credentials

    Is provided pdf final course or I need to wait a bit for videos? I managed VSCode to work with provided files, and to highlight code correctly. Now I started to read and follow provided pdf, and I am stuck at chapter 4.6.

    I made new connection to z/OS with username Z99998 and provided URL in figure 8. For the password I used "1234". And now I get error "Invalid Credentials. Please ensure the username and password for LearnCOBOL are valid or this may lead to a lock-out."

    I find this guide very confusing, because I do not have very much of experience with VSCode, and this is my first glance at COBOL and z/OS.

    So, is this pdf final guide, or I need to wait a bit for a videos, so I can get into learning?

  • Tools and resources

    Tools and resources

    Thank you for OpenMainframeProject! Nowadays software engineering is driven by openness, not elitism.

    I have some background in Java, C#, PHP and JS. After reading the COBOL-calling posts last Friday, I decided to explore the new old-school tech-stack. Read Programmer's guide, Language reference, installed software and completed online training (actually 1.5 courses, to obtain IBM ID and Z/OS machine with ISPF and JCL on top). In addition to decimal math, I found the declarative validation and the representation of data in COBOL absolutely impressive.

    The bad news is the enthusiasts are unable to design their flows of software delivery (CI/CD) unhindered. Please correct my findings below.

    Training courses

    • None by IBM.
    • COBOL Programming in Easy and Practical Methods. Online, 7 hours long.
    • Mainframe: The Complete COBOL Course From Beginner To Expert. Online, 9.5 hours long.

    Certification

    • None by IBM.
    • Online by Udemy.

    Editor

    • IBM Z Open Development IDE. Not really useful without own Mainframe, "The IBM license key cannot be found."
    • IBM Z Open Editor Plugin for VS Code.

    Compiler

    • IBM Enterprise COBOL. Available only to members of IBM PartnerWorld.
    • GnuCobol. Good, but partially incompatible with IBM Enterprise COBOL.

    Debugger

    • Debugger for Mainframe by Broadcom. Not really useful without own Mainframe.

    Profiler

    • ?

    Static analysis

    • ?

    Unit testing

    • cobol-unit-test by Neopragma.

    Code coverage

    • ?

    Presentation environment

    • IBM Z/OS on own Mainframe.
    • Hercules emulator. Not really useful without IBM DASD image which is available only to members of IBM PartnerWorld.

    Modern engineering expects that the first 3 milestones of "learn->try->present->sell->maintain" are easily and quickly achievable. IBM need to invest into the community and "open the doors" first. Only people keep the technology alive.

  • Is that whole course?

    Is that whole course?

    I would like to say thanks to you! It were so nice to touch mainframes and history of programming languages.

    But, should I wait for appearance of more complex tasks, that make me closer to mainframes & COBOL reality?

  • Automatically generate PDF using CI

    Automatically generate PDF using CI

    Now that there is a PDF file generated from Markdown, perhaps remove the PDF from Git and use CI (e.g. Travis CI) to automatically keep the PDF file up to date and upload it somewhere, e.g. using GitHub Pages for the repo?

  • updating the Getting Started course images

    updating the Getting Started course images

    Signed-off-by: ahmedEid1 [email protected]


    Updated:

    • [ ] the Labs
    • [ ] images for installation and working in VS-Code

    Not updated:

    • [ ] the code snippets inside the contents of the chapters

    Notes

    • [ ] After creating a new profile three new prompts were not in the images so added them after image073 as :
      • Image073-1
      • Image073-2
      • Image073-3

    ps: kept the old name of the images for ease of comparison


    Suggestion:

    • [ ] maybe the images should be reorganized such that images under the same chapter, lab, or heading in the same folder with some kind of hierarchy
  • Willing to translate .docx to markdown

    Willing to translate .docx to markdown

    Hi @jmertic I saw your message over on the hackernews thread. I'm interested in following the course and learning COBOL but as it is I feel perfectly qualified to open some word docs and transpose them into markdown, let me know I can help.

  • Lab 1: Error creating profile and accessing data sets

    Lab 1: Error creating profile and accessing data sets

    Hello, I am reading the guide and got to Lab 1. I registered for and received my mainframe ID and password (yay). I followed the steps up through the "accept" selection... at that point I get the following error:

    "Expect Error: Could not locate the profile type configuration for "rse" within the input configuration list passed..."

    It did create the "Favorites" folders and I was able to get through to the filter step but then get this error: "Invalid Credentials. Please ensure the username and password for LearnCOBOL are valid or this may lead to a lock-out."

    Could you please help me?

  • Rename CBL0033J to CBL0003J

    Rename CBL0033J to CBL0003J

    Signed-off-by: Hartanto Ario Widjaya [email protected]

    This would fix #198. It appears #153 is not merged into the mainframe system, thus resulting in confusion with the PDF content.

    Personally, I would prefer that the new CBL0003.cbl be renamed to something else or adopt the CBL0033 naming (8af11a09e2218c03901ebf877b40fbceb73e02b6) to prevent confusion with existing tutorials and PDF which are already on circulation (such as Coursera, Pluralsight and the IBM Learning Platform).

  • I give up! Compile PDF is a waste of time!

    I give up! Compile PDF is a waste of time!

    After an hour and a half of trying to get the LaTex files to compile. I have decided it's just not worth the effort. There is no training worth this much hassle, just to get the lessons. It's senseless. I don't see it getter better; even if I could get the pdfs to compile.

    Questions I'm left with:

    1. how much electricity has been wasted by numerous people having to compile the pdfs, and download the supporting software?
    2. Why not a format that's easily usable, and lightweight like HTML instead? Would that offend the open-source gods who demand fealty to the make-it-as-difficult-as-possible-so-we-feel-superior rule? Or is posting a LaTex file way more cool, and possibly impressive to the "open sores" crowd?
    3. Why did I have to download THREE software packages I will NEVER use again, for THREE pdfs? Especially considering lightweight alternatives were easily available.
    4. Why did the creator of this course not give one minute of thought to the user of this "course?" Was usability not even considered?
    5. Why PDF? the idea of PDFs is to stop the end-user from changing the info. That is NOT necessary here.

    The difference between professionals and amateurs is simple. Amateurs are more worried about looking good/cool, and impressing people who really don't matter; Pros want to get things done. The same can be said about "open source" vs "professional" software.

  • Future COBOL Friday Topic Requests

    Future COBOL Friday Topic Requests

    I’m interested in starting a list somewhere, which would allow community members to request topics of interest to be the subject of future COBOL Friday Webinars. And, through the use of some kind of polling mechanism, allow the entire community to vote for the topics (ranking them in order of preference or just allow one vote per week, etc.) that they are most interested in. Where would be the best place to do this? Looking for feedback from others regarding the interest in this subject. Please leave comments below.

    Suggested as possible future topics:

    1. Real world situations - Loading a spreadsheet full of input data into a mainframe, COBOL readable input file, i.e. properly converting raw input, which would include numbers, negative numbers and text, even introducing literals into the converted file. Note: I could present this session.

    2. Practical uses of DFSORT and/or ICETOOL.

  • Error of Authorizaton failed on STEP 20, of Lab 1

    Error of Authorizaton failed on STEP 20, of Lab 1

    I'm getting the following error on this step of Lab1:

    20. Expand Z99998.CBL to view COBOL source members, then select member HELLO to see a simple COBOL ‘Hello World!’ program as shown in Figure 21. Retrieving response from zowe.List Error: z/OSMF REST API Error: Rest API failure with HTTP(S) status 500 category: 4 rc: 8 reason: 0 message: LMOPEN error details: - ISRZ002 Authorization failed - You may not use this protected data set. Open 913 abend.

    Until there everything works. I'm using this address https://192.86.32.250:10443 with my user id and password received on e-mail.

    Someone else is getting the same error?

  • Add Q4 webinar details

    Add Q4 webinar details

    Signed-off-by: Hartanto Ario Widjaya [email protected]

    Proposed changes

    This PR adds the Q4 webinar details for the course.

    What type of changes does your PR introduce to the COBOL Programming Course? Put an x in the boxes that apply.

    • [ ] Bug fix (change which fixes one or more issues)
    • [ ] New feature (change which adds functionality or features to the course)
    • [ ] Translations (change which adds or modifies translations of the course)
    • [x] Documentation (change which modifies documentation related to the course)
    • [ ] This change requires an update to the course's z/OS environment

    Checklist:

    Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This checklist will be used as reference for both the contributor and the reviewer

    • [x] I have read the Contributing Guideline
    • [x] I have included a title and description for this PR
    • [x] I have DCO-signed all of my commits that are included in this PR
    • [ ] I have tested it manually and there are no regressions found
    • [ ] I have commented my code, particularly in hard-to-understand areas (if appropriate)
    • [ ] I have made corresponding changes to the documentation (if appropriate)
  • adding json and xml processing

    adding json and xml processing

    Signed-off-by: pathange-s [email protected]

    Proposed changes

    Fixes # (issue)

    Type of change

    What type of changes does your PR introduce to the COBOL Programming Course? Put an x in the boxes that apply.

    • [ ] Bug fix (change which fixes one or more issues)
    • [ ] New feature (change which adds functionality or features to the course)
    • [ ] Translations (change which adds or modifies translations of the course)
    • [x] Documentation (change which modifies documentation related to the course)
    • [ ] This change requires an update to the course's z/OS environment

    Checklist:

    Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This checklist will be used as reference for both the contributor and the reviewer

    • [x] I have read the Contributing Guideline
    • [x] I have included a title and description for this PR
    • [x] I have DCO-signed all of my commits that are included in this PR
    • [ ] I have tested it manually and there are no regressions found
    • [ ] I have commented my code, particularly in hard-to-understand areas (if appropriate)
    • [ ] I have made corresponding changes to the documentation (if appropriate)
  • Update course with survey result from COBOL WG

    Update course with survey result from COBOL WG

    Course Details

    GitHub

    Description

    The first chapter of Course 1 highlights several facts on the use of COBOL on today's era.

    With the recent survey conducted by the COBOL Working Group, we may want to take a look at the result of the survey, and incorporate that to the chapter or replace the existing content with updated and cited data from the survey.

    Problems

    No response

    Additional Context

    Links:

    • Survey results are available on this TechChannel article: https://techchannel.com/Trends/10/2021/special-report-cobol-survey
    • COBOL Working Group mailing list: https://lists.openmainframeproject.org/g/wg-cobol

    Currently listed statements:

    COBOL is everywhere. You have probably used an application written in COBOL today. For example, consider the following statistics:

    • About 95% of ATM swipes use COBOL code.
    • COBOL powers 80% of in-person transactions.
    • Every day, COBOL systems handle $3 trillion in commerce.

    How pervasive is COBOL? Consider these mind-boggling facts:

    • Every day there are 200 times more COBOL transactions executed than there are Google searches.
    • There are over 220 billion lines of COBOL programs running today, which equates to around 80% of the world's actively used code.
    • 1,500,000,000 lines of new COBOL code are written each year.
  • Readable and maintainable COBOL code

    Readable and maintainable COBOL code

    Hi,

    Thank you for the work done around learning the COBOL language.

    In addition to the syntax elements of the COBOL language, do you plan to approach COBOL programming styles allowing the production of readable code, (ability to understand processes), maintainable code, (ability to modify code with minimum work), debugable code, (ability to trace code or analyze dumps)?

    See the discussion I open on an other site: https://github.com/IBM/zopeneditor-about/discussions/131

    A discussion on this subject could also be opened on this site.

  • Improve the course on libraries

    Improve the course on libraries

    • What is the standard structure of the exportable source-code library?
    • How the libraries are usually managed?
    • How the libraries are usually integrated into the programs?
    • What is the standard application-level package manager (e.g. Maven, NuGet)?
Versioned model registry suitable for temporary in-training storage and permanent storage

Cogment Model Registry Cogment is an innovative open source AI platform designed to leverage the advent of AI to benefit humankind through human-AI co

May 26, 2022
A multilayer perceptron network implemented in Go, with training via backpropagation.

Neural Go I'm in the process of making significant changes to this package, particularly, to make it more modular, and to base it around an actual lin

Sep 27, 2022
Go Training Class Material :

Go Training Review our different courses and material To learn about Corporate training events, options and special pricing please contact: William Ke

Dec 28, 2022
Collect gtfs vehicle movement data for ML model training.

Transitcast Real time transit monitor This project uses a static gtfs static schedules and frequent queries against a gtfs-rt vehicle position feed ge

Dec 19, 2022
Incentivized AI Training Casino using ISCP for the Agri-D Hackaton!
Incentivized AI Training Casino using ISCP for the Agri-D Hackaton!

Welcome to the Wasp repository! Wasp is a node software developed by the IOTA Foundation to run the IOTA Smart Contract Protocol (ISCP in short) on to

May 15, 2022
A High-level Machine Learning Library for Go
A High-level Machine Learning Library for Go

Overview Goro is a high-level machine learning library for Go built on Gorgonia. It aims to have the same feel as Keras. Usage import ( . "github.

Nov 20, 2022
The open source, end-to-end computer vision platform. Label, build, train, tune, deploy and automate in a unified platform that runs on any cloud and on-premises.
The open source, end-to-end computer vision platform. Label, build, train, tune, deploy and automate in a unified platform that runs on any cloud and on-premises.

End-to-end computer vision platform Label, build, train, tune, deploy and automate in a unified platform that runs on any cloud and on-premises. onepa

Dec 12, 2022
Go types, funcs, and utilities for working with cards, decks, and evaluating poker hands (Holdem, Omaha, Stud, more)

cardrank.io/cardrank Package cardrank.io/cardrank provides a library of types, funcs, and utilities for working with playing cards, decks, and evaluat

Dec 25, 2022
Genetic Algorithm and Particle Swarm Optimization

evoli Genetic Algorithm and Particle Swarm Optimization written in Go Example Problem Given f(x,y) = cos(x^2 * y^2) * 1/(x^2 * y^2 + 1) Find (x,y) suc

Dec 22, 2022
k-modes and k-prototypes clustering algorithms implementation in Go

go-cluster GO implementation of clustering algorithms: k-modes and k-prototypes. K-modes algorithm is very similar to well-known clustering algorithm

Nov 29, 2022
Probability distributions and associated methods in Go

godist godist provides some Go implementations of useful continuous and discrete probability distributions, as well as some handy methods for working

Sep 27, 2022
On-line Machine Learning in Go (and so much more)

goml Golang Machine Learning, On The Wire goml is a machine learning library written entirely in Golang which lets the average developer include machi

Jan 5, 2023
Bayesian text classifier with flexible tokenizers and storage backends for Go

Shield is a bayesian text classifier with flexible tokenizer and backend store support Currently implemented: Redis backend English tokenizer Example

Nov 25, 2022
A curated list of Awesome Go performance libraries and tools

Awesome Go performance Collection of the Awesome™ Go libraries, tools, project around performance. Contents Algorithm Assembly Benchmarks Compiling Co

Jan 3, 2023
Deploy, manage, and scale machine learning models in production
Deploy, manage, and scale machine learning models in production

Deploy, manage, and scale machine learning models in production. Cortex is a cloud native model serving platform for machine learning engineering teams.

Dec 30, 2022
The Go kernel for Jupyter notebooks and nteract.
The Go kernel for Jupyter notebooks and nteract.

gophernotes - Use Go in Jupyter notebooks and nteract gophernotes is a Go kernel for Jupyter notebooks and nteract. It lets you use Go interactively i

Dec 30, 2022
Library for multi-armed bandit selection strategies, including efficient deterministic implementations of Thompson sampling and epsilon-greedy.
Library for multi-armed bandit selection strategies, including efficient deterministic implementations of Thompson sampling and epsilon-greedy.

Mab Multi-Armed Bandits Go Library Description Installation Usage Creating a bandit and selecting arms Numerical integration with numint Documentation

Jan 2, 2023
A program that generates a folder structure with challenges and projects for mastering a programming language.

Challenge Generator A program that generates a folder structure with challenges and projects for mastering a programming language. Explore the docs »

Aug 31, 2022
Gota: DataFrames and data wrangling in Go (Golang)

Gota: DataFrames, Series and Data Wrangling for Go This is an implementation of DataFrames, Series and data wrangling methods for the Go programming l

Jan 5, 2023