********************************************************
**
** PROGRAM
NAME: JONAS3.RPG
** AUTHOR:
JONAS WIK
**
DESCRIPTION: THIS PROGRAM READS A RECORD OF EMPLOYEES
** AND COMPUTES THEIR SALARY BY COMPUTING
THE BASE
** SALARY AND THE COMMISSION SALARY AND
ADDS THEM
** TOGETHER. IT CREATES A REPORT THAT CONTAINS THE
** SALESPERSON NUMBER, THE NAME, THE
MONTHLY SALES
** THE SALES RETURN, THE YEARS EMPLOYED,
THE BASE
**
SALARY, THE COMMISION AND THE TOTAL SALARY DUE.
**
********************************************************
**
** INDICATOR
SUMMARY:
** 01 RECORD IDENTIFYING INDICATOR FOR
MCOM2P
** 1P FIRST PAGE INDICATOR FOR HEADINGS ON
REPORT
** OF OVERFLOW INDICATOR FOR OUTPUT FILE
QSYSPRT
** 10 USED FOR ERROR MESSAGES
** 20 USED TO INITIALIZE COMMISSION TO
ZERO.
** 30 USED WHEN YRSEMP IS GREATER THAN OR
EQUAL TO 2
** 35 USED WHEN YRSEMP IS LESS THAN 2
** 40 USED WHEN COMSLS IS GREATER THAN
30000
** 45 USED WHEN COMSLS IS LESS THAN OR
EQUAL TO 30000
** 50 USED WHEN COMSLS IS GREATER THAN
25000
** 55 USED WHEN COMSLS IS LESS THAN OR
EQUAL TO 25000
** 60 USED WHEN YRSEMP IS GRATER THAN OR
EQUAL TO 2
** 65 USED WHEN YRSEMP IS LESS THAN 2
** 90 INDICATOR FOR HEADINGS
**
********************************************************
FMCOM2P IP
F 80 DISK
FQSYSPRT
O F
105 OF PRINTER
********************************************************
**
** RECORD
DESCRIPTION FOR INPUT FILE MCOM2P
** FIELD DESCR. DATA TYPE FIELD NAME
** SALESPERSON NUMBER 5 CHARS SLSNUM
** SALESPERSON NAME 25 CHARS SPNAME
** YEARS EMPLOYED 2 DIG(0 DEC) YRSEMP
** MONTHLY SALES 8 DIG(2 DEC) MONSLS
** SALES RETURN 7 DIG(2 DEC) SLSRET
**
********************************************************
IMCOM2P NS 01
I 1 5 SLSNUM
I 6 30 SPNAME
I 31 320YRSEMP
I 33 402MONSLS
I 41 472SLSRET
I 48 80 FILLER
********************************************************
**
** DATA
STRUCTURE
** BASSAL = BASE SALARY
** COMMIS = COMMISSION
** SALARY = TOTAL SALARY
** COMSLS = COMMISSION SALES
** NETSLS = NET SALES
** TEMSLS = TEMPORARY SALES(VAR. USED FOR
CALCULATIONS)
**
********************************************************
I#WORK DS
I 1 40BASSAL
I 5 122COMMIS
I 13 212SALARY
I 22 292COMSLS
I 30 372NETSLS
I 38
462TEMSLS
********************************************************
**
** #TOTAL COMPUTES TOTAL SALES, TOTAL SALES
RETURN
** TOTAL COMMISSION AND TOTAL AMMOUNT
DUE.
**
********************************************************
I#TOTAL DS
I 46 562TOTSLS
I 57 662TOTRET
I 67 740TOTSAL
I 75 842TOTCOM
I 85 942TOTDUE
********************************************************
C SETOF 253035
C SETOF 404550
C SETOF 556065
C 90 SETOF OF1020
C OF SETON 90
******************************************************
**
**
CALCULATIONS ARE DONE HERE BY CALLING SUBROUTINES.
**
********************************************************
C EXSR COMMSR
C EXSR BASESR
C EXSR SALSR
********************************************************
**
** COMMSR=
SUBROUTINE THAT COMPUTES THE COMMISSION
** NET SALES = MONTHLY SALES - SALES RETURN
** COMMISSION SALES= NET SALES - $2000
** IF YOU HAVE BEEN EMPLOYED 2 OR MORE
YEARS AND
** YOUR COMMISSION IS 20% ON EVERYTHING
LESS THAN
** $30000 AND 25% ON EVERYTHING OVER
$30000.
** IF YOU HAVE BEEN EMPLOYED LESS THAN TWO
YEARS
** YOUR COMMISSION IS 12% ON EVERYTHING LESS
THAN
** $25000 AND 14% ON EVERYTHING ABOVE
$25000
**
********************************************************
CSR COMMSR BEGSR
C MONSLS SUB
SLSRET NETSLS
C NETSLS COMP 0 151020
C 15
NETSLS SUB 2000
COMSLS
C 15
COMSLS COMP 0 2020
C 20 Z-ADD0 COMMIS
C YRSEMP COMP
2 303530
C 30N20
COMSLS COMP 30000 404545
C 45N20
COMSLS MULT .2 COMMIS H
C 40N20
COMSLS SUB 30000
TEMSLS
C 40N20
TEMSLS MULT .25 TEMSLS
H
C 40N20
30000 MULT .2 COMMIS H
C 40N20
TEMSLS ADD COMMIS
COMMIS
C 35N20
COMSLS COMP 25000 505555
C 55N20
COMSLS MULT .12 COMMIS
H
C 50N20
COMSLS SUB 25000
TEMSLS
C 50N20
TEMSLS MULT .14 TEMSLS
H
C 50N20
25000 MULT .12 COMMIS
H
C 50N20
COMMIS ADD TEMSLS
COMMIS
C N10 ADD COMMIS
TOTCOM
C N10 ADD MONSLS
TOTSLS
C N10 ADD SLSRET
TOTRET
C ENDSR
********************************************************
**
** BASESR=
SUBROUTINE THAT ADDS THE BASE SALARY TO BASSAL
** IF YOU HAVE BEEN EMPLOYED FOR 2 OR
MORE YEARS
** YOUR BASSAL IS $1000 IF YOU HAVE BEEN
EMPLOYED
** 1 TO TWO YEARS YOUR BASSAL IS $600 FOR
THE REST
** IT IS $0.
**
********************************************************
CSR BASESR BEGSR
C YRSEMP COMP 2 606560
C 60 Z-ADD1000 BASSAL
C 65 Z-ADD600 BASSAL
C N10 ADD BASSAL
TOTSAL
C ENDSR
********************************************************
**
** SALSR=
SUBROUTINE THAT ADDS THE COMMISSION TO THE BASE
** SALARY.
**
********************************************************
CSR SALSR BEGSR
C COMMIS ADD
BASSAL SALARY
C N10 ADD SALARY
TOTDUE
C ENDSR
********************************************************
** OUTPUT
STARTS HERE
********************************************************
OQSYSPRT
H 1
1P
O OR
OF
O 5 'DATE:'
O UDATE Y 16
O 48 'R I C H L A N D'
O 64 'N O V E
L T Y'
O 80 'C O M P
A N Y'
O 99 'PAGE'
O PAGE Z 103
O H
1 1P
O OR
OF
O 17 'AUTHOR:
JONAS WIK'
O H
105 1P
O OR
OF
O 11
'SALESPERSON'
O 46 'YEARS'
O 58 'MONTHLY'
O 68 'SALES'
O 78 'BASE'
O H
2 1P
O OR
OF
O 9 'NUMBER'
O 29
'SALESPERSON NAME'
O 48
'EMPLOYED'
O 57 'SALES'
O 69 'RETURN'
O 79 'SALARY'
O 91
'COMMISSION'
O 101 'SALARY'
********************************************************
**
** DETAIL
LINES ARE PRINTED HERE AND IF THE INDICATOR 10 HAS
** BEEN TURNED
ON THE SLSNUM AND SPNAME ARE PRINTED TOGETHER
** WITH AN
ERROR MESSAGE.
**
********************************************************
O D
2 01
O SLSNUM 8
O SPNAME 38
O N10 YRSEMP
45
O N10 49 '$'
O N10 MONSLSJ
60
O N10 61 '$'
O N10 SLSRETJ
71
O N10 73 '$'
O N10 BASSALJ
79
O N10 81 '$'
O N10 COMMISJ
93
O N10 95 '$'
O N10 SALARYJ
105
O 10 68 'ERROR IN CALCULATIONS'
O T
2 LR
O 20 'TOTAL
SALES:'
O 22 '$'
O TOTSLSJ 37
O T
2 LR
O 20 'TOTAL
RETURNS:'
O 22 '$'
O TOTRETJ 37
O T
2 LR
O 20 'TOTAL
SALARY:'
O 22 '$'
O TOTSALJ 37
O T
2 LR
O 20 'TOTAL COMMISSION:'
O 22 '$'
O TOTCOMJ 37
O T
2 LR
O 20 'TOTAL
AMT DUE:'
O 22 '$'
O TOTDUEJ 37
********************************************************
**
** T H E E N D
**
********************************************************