0% found this document useful (0 votes)
7 views

Check Digit Program

Uploaded by

mdthrissa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Check Digit Program

Uploaded by

mdthrissa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

PRINT GEN

BEGIN NAME=SAMP,VERSION=07,AMODE=64
*|==================================================================|*
*|----------- P R O G R A M D E S C R I P T I O N ----------------|*
*|==================================================================|*
*| PROJECT NUMBER 04 | DATE 30/07/2024 |*
*|------------------------------------------------------------------|*
*| PROGRAMMER : THRISSA D |*
*|==================================================================|*
SPACE
*|==================================================================|*
*| PROGRAM FUNCTION: |*
*| |*
*| IT CALCULATES THE CHECK DIGIT FOR THE GIVEN SEQUENCE OF 14 |*
*| DIGIT NUMBERS |*
*|==================================================================|*
SPACE
*|==================================================================|*
*| METHOD: |*
*| IT ALTERNATIVELY MULTIPLY THE GIVEN 14 NUMBERS BY 1 AND 2 AND |*
*| IF THE DIGIT IS GREATER THAN 10, SUM UP LIKE 1+0 AND FIND THE |*
*| CHECK DIGIT |*
*|==================================================================|*
*| ENTRIES: |*
*| THE INPUT IS 14 DIGITS |*
*| THE GIVEN INPUT CONTAINS ONLY 14 DIGITS, IF NOT THROW ERROR |*
*| THE OUTPUT DISPLAYED IN THE SCREEN CONTAINS SINGLE DIGIT |*
*| AFTER EXECUTION , IF ENTRY IS VALID IT SHOWS DHECK DIGIT |*
*| IF INVALID , IT SHOWS AN ERROR MESSAGE |*
*|==================================================================|*
SPACE
*|==================================================================|*
*|------------ R E G I S T E R S & L E V E L S ----------------|*
*|==================================================================|*
*| REGISTER USAGE: |*
*| |*
*| INPUT PROGRAM OUTPUT |*
*| |*
*| R0 |*
*| R1 |*
*| R2 R2 CONTAINS INPUT VALUE |*
*| R3 R3 INDICATES LOOP |*
*| R4 |*
*| R5 R5 CONTAINS ADDRESS OF THE EBW WORKSPACE |*
*| R6 |*
*| R7 R7 CONTAINS FINAL CHECK DIGIT VALUE|*
*| R14 |*
*| R15 |*
*| |*
*|==================================================================|*
SPACE
*====================================================================*
* L O C A L W O R K A R E A *
*====================================================================*

INPUT DSECT
STORE DS C
CHECK1 DS XL20
SPACE
*====================================================================*
* M A I N P R O C E S S *
*====================================================================*

$IS$ CSECT
***** START CODING *****
USING INPUT,R5
LA R5,EBW000 TEMPORARY STORAGE REGISTER
LA R1,23(R1) 23 OF POSITION IS LOADED IN R1 REG
LR R2,R1 GIVEN INPUT IN R2
* NUMBER VALIDATION
LA R3,14 14 TIMES LOOP EXECUTED, LOAD IN R3
LOOP EQU * LOOP STARTS
CLI 0(R1),C'+' '+' IS COMPARED TO 0(R1)
BE LEN_ERR IF NOT EQUAL, BRANCH TO LEN_ERR
CLI 0(R1),X'F0' COMPARE IMMEDIATELY F0 WITH 0(R1)
BL NUMERR IF LOW, GO TO BRANCH NUMERR
AHI R4,1 INCREMENTING 1 IN R4 REGISTER
CLI 0(R1),X'F9' COMPARE IMMEDIATELY F9 WITH 0(R1)
BH NUMERR IF HIGH, GO TO BRANCH NUMERR
LA R1,1(R1) BUMPING IS DONE TO GET NEXT VALUE
BCT R3,LOOP LOOP ENDS
CLI 0(R1),C'+' '+' IS COMPARED TO 0(R1)
BNE LEN_ERR IF NOT EQUAL, BRANCH TO LEN_ERR
* CALCULATION CALCULATION STARTS
SR R3,R3 CLEARS R3 REGISTER
SR R4,R4 CLEARS R4 REGISTER
XR R6,R6 CLEARS R6 REGISTER
LA R4,7 7 TIMES LOOP EXECUTED, LOAD IN R3
LOOP1 EQU * ODD POSITION CALCULATION
XI 0(R2),X'F0' CLEARS F AND MAKE IT AS 0 IN 0(R2)
IC R3,0(R2) 1 BYTE IS INSERTED TO R3 REGISTER
AR R6,R3 R3 AND R6 IS ADDED AND STORED IN R6
LA R2,2(R2) BUMP 2 TIMES TO GET ODD POS VALUE
BCT R4,LOOP1 LOOP ENDS

SR R3,R3 CLEARS R3 REGISTER


SR R4,R4 CLEARS R4 REGISTER
SR R14,R14 CLEARS R14 REGISTER
SR R15,R15 CLEARS R15 REGISTER
AHI R1,-14 BACKTRACKING LENGTH
LR R2,R1 GIVEN INPUT IN R2
LA R2,1(R2) 24 OF POSITION IS LOADED IN R2 REG
LA R4,7 7 TIMES LOOP EXECUTED, LOAD IN R3
LOOP2 EQU * EVEN CALC
XI 0(R2),X'F0' CLEARS F AND MAKE IT AS 0 IN 0(R2)
IC R3,0(R2) 1 BYTE IS INSERTED TO R3 REGISTER
MHI R3,2 2 IS * IMMEDIATELY AND STORED IN R3
LR R15,R3 R3 IS LOADED TO R15
LHI R7,10 10 IS IMMEDIATELY LOADED IN R4 REG
SR R14,R14 CLEARS R14 REGISTER
DR R14,R7 R3 HAS EVEN POS VAL, DIV BY 10
AR R14,R15 QOUT,REM IS ADDED AND STORE IN R2
AR R6,R14 R6(ODD),R2(EVE) IS ADDED
LA R2,2(R2) BUMP 2 TIMES TO GET EVEN POS VALUE
BCT R4,LOOP2 LOOP ENDS
* SUM % 10
SR R14,R14 CLEARS R14 REGISTER
LR R15,R6 R6 REG VAL IS LOADED TO R3 REG VAL
DR R14,R7 R14 AND R7 IS DIV AND STORED IN R2
* 10-(SUM %10)
SR R2,R2 CLEARS R2 REGISTER
SR R7,R14 R2 VAL IS SUB BY 10 IN R7
LR R3,R7 R7 IS LOADED TO R3
LHI R4,10 10 IS IMMEDIATELY LOADED TO R4 REG
DR R2,R4 R3 AND R4 IS DIVIDED
AR R2,R3 REM AND QUOT IS ADDED
LR R7,R2 R2 IS LOADED TO R7 REGISTER
* PRINTING CHECK DIGIT
AHI R7,X'F0' FO IS IMMEDIATELY ADDED TO R7 REG
STC R7,STORE R7 VALUE IS TORED TO STORE LOCATION
MVC CHECK1,CHECK CHECK1 ADDRESS IS MOVED TO CHECK
MVC CHECK1+20(1),STORE I BYTE IS MOVED TO STORE LOCATION
LA R4,CHECK1 CHECK1 IS LOADED TO R4 REGISTER
BAS R6,SUB_RTN BRANCH TO SUB_RTN
*====================================================================*
* E R R O R R O U T I N E S *
*====================================================================*

NUMERR EQU *
LA R4,INVAL1 INVAL1 IS LOADED TO R4 REGISTER
BAS R6,SUB_RTN BRANCH TO SUB_RTN
LEN_ERR EQU *
LA R4,INVAL2 INVAL2 IS LOADED TO R4 REGISTER
BAS R6,SUB_RTN BRANCH TO SUB_RTN

SUB_RTN EQU * BRANCH SUB_RTN


WTOPC TEXTA=(R4) PRINTING STATEMENT

***** END CODING *****


END EXITC

*====================================================================*
* C O N S T A N T S / E Q U A T E S *
*====================================================================*

INVAL1 DC X'C',C'NUMBER ERROR'


INVAL2 DC X'E',C'INVALID LENGTH'
CHECK DC X'14',C'THE CHECK DIGIT IS: '

FINIS SAMP
END

You might also like