
SAMPLE ASSEMBLY LANGUAGE PROGRAM RUN UNDER OS
//KC02263R JOB (KC02263),'ED BOZ',REGION=3M,CLASS=A,MSGCLASS=H,
// NOTIFY=KC02263,MSGLEVEL=(1,1)
//*
//*
//*
//FFFPROC JCLLIB ORDER=(TSOEFFF.STUDENT.PROCLIB.ASM)
//JESDS OUTPUT PAGEDEF=V06483,JESDS=ALL,DEFAULT=Y,CHARS=GT15
//STEP1 EXEC PROC=HLLASM
//ASM.SYSIN DD *
LAB2A CSECT , COMMA REQUIRED IF COMMENT ON THIS STMT
**********************************************************************
* FUNCTION - READ NUMBERS, ONE PER LINE, AND PRINT THE SUM
* REFERENCE: PAGES 166 – 175, 216 OF ABEL’S BOOK
* THIS VERSION USES A SIMPLE SUBROUTINE
* INPUTS - STANDARD "CARD DECK" INPUT
* OUTPUT - THE STANDARD PRINTER
* ENTRY - LABX
* PARMS - NONE
* NORMAL EXIT(S) - RETURN TO CALLER
* ERROR EXIT(S) - NONE
* MACROS USED - SAVE, RETURN, YREGS, DCB, GET, PUT, OPEN, CLOSE
* EXTERNAL CALLS - NONE
* PROGRAMMER: E. L. BOSWORTH LOCATION: CSU DATE: JULY 8, 2008
**********************************************************************
* STANDARD LINKAGE FOR A REUSABLE OS/MVS CSECT
**********************************************************************
SAVE (14,12) SAVE CALLER'S REGS
BALR R12,0 ESTABLISH
USING *,R12 ADDRESSABILITY
LA R2,SAVEAREA POINT TO MY LOWER-LEVEL SA
ST R2,8(,R13) FORWARD-CHAIN MINE FROM CALLER'S
ST R13,SAVEAREA+4 BACK-CHAIN CALLER'S FROM MINE
LR R13,R2 SET 13 FOR MY SUBROUTINE CALLS
********************** BEGIN LOGIC *********************************
*
* SET UP THE INPUT AND OUTPUT AND PRINT HEADERS
*
STARTUP OPEN (FILEIN,(INPUT)) OPEN THE STANDARD INPUT
OPEN (PRINTER,(OUTPUT)) OPEN THE STANDARD OUTPUT
PUT PRINTER,PRHEAD PRINT HEADER
L R4,=F’0’ CLEAR R4 TO STORE THE SUM
GET FILEIN,RECORDIN GET THE FIRST RECORD, IF THERE
*
* READ AND PROCESS LOOP
*
A10LOOP MVC DATAPR,RECORDIN MOVE INPUT RECORD
PUT PRINTER,PRINT PRINT THE RECORD
PACK PACKIN,FIELD01 CONVERT DIGITS INPUT TO PACKED
CVB R5,PACKIN CONVERT THE NUMBER TO BINARY
AR R4,R5 ACCUMULATE THE SUM IN REGISTER 4
GET FILEIN,RECORDIN GET THE NEXT RECORD
B A10LOOP GO BACK AND PROCESS
*
Page 1 of 3 pages Revised July 2, 2008