IBM Student Mainframe Challenge Part One Time to complete – about an hour Welcome to the Mainframe Challenge! You'll be joining our team of mainframe programmers to learn some skills then prove yourself above the other contestants! Good luck! Hi, my name's Gemma. Welcome to the team! I've been here for a few months already, so I'll be able to offer some help and advice about using the mainframe, and about what the contest requires. The goal of Part One is to learn how to use an IBM System z mainframe without having used one before. I'll set some tasks and questions throughout the contest to see how you're getting on. There will also be prizes for the fastest contestants in each part (if you answer correctly, of course!) Psst! The boss told me earlier what there will be prizes for each part, but you will have to check with your contest organisers for more information on this....!! So, you want to learn the mainframe? Become a whiz with z/OS? Make millions touting your desperately sought-after skills all over the world? First things first, let's teach you how to log on to the mainframe. (Everyone has to start somewhere.) The software In order to access the mainframe you'll need some software that will allow you to connect to it, and will be able to display the z/OS interface. We call it a 3270 terminal emulator (snappy, huh?) - they are available for multiple platforms. Note: If you're planning to double-check your progress by following the screenshots in these instructions, be aware that they were all taken on a Windows machine. If you're running a different operating system things may look slightly different, but not much. If you're using Windows... Go to http://www.tombrennansoftware.com/download.html and download the Vista V1.27.exe file. Install it by running the .exe file and following the installation instructions. If you're using a Mac... Go to http://brown.edu/cis/tn3270/ and install the latest available version. If you're using Linux... You'll need to install the following package: x3270 -port1023 (available from http://x3270.bgp.nu/) After installation Everyone got their emulator installed? Then let's begin... The next step is to start it running. (Predictable, I know.) The default location after a Windows installation is Start → Programs → Vista tn3270 → Vista Standard session. You might see this error: Don't worry about it, just continue. Now we can set up your emulator and connect to the mainframe. Configuration ➔ Configure your emulator as shown below. (Windows users: from the menu bar in Vista Session A, select File → Reconnect Ask.) The Host IP Name is 129.35.161.134 and the IP Port is 23. These values point towards the z/OS system you'll be accessing. ➔ Fill in these two values, and click Connect. If all is well, you should see this: Congratulations, you have connected to the mainframe! Don't rest on your laurels yet, there's more to come. A z/OS primer Now's a good time to give you some background information about z/OS, before you dive into it. z/OS is an upgrade of what used to be called OS/390. Both of these operating systems are an evolution of MVS (which stands for Multiple Virtual Storage). General mainframe literature still contains many references to these terms. When you're connected to the mainframe, you will find that things are a bit different to what you are used to... A world where Ctrl == Enter A number of keys on your keyboard don't have the same function as they would in your usual operating system. For example, the biggest one to remember is that to enter a command, you need to press Ctrl, not Enter! (That's the right Ctrl only, not the left one.) In the z/OS world, the Enter key is a navigation control, and will move the cursor down to the next form field on the screen. Many z/OS emulators allow you to use the Enter key to enter a command, so it won't matter if you forget – but the warning's there if you need it. I've summarised the common differences below: Action Key on mainframe Key on other O/Ss Enter a command Ctrl Enter Scroll up one page F7 Page Up Scroll down one page F8 Page Down Exit current screen F3 Esc Scroll left one screen F10 Scroll right one screen F11 Change to Insert mode Notes Esc is the closest equivalent, and not always used (none) Isn't that great? This is extra functionality only available on z/OS! Insert Insert You get this one for free Move cursor to next field Tab Tab This one too Move cursor to first field on next line Enter (none) This is what will happen when you forget about Ctrl! However, ultimately it depends on the emulator you're using. These are the common settings, you should be able to find out the mapping that your emulator uses if it's different. Now that you know all that, let's put it into action by logging on... Logging on Remember where you were? The mainframe welcome screen? You should have a cursor (looking like this: _ ) after a prompt (looking like this: ==> ) saying SELECTION (looking like this: SELECTION ). ➔ Type TSO at the prompt and enter. You will see a big black screen with a red message saying: IKJ56700A ENTER USERID. Much like this, in fact: ➔ Enter the user id that you have been allocated. For the UK contest it will be 7 characters long, and start with UK. From now on whenever I say UKxxxxx, substitute your own user id. Now press Enter. (You know I mean Ctrl, right?) You will be taken to this screen so that you can enter your password (which is the same as your user id the first time you log on): ➔ At the password prompt ( ==> ) type in your user id and hit Ctrl. You will be prompted to choose a new password. ➔ Enter your new password twice (followed by Ctrl each time). At the bottom of the logon screen, there is a note to say you can press PF1 or PF13 for help. PF or “program function” is the old name for F or “function” keys. So, when there is an instruction to press (for example) PF3, the key you want is F3 on your keyboard. Passwords in z/OS have a maximum of 8 characters, but apart from that you can go nuts. You will be taken to the ZEUS welcome screen: (I know what you're thinking. Could be more welcoming, right?) Notice at the bottom of the text you see this: *** The three asterisks mean that the system is waiting for your input to continue on its way, so press Ctrl to continue. Ahh! This is what we've been waiting for! This is ISPF. This is where the magic happens. This is your point of control. (While we're on the subject of control, hit Ctrl to clear the copyright message out of the way.) You are officially logged into a z/OS mainframe, and you've successfully completed the first three steps of Part One. Congratulations! Customise your environment In ISPF you can edit settings to make the environment your own. Let's try it out by moving the command line from the bottom of the screen to the top of the screen (this is what all the pro's do). So, you've got your cursor on the command line. Enter 0 – this will take you through to the ISPF settings menu: On this screen, practise navigating through the Tab Tab menu by pressing the Tab key repeatedly. You'll see Tab Tab the cursor moving through every field on the Tab Tab screen. Tab Tab Tab Tab Now try pressing the Enter key repeatedly. (Yes, I actually mean Enter this time!) You can see the Enter cursor going to a new line each time, seeking out Enter the first field on each line. (Don't worry if your Enter emulator is set up differently.) Navigate to the field (that looks like this: / ) beside 'Command line at bottom'. Delete the '/' using the delete key and press enter (yeah, yeah, I mean Ctrl). See the command line jump to the top of the screen! Oh F3, we sing of thee The F3 key is another useful navigation command because it exits the screen you're in and goes to the previous screen, sort of like the Back button in an Internet browser. If you hit it twice from here... ...WAIT! Don't do that! ...you'll find yourself at the TSO READY prompt. (If this happens, just enter ISPF again.) Logging off In fact, this is what you want to do when you want to log off; F3 back to the TSO READY prompt and then type logoff. You should never just close the connection window without logging off properly, else you may find yourself locked out of your account! When you want to log off, if you have done any extensive work during your session, you may be presented with a further screen (much like the one below): If you come across this screen, select Option 2 (“Delete data set without printing”) and press enter. Then you can log off as described above. If you get locked out of your user id, maybe because your session was cut off unexpectedly, wait 10 minutes for the system to drop the user id, and then try again. If you are still having problems, contact one of the organising team members. Use ISPF to locate the data sets created for your ID Start at the ISPF primary menu, and go for option 3: Option 4 on the next screen is called Dslist and is short for “Data set list”. ➔ Type 4 and press Ctrl. Now we can get to examining the data sets that have been created for your id – on the next screen there is a field called Dsname Level. ➔ Navigate to this field and type in your user id UKxxxxx and press Ctrl. You'll be presented with a list of all the data sets owned by your id. Browsing the members New worlds. Strange terms. “PDS”. That stands for Partitioned Data Set, and it's like a folder or directory on other operating systems. A PDS contains “members” (so I guess a PDS is like a club?). Members are like files on distributed operating systems. Let's look at the members inside the data set called UKxxxxx.EXAMPLE.PDS. ➔ Tab your way down until the cursor is next to it and type b (for browse) and press Ctrl. You'll then see (hey presto) a list of members! So remember, a partitioned data set (folder) contains members (files). Easy. All of the members contain some text data, one contains JCL, another REXX code... we'll come across those languages again later on so you don't need to understand what the code does right now. You can browse (look at) members in the same way that you browsed the PDS – by Tabbing down until your cursor is next to the one you want to look at, and then typing b and pressing Ctrl. Why don't you try it? ➔ Browse a couple of the members. Oh, go on. Creating new files You can probably tell that creating a file on the mainframe is a more involved process than on Windows or Unix. Those operating systems use what's called a bitwise filesystem, whereas z/OS typically uses a record-oriented filesystem. In a bitwise filesystem, like on Windows or Unix, a file is just a sequential collection of bits, and there is a special character to tell the computer where a line ends and the next one starts. Often this special character is \n. In a record-oriented system, instead of having a stream of bits and a special end-of-line character, each line in a file is 1 distinct record and files are organised on the disk into contiguous records (stored consecutively on the disk). Because of this property, you define the sizes and attributes of the records so there isn't any need for a special end of line character. This helps to conserve system resources, which is a recurring theme in z/OS! Mainframes can also support special bitwise filesystems called HFSs and ZFSs. What else is different about z/OS? It has very rich support for controlling resources, and this spills over into the filesystem. What this means for you is that when you create a new dataset, you have to tell z/OS how big it can grow, as well as how its records are set up on the disk. You might think that this seems, well, cumbersome compared to desktop operating systems. After all, you don't need to define parameters for every file or folder on your PC! But the reason that z/OS needs to track every file is to keep the amazing disk access speeds of the mainframe. Suppose you had a rogue program with some bug that makes it keep writing out to disk. If we left this unchecked on a mainframe, you could find terabytes of data written out, filling up your disks. Before you realised what was happening, it would be too late. Not such a big deal if you're downloading music on your computer, but if this happened to a bank or an airline while processing millions of transactions, it could be crippling! That's why the mainframe works the way it does. It's an important consideration in large systems thinking! All this also means that something as simple as creating a new PDS is a very customisable task. It's important to do this this way when you have thousands of users accessing a single machine, and millions of transactions per second! Allocate a partitioned dataset extended (PDSE) using ISPF panels ➔ Now, press F3 until you are back at the ISPF primary option. ➔ Select 3 (utilities), and then 2 (data set) on the next screen. You'll be taken to the following screen: ➔ On the option line (at the top), type A (for Allocate a new data set). Here you also need to give the name of your new dataset. Datasets are named with identifiers 1-8 characters long, and separated by dots, like this: UKxxxxx.ZOS.PARTONE The system will automatically assume that you want the first identifier to be your user id. ➔ In the field which says Data Set Name, type ZOS.PARTONE and press Ctrl. Typing 'UKxxxxx.ZOS.PARTONE' would result in the same thing as ZOS.PARTONE because without quotes, the system will automatically add your user id to the start. With quotes, it won't, so you have to type it yourself. The next screen is the one you use to customise your new dataset. (See how it says More: + in the top right hand corner? That means that the page is too large to fit on one screen. Use F7 and F8 to Page Up and Down the page.) ➔ Specify the following attributes for your PDSE: It should be allocated in tracks (TRKS) It should have a primary quantity of 1, and a secondary quantity of 1. The record format should be FB (fixed block), and the record length should be 80. The block size should be 32000. The data set name type should be LIBRARY (this tells the system that you are creating a PDSE). ➔ Set these values appropriately on the screen. (Any fields not mentioned above can be left blank or with the default that was already there.) See the next screenshot for how it should look: ➔ Hit Ctrl! Notice the message in the top right hand corner: Data set allocated. Success! You've successfully created a data set on the mainframe! Whenever you see a message in the top right hand corner like that, you can always hit F1 for help about the message. So what types of datasets can I make anyway? You've just made a PDSE, Partitioned Data Set Extended, and as the “extended” implies, the PDS was its predecessor. PDSEs are very similar to the PDSs, with a few internal improvements. There is another type of dataset called a sequential dataset. A sequential dataset is like a flat file; it behaves the same way as a a member of a PDS would. You can edit a sequential dataset directly, and it doesn't hold any members. Populate your new PDSE with a member You've made a dataset, but at the moment there isn't anything inside it! Let's copy in a member with some information about the products we sell at our company. A member could be anything – program code, program output, binary data, or flat text. ➔ F3 all the way back to the ISPF Primary Option Menu. ➔ Select option 3 (Utilities) ➔ Select option 3 (Move/Copy) The dataset from which we'll copy the product data is called ZOS.CONTEST1.PART1.PRODUCT.LIST. It's a sequential dataset, which means that the data is in the dataset itself, not in a member in the dataset. ➔ At the top of the panel, put C for copy in the Option field ➔ Put the name of the dataset to copy the member from in the Name field under the section labelled From Other Partitioned or Sequential Data Set Because you're referring to the full name of the dataset, you must put single quotes around it. Press Ctrl to go to the next panel, where you'll say where you want the contents of the data set to go. Under the section labelled To Other Partitioned or Sequential Data Set put the name of the data set you created in the previous section into the Name field. At the moment there aren't any members in your data set. If you specify a member name that doesn't exist, z/OS will create a new member and copy the data into it. We'll call the new member PRODLIST. Put the name of the member you want to copy the data into in brackets after the data set name. Like this: ZOS.PARTONE(PRODLIST) Remember what I said earlier about putting a data set name in quotes? Because you're copying the data into one of your own data sets that begins with your userid, you could type either 'UKxxxxx.ZOS.PARTONE(PRODLIST)' or ZOS.PARTONE(PRODLIST) Press Ctrl! If everything was filled in properly, there should be a message in the top right of the screen saying Data set copied. ➔ F3 back to the Utility Selection Menu ➔ Select option 4 (Dslist) Because you have used this panel before, it should already have your userid in the Dsname Level field. Press Ctrl to see all the data sets you own. As before, Tab to the new dataset you created (Ukxxxxx.ZOS.PARTONE) and enter b for browse in the space to the left of it. Inside the UKxxxxx.ZOS.PARTONE dataset, you'll see the new member PRODLIST that you created as a copy of the sequential dataset ZOS.CONTEST1.PART1.PRODUCT.LIST. Tab down to it, and in the space to the left of it enter e for edit. Also in this space you can enter b to browse the member as read-only, or d to delete the member. You can do this if you mess up the following instructions, then start again with a fresh copy of the employee list! While browsing a dataset: Put E in the left-hand column next to a member and press Ctrl to edit it in the ISPF text editor. Put B in the left-hand column or just put the cursor next to a member and press Ctrl to browse it. Use the ISPF editor to manipulate the text Now you're in the ISPF text editor, looking at the data in the PRODLIST member: Some commands can be typed on the Command line at the top of the screen. The ISPF editor shows a warning stating that the UNDO command is not available until you change your edit profile using the command RECOVERY ON. To get rid of this message you can either type RECOVERY ON or RESET into the Command line at the top of the screen and press Ctrl. Now let's practice some simple ISPF editor commands; they'll be your basic tools for editing all the different members you'll come across during the contest! This is where you put editor commands – just type them over the top of the line numbers in the command column: i – insert lines after current line. Can be followed with the number of lines to insert (e.g. i2) ➔ Insert a line by putting i in the command column on the first line, as shown in the screenshot. ➔ Now press Ctrl. A blank line has been created under the Sally's Sports heading. Notice that instead of line numbers next to these new lines, there are dots instead. This means they're temporary lines which will be removed if you don't put anything into them before hitting Ctrl again. Sally's Sports are stocking a new product! It's a book called How to Play Tennis, and the product code is BK145. The format of each record (line) in the member looks like this: Product ID Product name Buy price Sale price Stock count Prices are represented in pence. Sally's Sports buy in the book at £4.00 and sell it for £8.99. They've ordered 25. ➔ Type the new product details into the blank line you just inserted. ➔ Now press Ctrl. To stop more lines being inserted, press Ctrl again without typing anything in the blank line. There have been a few changes among our retailers recently, please update this list to reflect the new product lines. That book isn't the only new thing Sally's Sports is stocking! They're expanding their range of golf equipment. Instead of inserting new lines and typing in the different golf club products, simply repeat the record containing the Golf Clubs product (GF156) and change the relevant details. r – repeat the current line immediately below. Can be followed with the number of lines to repeat (e.g. r5) rr – repeat a block of lines. Must be put on two separate lines, and these will be included in the block of lines to repeat. ➔ Type r2 on the line containing GF156 Golf Clubs and press Ctrl. Two new lines will appear underneath it, repeated copies of the Golf Clubs record. Overwrite the product ids and prices of the new products as follows: GF157 Golf Clubs 20000 52999 10 GF158 Golf Clubs Deluxe 20000 79999 10 When you're finished the list should look like this: How's it going? If you get things wrong, type CAN or CANCEL on the command line and press Ctrl to go back to the list of members in your dataset without saving. Sally's Sports is now stocking the same golf equipment as Discount Dave, and is selling them at the same price. Copy the lines containing the golf products that Sally's Sports doesn't already stock from the section headed Discount Dave into the section headed Sally's Sports. c – mark lines for copying. Can be followed with the number of lines to copy (e.g. c2) cc – mark a block of lines for copying. Must be put on two separate lines, and these will be included in the block of lines to copy. a – insert marked line(s) after the current line. Can be followed with the number of times to repeat the marked line(s) b - insert marked line(s) before the current line. Can be followed with the number of times to repeat the marked line(s) As shown in the above screenshot, ➔ Press F8 to scroll down the page and see the rest of Discount Dave's product list. ➔ Put cc on the lines containing GF255 Golf Bag and GF912 Golf Shoes to copy them and the lines between them as well. Then... ➔ Press F7 to scroll back up the page to the Sally's Sports list In the top right corner of the screen will be the message MOVE/COPY is pending because you haven't yet said where you want the copied lines to go. ➔ Put a on the line containing GF158 Golf Clubs Deluxe to paste the text after this line, but before the Discount Dave heading. ➔ Press Ctrl to execute these commands! The member should look something like this: Did it work? When copying lines, you have to specify both where they're coming from (c or cc) and where they're going to (a or b) before you press Ctrl, otherwise it'll say: MOVE/COPY is pending Because of the competition, Discount Dave is no longer stocking golf equipment. Those products need to be deleted. d – delete current line. Can be followed with the number of lines to delete (e.g. d999 to delete pretty much everything) dd – delete a block of lines. Must be put on two separate lines, and these will be included in the block of lines to delete. ➔ Put d6 on the line containing GF034 Golf Balls under Discount Dave (you will need to scroll down to see it) to delete that line and the next five. ➔ Press Ctrl to execute the command! As with the copy command earlier, there is a choice between putting the number of lines to delete as a number after the d character, or by putting dd around a block of lines to delete all of them. There's another quick turn of events, Discount Dave is now selling rackets at a low price to undercut Sally's Sports, and Sally's Sports have pulled them off the shelves. Instead of copying and deleting the lines, this time we'll simply move them. m – mark lines for moving. Can be followed with the number of lines to move (e.g. m2) mm – mark a block of lines for moving. Must be put on two separate lines, and these will be included in the block of lines to move. a – insert marked line(s) after the current line. Can be followed with the number of times to repeat the marked line(s) b - insert marked line(s) before the current line. Can be followed with the number of times to repeat the marked line(s) As shown in this screenshot, ➔ Put m3 on the line containing SE123 Tennis Racket to move it and the badminton and squash rackets too. ➔ Put a on the line containing the Discount Dave header to move the text to the top of Discount Dave's product list. ➔ Press Ctrl to execute these commands! The member should look like this: Nearly done! Our advertising department has done some sterling work and attracted two new retailers to offer products on our website – Mark's Stores and Brian's Books So far we've been using line commands. There are other commands that can be executed from the “Command” line at the top of the screen. Copy the contents of the data set ZOS.CONTEST1.PART1.PRODUCT.LIST2 into your member. ➔ Type COPY 'ZOS.CONTEST1.PART1.PRODUCT.LIST2' on the command line ➔ Put a on the last line of the member to insert the data after the Colin's Camping list. ➔ Press Ctrl When the contents of the other data set are copied in, the member should now look like this: Why doesn't it scroll automatically? One of the unfamiliar things about the ISPF editor is that it doesn't automatically scroll as you type, like most PC editors do. There's a reason for this: efficiency! The terminal on your screen hardly does any processing, just displays what it receives from the mainframe (which is doing all the work). In the non-mainframe world, when you are using an editor that scrolls in real-time, going through the network to a server, you are always sending data back and forth to the server (for just about every key stroke). With mainframes (and the emulator you're using), data is only sent to the mainframe when you hit enter or an F key. This saves a lot of traffic. When you have upwards of 10,000 or more folks working at the same time, those few bytes on the network can mean big savings. The list is getting quite long! You can use the FIND command on the command line to scroll to and highlight occurrences of words. The CHANGE command is like find and replace! Our Political Correctness department has decided that the word “ball” is too offensive. Please change it to “sphere”. FIND 'search string' – Scroll to the next occurrence of the search string in the data set or member. Also highlights all occurrences of the search string. If there are no spaces in the string, the single quotes aren't needed. CHANGE 'search string' 'replacement' all – Change all occurrences of the search string in the data set or member to the replacement string. If there are no spaces in the strings, the single quotes aren't needed. The all keyword is optional, leaving it out will only change the next occurrence. ➔ Type CHANGE 'Ball' 'Sphere' all on the command line and press Ctrl The member should look like this You'll see a confirmation message in the top right to say that the product names have been changed. Well done! You've learned how to log into a mainframe, how to browse and create datasets, and how to make and edit your own dataset. Next we'll run an executable program with your dataset as the input. ➔ Press F3 to exit the editor; the file will automatically be saved. If you ever want to quit without saving, typing CAN or CANCEL on the command line will do the trick. Run an executable against your new dataset member ➔ From the ISPF Primary Options screen, choose option 6 – Command. This screen lets you enter TSO commands from ISPF. The program we're about to run is written in a language called REXX. REXX originated on the mainframe, but has been ported to a bunch of other platforms too. I like using REXX, it's simple and readable but still powerful. The REXX exec code is stored in a dataset called ZOS.CONTEST1.PART1.REXX(FORECAST) – FORECAST is the name of the member containing an executable program. We'll run it and use the member you just created as the input. ➔ Enter EX 'ZOS.CONTEST1.PART1.REXX(FORECAST)' 'UKxxxxx.ZOS.PARTONE(PRODLIST)' (where UKxxxxx is your username). EX is the TSO command to execute a program. The program will begin, and output some messages: Remember that *** means the mainframe is waiting for you to press Ctrl. It'll continue running the program when you do. The ISPF command shell keeps a list of commands you've entered recently. Put the cursor on one of these commands and press Ctrl to save time! ➔ Press Ctrl again to clear the output and return to the ISPF command shell where you ran the program from. The program has finished executing, so we can go and see what it did. Here's a cool trick to bypass the ISPF Primary Option menu... ➔ Enter =3.4 on the command line instead of pressing F3 This is the same as choosing 3 from the Primary Option Menu, then choosing 4 on the next screen. Shortcut! On any command line, enter = then a menu option, with further options separated by . to jump straight there! For example, in the last few sections you've been to: =2, =3.4 and =6. ➔ Enter your user id on the Dsname Level field to look at your datasets. Remember how I told you that if you don't use quote marks when specifying the data set name, the system will automatically add your user id to the start? Well, the data set list utility 3.4 is the only panel in the utilities menu (3) that doesn't do that. So, you'll always have to type the full data set name here, including your user id at the start. You should find one or two new sequential datasets which were generated by the FORECAST program, depending on whether you submitted your results. ➔ Put a b beside them and press Ctrl to have a look. In this dataset is the output of the FORECAST program that you just ran. I think it's fairly self-explanatory! The REXX exec forecasts the profit of each of the retailers, by calculating the profit gained by selling each product, then multiplying it by the number of that product the retailer has in stock. Then it writes the results to this new dataset, or appends them to the end if it already exists. If you didn't follow the instructions above, then the forecast profit you see will be different to that shown below. In that case, use the contents of the UKxxxxx.PARTONE.LOG dataset to see where you may have gone wrong, or start again with a new copy of the product list dataset! If you submitted your results, this program will have informed our finance team about your results, and they'll be able to tell me who managed to finish in the most timely fashion. That is, if your forecast is in line with our projections. If so... ...Congratulations! You've finished all the steps for Part One! If you're one of the first 250 successful winners, I'll send you a t-shirt in due course. You've accomplished a lot so far; not only can you create datasets and members on the mainframe, you can also run programs and generate output etc. It might be worth putting some of this on your CV – hands-on mainframe experience certainly sets you apart from other job seekers! There are lots of companies like ours who use a mainframe for large-scale data operations. The current generation of mainframe programmers are reaching retirement age, so large employers will be seeking mainframe skills. For more background and current information on mainframes and how widely they're used in business, check out these sites! IBM System Z homepage http://www.ibm.com/systems/z/ IBM Academic Initiative for System Z http://www.ibm.com/developerworks/university/systemz/index.html • “All of the top 25 world banks run their businesses of mainframes. • 23 of the top 25 global retailers run their mission-critical applications on a mainframe and rely heavily on enterprise systems-skilled employees. • 9 out of the top 10 global life/health insurance providers process their high-volume transactions on a mainframe.” In Part Two we're going to be doing some more challenging tasks, including coding and running programs, and using some of IBM's biggest and best applications! See you there!