This action might not be possible to undo. Are you sure you want to continue?
Assembler Programming Workshop
Assembler Programming Workshop
A Legac-e Education Course
Module 1 2 3 4 5 6 7 8 9 10 11 12 13 14
Title Assembler Introduction Data Areas Beginning and Ending Basic Decision Making Moving data around storage Non-VSAM queued I/O macros Load and Store Register contents DSECTs and Getting Storage More Decision Making Binary Integer Arithmetic Decimal Arithmetic Bit Manipulation Handling Sub-routines VSAM I/O macros
Appendix A Appendix B Appendix C
Assembler Instructions with page reference Machine Instructions Mnemonics with page reference Macros used, with page reference
Assembler Programming Workshop
A Legac-e Education Course
At the completion of this course, students will know and understand how to use the IBM Assembler Programming Language. All students will be able to: • • • • Explain the assembly process Explain the general syntax and structure of the language Demonstrate the ability to start and end programs correctly Select and use appropriate instructions for moving data between registers and storage Select and use appropriate instructions for moving data around storage Use appropriate instructions to alter the logic flow of a program. Perform binary integer arithmetic Perform decimal arithmetic Perform bit manipulation Execute non-VSAM queued technique I/O macros. Pass control between sub-routines Perform VSAM ESDS I/O operations
• • • • • • • •
South Yorkshire.uk www. UK. SL17 3LA Telephone (National) 0114 262 0933 Telephone (International) +44 114 262 0933 E-mail Website firstname.lastname@example.org . please contact: Legac-e Education 228 Abbeydale Road South.legac-e. Dore.Legac-e Education Assembler Programming Workshop A Legac-e Education Course Course documentation All Legac-e designed to intended to material by course. Sheffield. If you require more information about our Legac-e Education’s services. Education course documentation is complement the course. and is not be used as stand alone reference those who have not attended the This course is designed and produced by KMS-IT Limited.co.
without the prior permission of the copyright owners.Legac-e Education Assembler Programming Workshop A KMS-IT Limited Course Notice All rights reserved. photographic. © Copyright Legac-e Education 2004. stored in a retrieval system. 2006 All registered or unregistered trademarks referenced in this material are the property of their respective owners. . mechanical. No part of this publication may be reproduced. or transmitted in any form or by any means. electronic. or otherwise.
Legac-e Education Module 1 Assembler Introduction © Copyright Legac-e Education 2004. 2006 .
Legac-e Education is a trade name of KMSIT Limited. whose registered address is: 228 Abbeydale Road South Dore Sheffield S17 3LA South Yorkshire UK Tel: +44 (0)114 262 0933 E-mail: enquiries@kmsitltd. This material has been produced by. irrespective of the elearning provider.Legac-e Education This is Version 2 of this document. No 3767263 . produced in January 2006. trading as Legac-e Education. Copying of any of the material is prohibited except with the express permission of the authors.uk KMS-IT Limited is registered in England and Wales. and is the property of KMS-IT Limited. Payment of a course fee entitles the subscriber to access to a single copy of both hardcopy and online material for the sole use of the subscriber.co.
Assembler Introduction Topics Page Introduction ________________________________________________________1 Documentation and source code syntax______________________________2 The need for multiple documents________________________________________ 2 Instructions to the assembler___________________________________________________2 Machine code mnemonics _____________________________________________________2 Data area declarations ________________________________________________________2 Macro instructions ____________________________________________________________2 Additional documentation ______________________________________________ 4 Documentation location ________________________________________________ 4 Source code syntax ____________________________________________________ 6 Label _______________________________________________________________________6 Operation ___________________________________________________________________6 Operands ___________________________________________________________________8 Comments __________________________________________________________________8 Continuation _________________________________________________________________8 Assembly process _________________________________________________10 Overview _____________________________________________________________ 10 Assembly .Step 1 _____________________________________________________ 12 Program Bind .Legac-e Education Module 1 .Step 2 _________________________________________________ 14 Executable code .Step 3_______________________________________________ 16 General Purpose Registers _________________________________________18 Register sizes_________________________________________________________ 18 24-bit addressing____________________________________________________________18 31-bit addressing____________________________________________________________18 64-bit addressing____________________________________________________________18 Register conventions __________________________________________________ 20 Relocatable Addressability _________________________________________22 Addressability components ____________________________________________ 24 Base register _______________________________________________________________24 Displacement _______________________________________________________________24 An internal representation _____________________________________________ 26 Establishing addressability ____________________________________________ 28 Assembly time ______________________________________________________________28 Run time ___________________________________________________________________28 © Copyright Legac-e Education 2004. 2006 .
6 Sample Assembly Procedure_______________________________38 © Copyright Legac-e Education 2004.Legac-e Education Topics Page Practical example _____________________________________________________ 30 Multiple base registers ________________________________________________ 32 Instruction Notation ___________________________________________________ 34 z/OS 1. 2006 .
Assembler Introduction Page 1 .Legac-e Education Introduction The first module of the "Assembler Programming Workshop" sets the scene in which the IBM Assembler Language operates. The main topics covered are: • • • • • Documentation sources Source code syntax Assembly Process General Purpose Registers Relocatable addressability Module 1 .
Assembler Introduction .High Level Assembler Language Reference Machine code mnemonics z/Architecture Principles of Operation manual (SA22-7832) describes the actual instructions and how they work. some of those relevant to z/OS are listed opposite. a User’s Guide explaining ho wto do certain tasks. Instructions to the assembler SC26-4940 . The most common macro manuals are: SC26-7408 DFSMS Macro Instructions for Data Sets.Legac-e Education Documentation and source code syntax With high level programming languages such as COBOL and PL/I it is common to employ only two manuals. The need for multiple documents Assembler Programming demands a greater understanding of the hardware infrastructure and operation as the instructions are part of the hardware.High Level Assembler Language Reference Macro instructions There may be a variety of manuals depending upon the type of macro required. and a Language Reference Manual explaining the specific syntax and structure of the language. Page 2 Module 1 . Data area declarations SC26-4940 . such as: Instructions to the assembler Machine code mnemonics Data area declarations Macro instructions The definitions of these statement types are spread across a number of manuals. The source input to the assembler is likely to contain different types of statements.
(As per Data Definitions above. (See DFSMS Macro Instructions for Data Sets. 2004.Legac-e Education Source Code • Mnemonic Machine Instructions.) E OP N • START RG TO L END 11 Copyright © Legac-e Education. C L OS SC26-7408) E Instructions to the Assembler. (See High Level Assembler Language Reference SC26-4940) AP CLC LM • DC GET DS DC B • Macros. (See Principles of Operation SA22-7832) Data Definitions. 2005 Module 1 .Assembler Introduction Page 3 .
LINK. two manuals will prove useful: z/OS MVS Programming: Assembler Services Reference. it is useful to note that nearly all manuals are in Adobe Acrobat (. Product licensing normally provides for one hard-copy.PDF) format and are obtainable from the IBM WEB site. 2 (SA22-7607) If running on non-z/architecture and/or OS/390: ESA/390 Principles of Operation (SA22-7201) if running a machine other than a z/8nn or z/9nn. and a soft-copy CD. Page 4 Module 1 .Legac-e Education Additional documentation These manuals may also be useful. For supervisor service macros such as CALL. Vol.Assembler Introduction . OS/390 DSFSMS/MVS Macro Instructions for Data Sets (SC26-7337) OS/390 MVS Programming: Assembler Services Reference (GC28-1910) Documentation location It is reasonable to assume that each installation would have its own copy of the relevant documentation. STORAGE etc. The foil opposite indicates the link process to find the manual library on the WEB. If the documentation cannot be found or additional copies are required. 1 (SA22-7606) z/OS MVS Programming: Assembler Services Reference. Vol.
2005 13 Module 1 . 2004.Assembler Introduction Page 5 .Enterprise • Library • Select system environment Copyright © Legac-e Education.ibm.Legac-e Education Documentation location • www.com • Products & Services • Servers .
Essentially each source statement is an 80-byte record.Legac-e Education Source code syntax The rules governing assembler source code date from the 1960s when source code was input via punched cards. with columns 73-80 reserved for sequence numbers. Page 6 Module 1 . especially with regard to catalogue procedures. The operation will be one of: A machine code mnemonic An instruction to the assembler A macro instruction name Convention has it that the operation field will start in column 10. Statements comprise 5 areas. Labels can be composed of alphanumeric characters or national symbols.Assembler Introduction .e. • • • • Label Operation Operands Comments Label The label field if required begins in column 1. but cannot start with a number. If a label is not required the label area must be blank. and can be up to 8 characters long. i. In some ways the rules are similar to those which applied to JCL at that time. Operation This will be separated from the label field and operands field by blanks.
Label is optional. if coded it must begin in column 1. Copyright © Legac-e Education.Legac-e Education Source code syntax 80 Characters or bytes in length MYPGM CSECT STM 14. 2005 14 Module 1 . A name cannot exceed 8 characters. Name can consist of Alphanumeric & National characters. 2004.12.Assembler Introduction Page 7 .12(13) SAVE REGISTERS Operation is mandatory and has a blank either side of it. If omitted column 1 must be blank.
invoking macros for instance. Operands will be separated by commas. if not a comment can start in any column but are often found from either column 35 or 40 onwards. and starting the remaining operands in column 16. and the first blank in the operands field will be treated as the end of the operands. Macro instructions may have many operands depending upon the complexity of the macro function. There may be installation standards pertinent to comments.Assembler Introduction . Continuation There will be occasions. when all the operands may not fit within the 71 bytes available. Machine code mnemonics may have up to three operands.Legac-e Education Operands The number and type of operands will vary according to the operation. Statements can be continued by coding a non-blank character in column 72. Where possible convention dictates that operands start in column 16. Comments To aid understanding of the code. Page 8 Module 1 . particularly from a maintenance perspective it is recommended that comments are liberally applied throughout the assembler source.
Copyright © Legac-e Education. 2005 15 Module 1 . * LRECL=80.Legac-e Education Continuation 80 Characters or bytes in length SYSIN DCB DSORG=PS.EODAD=QUIT Non-blank character in column 72.Assembler Introduction Page 9 . 2004. Rest of operands start in column 16 on next statement.DDNAME=SYSIN.MACRF=GM.
Legac-e Education Assembly process Overview The diagram opposite illustrates the process of compiling (or assembling) source code into an executable program. The three steps represented by the middle column of the diagram are: • • • Assembly (or compile) Program Bind (sometimes known as Link-Edit) Execution (or GO stage) Each of these steps is described in more detail on the following pages. Page 10 Module 1 .Assembler Introduction .
Assembler Introduction Page 11 . 2005 (SYSLIB) Sub-routines 6 Module 1 .Legac-e Education Assembly Process (SYSIN) Souce Code Assembly (PGM= ASMA90) (SYSPRINT) Assembly Listing (SYSPRINT) Binder Listing Program Binder (PGM=HEWL) (SYSLIN) Object Code (SYSLMOD) Load Module Go via Program Fetch Copyright © Legac-e Education. 2004.
A condition code of 4 may not be serious. STEP WAS EXECUTED COND CODE 0000.Macro or copy book libraries required by the assembly. .Object module to be input to the program binder Ideally a condition code of zero. it does not produce executable code. While this step produces machine code. Any condition code greater than 4 must be investigated. although CICS programs may require a preprocessor step ahead of this.Step 1 This is usually the first step.Listing of the assembled source . The DD statement definitions can be checked in "z/OS Sample Assembly Procedure" later in this module. Inputs to the assembly step will be: SYSIN SYSLIB . it may simply be warnings from embedded macros. the location of the source code to be compiled.Legac-e Education Assembly . Page 12 Module 1 . Outputs from the assembly step will be: SYSPRINT SYSLIN . will be issued by this step.Assembler Introduction .primary input. which contains the z/OS 1. The aim of this step is to convert the input source code to machine code format. i.3 assembly procedure as supplied by IBM.e.
2005 7 Cond Code 8> Cond Code 0 47F0F05808E6E2C8D6D7 F14040000000000000000 000000000000000000000 Module 1 . Copyright © Legac-e Education.Legac-e Education Assembly Results Input + • A listing with diagnostics.Assembler Introduction Page 13 . • This is not executable. 2004. Macro Expansions & XREF • Object code: – ESD – Machine Code – Data Constants.
Inputs to the program binder step will be: SYSLIN SYSLIB Anyname .Assembler Introduction . The DD statement definitions can be checked in "z/OS Sample Assembly Procedure" later in this module. which contains the z/OS 1. The function of this step is to produce an executable routine. The entry point of the program will also be established by this process. This process includes the resolution of any external references. i. Page 14 Module 1 .e.e.Libraries searched for implicit includes (unless PARM=NCAL) . will be issued by this step. i.6 assembly procedure as supplied by IBM. calls or links to other modules. which may form part of a larger program.Library to contain executable program . the location of the source code to be compiled .Work area Ideally a condition code of zero.Own library explicitly mentioned on an INCLUDE statement Outputs from the program binder step will be: SYSLMOD SYSPRINT SYSUT1 .Legac-e Education Program Bind .Primary input. Any condition code greater than 4 must be investigated.Step 2 Program Bind is the modern term for what was historically known as the LinkEdit step.Listing of the bound program plus input control statements . STEP WAS EXECUTED COND CODE 0000.
2005 Module 1 .Legac-e Education The Link or Bind Results • A listing with diagnostics. • This should be executable code. Copyright © Legac-e Education. Input Statements Module Map & XREF Cond Code 0 47F0F05808E6E2C8D6D7 F14040000000000000000 000000000000000000000 8 Cond Code 8> • Executable module or program stored in a library. 2004.Assembler Introduction Page 15 .
or STEPLIB DD statements in the job or job step. Such programs cannot modify themselves and if they need to store or amend data. and stored somewhere on the system. which constitute the LPA concatenation.LINKLIB). such as the Link Pack Area (LPA).e. Normal application batch modules or programs are likely to reside in a private load library. Utility programs. (This member constructs the logical concatenation to SYS1. Member IEALPAnn of SYS1. To be LPA eligible modules require special attributes such as being reentrant. IEBPTPCH. If the module or program has a special function. Application programs are often located at run time by including JOBLIB. These DD statements are not required however if the private libraries are added to member LNKLSTnn in SYS1. and IEFBR14 typically reside in the default system load library called SYS1. such IEBGENER. and will usually be invoked via a JCL EXEC statement.Step 3 This is the resultant module or program produced by the Program Binder.PARMLIB. Page 16 Module 1 . that data has to be outside of the module itself.Legac-e Education Executable code .LINKLIB.PARMLIB defines the libraries. it may be an exit to a system product. i.Assembler Introduction . Where the module (program) is stored and how it is invoked will be dependent upon its usage. or RENT in Program Binder terms. or a user-written supervisor call (SVC) it will need to reside an appropriate system area.
PARMLIB • In some circumstances it will be LPA eligible. – //JOBLIB DD DSN=PROD.Legac-e Education Executable Code • Typically stored in system load library like: – SYS1.BATCH.LOADLIB – member LNKLST00 in SYS1. 2005 9 Module 1 .BATCH.PARMLIB Copyright © Legac-e Education.LINKLIB • Or a private library like: – PROD.LOADLIB • Accessible either through JOBLIB / STEPLIB. – member IEALPAxx in SYS1. or the LNKLST. 2004.Assembler Introduction Page 17 .
Register sizes On the original systems prior to MVS/XA 24-bit addressing was all that was available. 64-bit addressing On 64-bit hardware the registers are eight bytes (64 bits) in size.Assembler Introduction . and all programs executing on that processor will use them. MVS/XA introduced 31-bit addressing. hence 31 rather than 32-bit addressing. of the register are used to contain a valid address. In 64-bit mode all eight bytes of the register are used to hold a valid address. In this mode all four bytes of the register are used to contain a valid address. 24-bit addressing On 24-bit hardware the registers are four bytes (32 bits) in size. the low order three bytes. In order to maintain compatibility with the older systems. 31-bit addressing On 31-bit hardware the registers are four bytes (32 bits) in size.Legac-e Education General Purpose Registers There are sixteen general purpose registers available to each processor. In this mode only 24-bit. Page 18 Module 1 . but the high order bit is reserved. and the current z/Architecture and its z/OS operating system offer the capability to have 64-bit addressing. only the low order four bytes of the register are used if the module or program is compiled with AMODE(24) or AMODE(31).
2004.Legac-e Education General Purpose Registers 24-bit addressing compatibility 31-bit addressing 64-bit addressing Copyright © Legac-e Education. 2005 27 Module 1 .Assembler Introduction Page 19 .
Note that some instructions. Note also that the use of register zero may be restricted by some instructions and result in a no-operation condition.) Page 20 Module 1 .used for passing a single parameter . can corrupt registers. The convention is: R0 R1 R13 R14 R15 .contains the return address from a called sub-routine .Legac-e Education Register conventions Within the assembler programming arena a convention has been established for register usage. although not following the convention will invite trouble if either implicit or explicit calls to other routines are made. This convention is almost universal. although some IBM system routines do not use register 12 as their base register. (This is not a failure as the program will continue to run.contains the entry address of a called sub-routine Irrespective of the above convention any register can be used for any purpose. such as TRT.contains the address of the register save area .used for passing a parameter list .Assembler Introduction .
0 1 Pass single parameter Addr of Parameter List 8 9 10 11 12 13 14 15 Base Register Address of Save Area Return Address Entry Address 28 2 Can be corrupted by TRT 3 4 5 6 7 Copyright © Legac-e Education.Assembler Introduction Page 21 . 2004. 2005 Module 1 .Legac-e Education Register Conventions.
and may also be used as a technique to access areas of storage beyond the addressing boundaries of the module. Relocatability allows a module or program to be loaded into different storage locations at different times. Page 22 Module 1 . Relocatability requires that each storage address used within a program be broken into two components: • • Base register Displacement This combination.Assembler Introduction . described in more detail in a moment. Managing such an environment would either significantly restrict the number of concurrent program executions. will definitely apply to the module itself.Legac-e Education Relocatable Addressability If programs were not relocatable they would always occupy the same area of storage. In high level languages such as COBOL and PL/I this relocatable concept is transparent to the programmer. but this is not the case in Assembler. yet function as intended. or increase the maintenance overhead when programs and operating systems changed.
Legac-e Education How is relocatability achieved? • A base register is established.Assembler Introduction Page 23 . Copyright © Legac-e Education. 2004. 2005 18 Module 1 . • Additionally specific areas of memory. may require separate base registers for ease of data manipulation. • In high level languages this is dealt with by the compiler. • There will be at least 1 base register for the program depending upon its size. such as arrays.
In simple terms. The maximum offset value is 4095. or hexadecimal FFF. Remember that the base register points to the first byte and hence the first byte is at offset zero. This is discussed in the next topic.Legac-e Education Addressability components As mentioned earlier relocatability requires that each storage address used within a program be broken into two components: • • Base register Displacement Base register This is the anchor for relative addressing and logically this register contains the address of the first byte of storage used for subsequent relative addressing. Displacement The displacement is the relative offset to be added to the address in the base register to locate the particular area of storage. with the instructions and data areas within the program being referenced via displacements relative to the address in the base register. Page 24 Module 1 . as there are only sixteen General Purpose Registers available.Assembler Introduction . for a program the base register points to a location toward the start of the program. The base register will be identified by a value in the range 0 to 9 or A to F.
Assembler Introduction Page 25 . 19 Copyright © Legac-e Education. which is the offset from the base.Legac-e Education Addressability Components All instructions which access memory (storage) will have one or more components in the form: BDDD A single character in the range 0 .F. which represents the base register. 2004. A number in the range 0 4095 (cannot be greater than X’FFF’). 2005 Module 1 .9 or A .
The next two bytes hold the address of the target field in BDDD format. The last two bytes hold the address of the source field in BDDD format.Legac-e Education An internal representation The foil opposite illustrates how a particular MoVe Character (MVC) instruction has been assembled. The second byte. 07. D2. The first byte.Assembler Introduction . Page 26 Module 1 . is the machine operation code for the MVC instruction. of the field to be moved. minus 1. is the length.
X‘420’ beyond the address in Register 12. D2 07 C A30 C 420 Second operand’s displacement.Legac-e Education An internal representation This represents a MoVe Character (MVC) instruction as it might appear after assembly. 2004. X‘A30’ beyond the address in Register 12. Register 12.Assembler Introduction Page 27 . Register 12. Second operand’s base register. 2005 Module 1 . 20 First operand’s base register. First operand’s displacement. Copyright © Legac-e Education.
Page 28 Module 1 . Run time At run time the system needs to know where in storage the code or data area resides. The assembler also needs to know what the initial displacement is. These two requirements are resolved with the USING statement. which are relevant at two separate times: • • Assembly time Run time Assembly time At assembly time it is necessary to inform the assembler which register is to be used as the base register.Legac-e Education Establishing addressability Establishing addressability requires two actions. The BASR instruction is usually used to establish the base for a program or module.Assembler Introduction .
START 0 BASR 12. 2005 21 Module 1 .12 MVC IN(8).0 USING *. 000000 UTILPGM 000000 000002 000002 Sets IC to zero.B Puts address of next instruction into GPR 12. Convention is to use GPR 12. Tells the assembler to use 12 as the base register. Copyright © Legac-e Education. 2004.1 The programmer must select a GPR to act as the base register for addressability.Assembler Introduction Page 29 .Legac-e Education Program addressability .
Assembler Introduction . Page 30 Module 1 . which might imply that a program could not be larger than 4096 bytes in size. The big limitation of course is the maximum displacement of X'FFF'.Legac-e Education Practical example The diagram opposite illustrates how the system calculates storage addresses by using the combination of base register and displacement.
X‘C30’ X‘620’ PTIME DC CL8‘ ’ F1F27AF0F87AF0F0 4040404040404040 22 Copyright © Legac-e Education.2 BASR 12.0 D207CA30C420 MVC PTIME. 2004.Assembler Introduction Page 31 .Legac-e Education Program addressability .MTIME Base + Offset MTIME DC CL8‘ ’ 00000200 R12 is Base Register. 2005 Module 1 .
especially those which cannot be sub-divided into discrete modules. multiple base registers can be used. Page 32 Module 1 .Assembler Introduction . In this instance 3 base registers are being established which allows the program to be 12K in size. Opposite is a piece of code demonstrating how multiple base registers can be set up. (4096 times 3).Legac-e Education Multiple base registers To cater for large modules or programs.
12.Legac-e Education Multiple base registers If the program is likely to be greater than 4096 bytes in size. 2004. either code it in multiple CSECTs.10. 2005 Module 1 .11.B 14 CL10‘ ’ CL5‘TERRY’ 23 BASE BASES MAIN IN B Copyright © Legac-e Education.Assembler Introduction Page 33 .0 *. or use more than 1 base register.BASES MAIN A(BASE+4096) A(BASE+8192) IN(8).11 10. 000000 000000 000002 000006 00000A 00000E 000012 000018 00001A 000024 58ABC008 47F0C010 00001002 00002002 D207C018C022 07FE 40404040 E3C5D9D9 UTILPGM START BASR USING LM B DC DC MVC BR DC DC END 0 12.
Page 34 Module 1 .Legac-e Education Instruction Notation The illustration opposite is included as an indication of how other documentation might discuss or present instruction formats. The 'Principles of Operation' manual usually has diagrams of this type as part of the definition of each instruction.Assembler Introduction . This is not however indicative of how instruction would necessarily be coded.
b1). 2005 Module 1 .Legac-e Education Instruction notation MVC d1(L1. 2004.Assembler Introduction Page 35 .d2(b2) OP L b1 d1 b2 d2 (SS) Operation for MVC this is D2 Length Base Register first operand Base Register second operand Displacement of second operand 24 Displacement of first operand Copyright © Legac-e Education.
Page 36 Module 1 .12).Legac-e Education Potential source formats This illustration offers two examples of how instructions might be coded.Assembler Introduction .1056(12) If however the two storage areas used by the instruction reside within the current module. then it might be necessary to code the MVC instruction in the form: MVC 2608(8. and use the labels in the instruction thus: MVC PTIME. and hence more easily understood. If the two storage areas used by the instruction are outside of the current module. At the top of the illustration is the sample machine code for the MVC instruction used in earlier examples. it is easier to assign labels to those storage areas.MTIME The later is arguably more readable than the former.
MVC PTIME.Legac-e Education Potential source formats D207CA30C420 Our previous MoVe Character (MVC) Instruction.Assembler Introduction Page 37 . in relocatable source form. 2005 25 Module 1 . MVC 2608(8. Copyright © Legac-e Education.1056(12) The same instruction.MTIME The same instruction.12). in non-relocatable source form. 2004.
SPACE=(4096. COND=(8.1.SPACE=(1024.1))..NCAL'.(40.ROUND).RECFM=FBS.DCB=BUFNO=1 SYSOUT=* ASMACL PROC Page 38 Module 1 .DELETE) DDNAME=SYSIN DISP=(.6 Sample Assembly Procedure 000010 //ASMACL 000020 //* 000030 //*** 000040 //* 000050 //* THIS PROCEDURE RUNS THE HIGH LEVEL ASSEMBLER.120).SPACE=(CYL.LRECL=80. UNIT=VIO. 000070 //* 000080 //C 000090 //SYSLIB 000100 //SYSUT1 000110 // 000120 //SYSPRINT DD 000130 //SYSLIN 000140 // 000150 // 000160 //L 000165 // 000170 //SYSLIN 000180 // 000190 //SYSLMOD 000200 // 000210 //SYSUT1 000220 // 000230 //SYSPRINT DD DD DD DD DD DD EXEC PGM=ASMA90 DD DD DSN=SYS1. DSN=&&GOSET(GO) DSN=&&SYSUT1.SPACE=(3040.LIST.(120.DISP=(MOD. UNIT=VIO.BUFNO=1) EXEC PGM=HEWL. UNIT=VIO..ROUND).DISP=(OLD.40). DCB=(BLKSIZE=3040.ROUND).PASS).120).MACLIB.Assembler Introduction .LT.Legac-e Education z/OS 1. 000060 //* LINK-EDITS THE NEWLY ASSEMBLED PROGRAM..C) DSN=&&OBJ..DCB=BUFNO=1 SYSOUT=* DSN=&&OBJ.DISP=SHR DSN=&&SYSUT1.(1.(120.UNIT=SYSDA..PASS)..LET.PARM='MAP.