akshaj Beginner
Joined: 30 Dec 2002 Posts: 12 Topics: 8
|
Posted: Tue Dec 31, 2002 9:29 am Post subject: Left Justify Data in a Sequential File |
|
|
Code: |
/** REXX -- LEFT JUSTIFIES DATA USING CC/C## RANGE OR DEFAULTS **/
/* TO ENTIRE FILE; ACCEPTS COLUMNS OR USES ISPF BOUNDS */
SAVEMSG = MSG()
X = MSG("OFF")
X = ADDRESS()
SUBCOM ISPEXEC
IF RC <> 0 THEN DO
SAY "LJUST MUST BE RUN UNDER ISPF EDIT!"
SIGNAL QUIT
END
SUBCOM ISREDIT
UMODE = "ISREDIT"
ADDRESS ISPEXEC "CONTROL ERRORS RETURN"
ADDRESS ISREDIT
"MACRO (LEFT,RIGHT) NOPROCESS"
IF LEFT = '?' THEN SIGNAL DISPDOC
IF LEFT <> "" AND RIGHT = "" THEN DO
"ISREDIT (L2,RIGHT) = BOUNDS"
END
"PROCESS RANGE C"
IF RC > 0 THEN DO
"(TOP) = LINENUM .ZFIRST"
"(BOT) = LINENUM .ZLAST"
END
ELSE DO
"(TOP) = LINENUM .ZFRANGE"
"(BOT) = LINENUM .ZLRANGE"
END
"ISREDIT("LB","RB") = BOUNDS"
IF LEFT <> "" THEN LB = LEFT
IF RIGHT <> "" THEN RB = RIGHT
DO II = TOP TO BOT BY 1
"ISREDIT (RECORD) = LINE &II"
DO JJ = LB TO RB BY 1 WHILE(SUBSTR(RECORD,JJ,1) = ' ')
END
IF LB < JJ THEN DO
RECORD = SUBSTR(RECORD,1,LB-1) || SUBSTR(RECORD,JJ,RB-JJ+1),
|| SUBSTR(RECORD,LB,JJ-LB) || SUBSTR(RECORD,RB+1)
"ISREDIT LINE &II = &STR(RECORD)"
END
END
QUIT:
ADDRESS ISPEXEC
X = MSG(SAVEMSG)
ADDRESS ISREDIT "LOCATE" TOP
EXIT(1)
DISPDOC:
ADDRESS TSO "CLEAR"
SAY "LJUST - LEFT JUSTIFY TEXT W/IN BOUNDS "
SAY
SAY " FORMAT "
SAY
SAY " LJUST ( LEFT-COLUMN RIGHT-COLUMN ) "
SAY
SAY " WILL CAUSE THE MARKED (VIA C/CC/C##) RANGE OF "
SAY " LINES TO BE LEFT JUSTIFIED WITHIN THE BOUNDS THEN "
SAY " IN FORCE. IF NO RANGE IS SPECIFIED, THE ENTIRE "
SAY " FILE IS PROCESSED. THE FIRST AND THE LAST "
SAY " NON-BLANK CHARACTERS WITHIN THE BOUNDS DETERMINE "
SAY " THE SIZE OF THE DATA TO BE LEFT JUSTIFIED. "
SAY " SPECIFYING A LEFT COLUMN AND LEFT COLUMN WILL "
SAY " CAUSE ONLY THE DATA IN THOSE COLUMNS TO BE "
SAY " JUSTIFIED. "
SAY
SAY " EXAMPLE "
SAY
SAY " LJUST 1 50 "
SAY " WILL CAUSE THE TEST IN COLUMNS 1 THRU 50 TO BE "
SAY " SHIFTED LEFT SO THAT THE FIRST NON BLANK IN THOSE "
SAY " COLUMNS WILL BE IN POSITION 1. "
SAY
EXIT(1)
|
**
Hope this would be really helpful |
|