Cees Post,
I am not clear on few things on ur requirement,
1) P1 1 6 N
Value of field is 02236A ---> How can a variable declared (N ->Numeric) has a alpha numeric value
2) As per ur given data P1 = 02236A
and what are you tryinG to achieve by doing this
N1 = (P1 * -1) ===> you mean N1 = 02236A * (-1) ?????
Well i am not sure what is your requirement correctrly.
But i assumed few things and coded a sample program which will give you what you have asked for in the outputfile, please find below
Code: Select all
PARM ABEXIT(SNAP) PRESIZE 1024
*
FILE INPFILE FB (6 0)
INPFILE-FIELD 1 6 A ---------------------> I/P FILE HAS A VALUE OF 02236A
*
FILE OUTFILE FB (7 0)
WS-OUTFILE-REC 1 7 A ---------------------> Expected O/P FILE SHOULD VALUE OF -022361
*
WS-INPFILE-FIELD 1 6 A
WS-INP-VALUE 1 5 N
WS-INP-SIGN 6 1 A
*
WS-INP-VALUE-A 1 6 N 0
*
WS-OUTFILE-FIELD 1 7 A
WS-OUT-SIGN 1 1 A
WS-OUT-VALUE 2 6 N
*
**********************************************************************
* PROCESSING *
**********************************************************************
*
JOB INPUT (INPFILE)
*
WS-INPFILE-FIELD = INPFILE-FIELD
WS-INP-VALUE-A = (WS-INP-VALUE * (-10)) - 1
*
IF WS-INP-VALUE-A LT 0
DISPLAY ' LESS THAN ZERO '
WS-OUT-SIGN = '-'
WS-OUT-VALUE = (WS-INP-VALUE * 10) + 1
WS-OUTFILE-REC = WS-OUTFILE-FIELD
PUT OUTFILE
ELSE
DISPLAY ' GREATER THAN ZERO '
WS-OUT-SIGN = '+'
WS-OUT-VALUE = (WS-INP-VALUE * 10) + 1
WS-OUTFILE-REC = WS-OUTFILE-FIELD
PUT OUTFILE
END-IF
NOTE : IN THE ABVOE CODE I ASSUME THE VALUE OF A = -1 AND DID THE CODING, IF YOUR REQUIREMNT IN THAT I/P FILE WILL HAVE HEX VALUES FROM 0 -9 , A,B,C,D,E,F,G,H....YOU NEED TO VALIDATE THOSE
AND MOVE THE CORESPONDING VALUES INSTEAD OF -/+ 1 AND -/+ 10...ACCORDINGLY.
P.S = I AM NOT 100% CLEAR REG UR REQUIREMENT, I GUESS I TRIED TO PUT THE CODE THE WAY YOU HAVE TRIED , IF YOU COME UP WITH CLEAR REQUIREMETNS REG THE FILE LAYOUT AND WHAT KIND OF VARAIBLE/DATA COMES FROM I/P FILE MAY BE YOU DONT NEED THE ENTIRE CODE ..A TRICKY DECLARATION OF THE VARAIBLE CAN DO ..THE WORK ...
Thanks,
Veera.