I am posting a couple of commands that would help you move these columns as well. It will move the columns one at a time, however. The commands are SNIP and GLUE. These are really nice if you put them behind a PFKey. (Think CUT and PASTE, but with columns instead of the entire line. I had a friend that said he thought I was sniffing glue when I came up with this, but see if you like them.)
Quick tutorial:
Put the SNIP command behind your PF4 key. Put the GLUE command behind your PF16 key (Shift + PF4). Place your cursor on a character within your view or edit session. This is the upper leftmost corner of the block of data you want to SNIP. Press the PF4 key. Place your cursor in the lower rightmost corner of the data you want to SNIP. Press the PF4 key again. You will see the cursor re-position itself in the upper lefthand corner. This indicates you have completed "snipping" your data.
Now place your cursor where you want to "glue" your data. Press the Shift + PF4. The data which you snipped will now appear where you asked the data to be glued. It also has been removed from your profile.
SNIP command:
Code:
/***************************** REXX ***********************************/
/* */
/* COMMAND NAME: SNIP <MOVE> */
/* WRITTEN BY: JIM HAIRE */
/* */
/* FORMAT: */
/* THINK OF THIS COMMAND AS A SCISSORS. */
/* */
/* ENTER "SNIP" ON THE COMMAND LINE. */
/* PLACE THE CURSOR AT THE TOP LEFTHAND CORNER OF THE AREA */
/* WHERE YOU WANT TO BEGIN CUTTING CODE. PRESS <ENTER>. */
/* */
/* ENTER "SNIP" ON THE COMMAND LINE AGAIN. */
/* PLACE THE CURSOR AT THE BOTTOM RIGHTHAND CORNER OF THE */
/* AREA YOU WANT TO CUT. PRESS <ENTER>. */
/* */
/* THE AREA THAT YOU HAVE INDICATED IS A SQUARE PIECE OF */
/* CODE WHICH WILL BE PLACED IN THE PROFILE AND CAN BE */
/* INSERTED SOMEWHERE USING THE "GLUE" COMMAND. */
/* */
/* */
/* ARGUMENT LIST: */
/* <MOVE> - IF YOU TYPE "M" OR "MOVE" AFTER THE "SNIP" */
/* COMMAND, THE AREA THAT YOU "SNIP" WILL BE */
/* REMOVED FROM THE AREA YOU INDICATED. */
/* */
/* */
/* DESCRIPTION: */
/* THIS EDIT MACRO WILL ALLOW YOU TO TAKE PORTIONS OF DIFFERENT */
/* LINES IN A MEMBER BEING EDITED. YOU WILL THEN BE ABLE TO */
/* ATTACH THOSE LINES TO ANY OTHER EDIT MEMBER. */
/* */
/**********************************************************************/
/*--------------------------------------------------------------------*/
/* THIS FIRST COMMAND DETERMINES WHETHER WE ARE DOING THE */
/* FIRST OR SECOND SNIP. WE DETERMINE THIS BY SEEING IF WE HAVE */
/* A CURRENT VALUE FOR THE SNIP SWITCH. */
/*--------------------------------------------------------------------*/
ADDRESS ISPEXEC
"ISREDIT MACRO (MOVESW)"
"VGET (SNIPSW) PROFILE"
IF RC = 0 THEN
SELECT
WHEN SNIPSW = 'S' THEN CALL SNIP_END
WHEN SNIPSW = 'E' THEN CALL SNIP_START
OTHERWISE
NOP
END
ELSE
DO
SNIPSW = 'S'
"VPUT (SNIPSW) PROFILE"
CALL SNIP_START
END
IF SNIPSW = 'E' THEN
DO
CALL LOAD_SNIP_LINES_TO_PROFILE
CALL ERASE_SNIPPED_LINES
CALL INITIALIZE_SNIP_POSITIONS
END
"ISREDIT CURSOR = &SCOL &SROW"
EXIT
/**/
/**/
/**/
/**/
/**/
SNIP_START:
/*--------------------------------------------------------------------*/
/* THIS PARAGRAPH DETERMINES THE BEGINNING COLUMN AND ROW WHERE */
/* THE SNIP WILL OCCUR. IF BOTH THE COLUMN AND THE ROW ARE VALID, */
/* THE SNIP SWITCH WILL BE SET TO 'S'. */
/*--------------------------------------------------------------------*/
ADDRESS ISPEXEC
"ISREDIT (SCOL,SROW) = CURSOR"
IF SCOL > 0 & SROW > 0 THEN
DO
SNIPSW = 'S'
"VPUT (SNIPSW SCOL SROW) PROFILE"
END
ELSE
DO
ADDRESS ISPEXEC
ZEDSMSG = 'PF1 FOR ERROR'
ZEDLMSG = 'CURSOR MUST BE PLACED SOMEWHERE ON THE FILE'
'SETMSG MSG(ISRZ001)'
EXIT 12
END
RETURN
/**/
/**/
/**/
/**/
/**/
SNIP_END:
/*--------------------------------------------------------------------*/
/* THIS PARAGRAPH DETERMINES THE ENDING COLUMN AND ROW WHERE */
/* THE SNIP WILL OCCUR. IF BOTH THE COLUMN AND THE ROW ARE VALID, */
/* THE SNIP SWITCH WILL BE SET TO 'E'. */
/*--------------------------------------------------------------------*/
ADDRESS ISPEXEC
"ISREDIT (ECOL,EROW) = CURSOR"
IF ECOL > 0 & EROW > 0 THEN
DO
SNIPSW = 'E'
"VPUT (SNIPSW ECOL EROW) PROFILE"
END
ELSE
DO
ADDRESS ISPEXEC
ZEDSMSG = 'PF1 FOR ERROR'
ZEDLMSG = 'CURSOR MUST BE PLACED SOMEWHERE ON THE FILE'
'SETMSG MSG(ISRZ001)'
EXIT 12
END
RETURN
/**/
/**/
/**/
/**/
/**/
LOAD_SNIP_LINES_TO_PROFILE:
/*------------------------------------------------------------------*/
/* THE LINES THAT YOU HAVE CHOSEN TO SNIP ARE NOW STORED IN */
/* THE PROFILE ALONG WITH THE STARTING AND ENDING POSITIONS */
/* OF THE LINE. */
/*------------------------------------------------------------------*/
ADDRESS ISPEXEC
"VGET (LINNBR) PROFILE"
IF RC = 0 THEN NOP
ELSE
LINNBR = 0
I = 0
STARTCOL = SCOL
ENDCOL = ECOL
DO I = STARTCOL TO ENDCOL
CALL DETERMINE_STRING_AND_LENGTH
END
RETURN
/**/
/**/
/**/
/**/
/**/
DETERMINE_SNIP_ORDER:
/*------------------------------------------------------------------*/
/* IT IS POSSIBLE THAT THE LATTER OF THE 2 SNIP COMMANDS COULD */
/* HAVE OCCURRED CLOSER TO THE TOP OF THE FILE. IN ORDER TO */
/* MAKE THE PROGRAMMING THE SAME, WE WILL SWITCH THE VALUES OF */
/* THE CURSOR LOCATIONS SO THE LATTER SNIP WILL APPEAR AS IF IT */
/* WERE THE FIRST SNIP. */
/*------------------------------------------------------------------*/
IF SCOL > ECOL THEN
DO
HOLDCOL = SCOL /* MOVE THE START COLUMN TO HOLD */
HOLDROW = SROW /* MOVE THE START ROW TO HOLD */
SCOL = ECOL /* OVERLAY START COLUMN WITH END */
SROW = EROW /* OVERLAY START ROW WITH END */
ECOL = HOLDCOL /* OVERLAY END COLUMN WITH HOLD */
EROW = HOLDROW /* OVERLAY END ROW WITH HOLD */
END
IF SROW > EROW THEN
DO
HOLDROW = SROW /* MOVE THE START ROW TO HOLD */
SROW = EROW /* OVERLAY START ROW WITH END */
EROW = HOLDROW /* OVERLAY END ROW WITH HOLD */
END
STRLGTH = (EROW - SROW) + 1
RETURN
/**/
/**/
/**/
/**/
/**/
DETERMINE_STRING_AND_LENGTH:
/*------------------------------------------------------------------*/
/* THIS MODULE WILL REPOSITION THE CURSOR ON EACH LINE BEING */
/* SNIPPED AND WILL SNIP OUT THE SECTION OF CODE SELECTED BY */
/* THE USER AND PLACE IT ON THE PROFILE. */
/*------------------------------------------------------------------*/
"ISREDIT CURSOR = &SCOL"
"ISREDIT (LINEDATA) = LINE &I"
RETURN
/**/
/**/
/**/
/**/
/**/
INITIALIZE_SNIP_POSITIONS:
/*------------------------------------------------------------------*/
/* THIS MODULE WILL INITIALIZE VALUES THAT NEED TO BE RESET */
/* PRIOR TO THE NEXT SNIP. IT WILL ALSO STORE THE LARGEST */
/* LINE NUMBER UP TO THIS POINT ON THE PROFILE. */
/*------------------------------------------------------------------*/
"VERASE (SCOL SROW ECOL EROW) PROFILE"
"VPUT (LINNBR) PROFILE"
RETURN
/**/
/**/
/**/
/**/
/**/
ERASE_SNIPPED_LINES:
/*------------------------------------------------------------------*/
/* THIS PARAGRAPH WILL ERASE THE STRINGS THAT WE SNIPPED BEFORE */
/* LEAVING THE PROGRAM. */
/*------------------------------------------------------------------*/
UPPER MOVESW
IF MOVESW = 'MOVE' | MOVESW = 'M' THEN
DO P = SCOL TO ECOL
CALL CHANGE_STRINGS_TO_SPACES
END
RETURN
/**/
/**/
/**/
/**/
/**/
CHANGE_STRINGS_TO_SPACES:
/*------------------------------------------------------------------*/
/* THIS PARAGRAPH IS PERFORMED IF A "MOVE" IS REQUESTED. IT */
/* WILL SPACE OUT THE AREA THAT HAS BEEN SNIPPED BEFORE BEING */
/* GLUED. */
/*------------------------------------------------------------------*/
"ISREDIT (OLDDATA) = LINE &P"
OLDSTRG = SUBSTR(OLDDATA,SROW,STRLGTH)
NEWSTRG = COPIES(' ',STRLGTH)
NEWSTRG = "'"NEWSTRG"'"
"ISREDIT CURSOR = &P &SROW"
"ISREDIT CHANGE '&OLDSTRG' &NEWSTRG"
RETURN
GLUE Command:
Code:
/***************************** REXX ***********************************/
/* */
/* COMMAND NAME: GLUE */
/* WRITTEN BY: JIM HAIRE */
/* */
/* FORMAT: */
/* TYPE "GLUE <KEEP>" ON COMMAND LINE */
/* */
/* THEN PLACE THE CURSOR SOMEWHERE WITHIN YOUR EDIT SESSION */
/* WHERE YOU WISH TO PUT THE CONTENTS OF THE PROFILE. ANY */
/* LINES WHICH YOU HAVE PLACED IN THE PROFILE USING THE */
/* "SNIP" COMMAND WILL BE GLUED TO THE SPOT MARKED BY THE */
/* CURSOR. "BEFORE" AND "AFTER" LINE COMMANDS CAN BE USED */
/* TO INSERT THE "SNIPPED" LINES INTO THE PROPER POSITION. */
/* IF NO LINE COMMANDS ARE USED, THE GLUE COMMAND WILL */
/* OVERLAY THE AREA WITH THE DATA FROM THE PROFILE. */
/* */
/* */
/* ARGUMENT LIST: */
/* <KEEP> - IF YOU TYPE "K" OR "KEEP" AFTER THE "GLUE" */
/* COMMAND, THE LINES THAT YOU GLUE WILL REMAIN */
/* IN THE PROFILE. OTHERWISE, THEY WILL BE ERASED */
/* FROM THE PROFILE AFTER THEY HAVE BEEN "GLUED". */
/* */
/* */
/* DESCRIPTION: */
/* THIS EDIT MACRO WILL ALLOW YOU TO TAKE THE PIECES OF CODE */
/* THAT HAVE BEEN CUT OUT WITH THE "SNIP" COMMAND AND ATTACH */
/* THEM TO ANOTHER FILE OR PROGRAM. */
/* */
/* */
/**********************************************************************/
/*--------------------------------------------------------------------*/
/* THIS PARAGRAPH WILL CHECK THE SCREEN FOR LINE COMMANDS AND THE */
/* PROFILE FOR LINES TO BE GLUED. */
/*--------------------------------------------------------------------*/
ADDRESS ISPEXEC
"ISREDIT MACRO NOPROCESS (KEEPSW)"
"ISREDIT (GLUESTAT) = USER_STATE"
/*--------------------------------------------------------------------*/
/* GET THE LINE NUMBER FROM THE PROFILE. THIS WILL TELL YOU HOW */
/* MANY LINES WE ARE ATTEMPTING TO GLUE. */
/*--------------------------------------------------------------------*/
"VGET (LINNBR) PROFILE"
IF LINNBR <= 0 THEN
DO
"ISREDIT (GLUECOL,GLUEROW) = CURSOR"
ADDRESS ISPEXEC
ZEDSMSG = 'NO LINES IN PROFILE'
ZEDLMSG = '"SNIP" COMMAND MUST CUT LINES TO PROFILE '
ZEDLMSG = ZEDLMSG || 'BEFORE USING "GLUE" COMMAND.'
'SETMSG MSG(ISRZ001)'
"ISREDIT CURSOR = &GLUECOL &GLUEROW"
EXIT 12
END
CALL DETERMINE_CURRENT_MEMBER
/*--------------------------------------------------------------------*/
/* GET THE NUMBER OF GLUE POINTS THAT HAVE BEEN SET IN THE */
/* PROFILE. GLUE POINTS ESTABLISH POSITIONS WITHIN YOUR EDIT */
/* MEMBER WHERE YOU WISH TO APPEND LINES. */
/*--------------------------------------------------------------------*/
"VGET (SETPOINT) PROFILE"
IF SETPOINT <= 0 THEN
DO
"ISREDIT PROCESS RANGE A B"
"ISREDIT (CMDLINE) = LINENUM .ZLRANGE"
"ISREDIT (LINECMD) = RANGE_CMD"
CALL CHECK_CURSOR_POSITION
CALL GLUE_THE_LINES
END
ELSE
DO
"ISREDIT PROCESS RANGE A B"
"ISREDIT (LINECMD) = RANGE_CMD"
IF LINECMD = ' ' THEN
DO
DO GP = 1 TO SETPOINT
DO GP = 1 TO SETPOINT
"VGET (SETL"GP" SETC"GP") PROFILE"
INTERPRET "GLUECOL = SETL"GP
INTERPRET "GLUEROW = SETC"GP
"ISREDIT (CMDLINE) = LINENUM .ZLRANGE"
IF GLUECOL <= CMDLINE THEN CURSOR_PAST_EOF = 'N'
"ISREDIT CURSOR = &GLUECOL &GLUEROW"
CALL CHECK_FOR_TRUNCATION
CALL GLUE_MULTIPLE_LINES
END
ORIGCOL = SETL1
ORIGROW = SETC1
END
ELSE
DO
ADDRESS ISPEXEC
ZEDSMSG = 'PF1 FOR ERROR'
ZEDLMSG = 'LINE COMMANDS CANNOT BE USED WHEN USING GLUE '
ZEDLMSG = ZEDLMSG || 'POINTS. STRANGE RESULTS MAY OCCUR.'
'SETMSG MSG(ISRZ001)'
"ISREDIT CURSOR = .ZLRANGE"
EXIT 12
END
END
CALL ERASE_PROFILE
SKIPIT:
"ISREDIT USER_STATE = (GLUESTAT)"
CALL REPOSITION_CURSOR
EXIT
/**/
/**/
/**/
/**/
/**/
DETERMINE_CURRENT_MEMBER:
/*--------------------------------------------------------------------*/
/* THIS PARAGRAPH DETERMINES THE NAME OF THE CURRENT FILE AND */
/* WILL RETRIEVE INFORMATION ABOUT THE LENGTH OF THE RECORDS ON */
/* THE FILE SO WE CAN TELL IF WE ARE TRUNCATING LINES OR NOT. */
/*--------------------------------------------------------------------*/
ADDRESS ISPEXEC
"ISREDIT (DSNAME) = DATASET"
"ISREDIT (MEMNAME) = MEMBER"
IF MEMNAME = ' ' THEN
DSET = DSNAME
ELSE
DSET = DSNAME"("MEMNAME")"
X = LISTDSI("'"DSET"'")
RETURN
/**/
/**/
/**/
/**/
/**/
CHECK_CURSOR_POSITION:
/*--------------------------------------------------------------------*/
/* THIS PARAGRAPH DETERMINES IF THE CURSOR IS IN A VALID POSITION */
/* TO INSERT RECORDS. */
/*--------------------------------------------------------------------*/
ADDRESS ISPEXEC
"ISREDIT (GLUECOL,GLUEROW) = CURSOR"
IF GLUECOL > 0 & GLUEROW > 0 THEN
DO
ORIGCOL = GLUECOL
ORIGROW = GLUEROW
END
ELSE
DO
ADDRESS ISPEXEC
ZEDSMSG = 'PF1 FOR ERROR'
ZEDLMSG = 'PLACE CURSOR SOMEWHERE WITHIN THE MEMBER YOU'
ZEDLMSG = ZEDLMSG || ' ARE EDITING.'
'SETMSG MSG(ISRZ001)'
EXIT 12
END
CALL CHECK_FOR_TRUNCATION
RETURN
/**/
/**/
/**/
/**/
/**/
CHECK_FOR_TRUNCATION:
/*------------------------------------------------------------------*/
/* THIS PARAGRAPH WILL CHECK THAT NONE OF THE LINES WILL BE */
/* TRUNCATED IF PLACED ON THE FILE WHERE THE USER HAS PUT THE */
/* CURSOR. SINCE THE LINES ARE GOING TO START FROM THE CURSOR */
/* POSITION IN ALL CASES, WE CAN DETERMINE TRUNCATION BY ADDING */
/* EACH LINE'S LENGTH TO THE CURSOR POSITION. */
/* IF THIS CALCULATION IS GREATER THAN THE LOGICAL RECORD */
/* LENGTH, AN ERROR WINDOW WILL APPEAR. */
/* */
/* THE DATASET BEING EDITED IS ALSO CHECKED TO SEE IF IT IS */
/* IN NUMBER MODE, THAT IS, TO SEE IF THE LAST EIGHT CHARACTERS */
/* OF THE DATASET CONTAIN LINE NUMBERS. IF THEY DO, THE */
/* LENGTH OF THE DATASET WILL BE INTERPRETED TO BE SHORTER BY */
/* EIGHT CHARACTERS. */
/*------------------------------------------------------------------*/
DROP T
DO T = 1 TO LINNBR
"VGET (SNIP"T") PROFILE"
INTERPRET "PROFILE_STRING = SNIP"T
STRLGTH = LENGTH(PROFILE_STRING)
ANYCHAR = COPIES('=',STRLGTH)
"ISREDIT (NUMMODE,NUMSTATS) = NUMBER"
IF SYSLRECL <= ' ' THEN
REAL_SYSLRECL = 80
ELSE
IF NUMMODE = 'ON' THEN
REAL_SYSLRECL = SYSLRECL - 8
ELSE
REAL_SYSLRECL = SYSLRECL
LCHARPOS = GLUEROW + STRLGTH - 1
IF LCHARPOS > REAL_SYSLRECL THEN
DO
ADDRESS ISPEXEC
ZEDSMSG = 'PF1 FOR ERROR'
ZEDLMSG = 'LINES EXTEND PAST END OF RECORD CAUSING TRUNCATION'
'SETMSG MSG(ISRZ001)'
"ISREDIT CURSOR = &GLUECOL &GLUEROW"
EXIT 12
END
END
RETURN
/**/
/**/
/**/
/**/
/**/
GLUE_THE_LINES:
/*------------------------------------------------------------------*/
/* THIS PARAGRAPH WILL ATTACH THE LINES TO EVERY POSITION YOU */
/* HAVE INDICATED YOU WANT THE SNIPPED LINES TO BE PLACED. */
/*------------------------------------------------------------------*/
"ISREDIT (CURRLINE) = LINENUM .ZLRANGE"
DROP P
DO P = 1 TO LINNBR
INTERPRET "NEWSTRG = SNIP"P
CALL DETERMINE_QUOTE_TO_USE
SELECT
WHEN LINECMD = 'A' THEN
DO
"ISREDIT LINE_AFTER &CURRLINE = <&GLUEROW,&QTE&NEWSTRG&QTE>"
CALL PUT_BACK_AMPERSANDS
CURRLINE = CURRLINE + 1
END
WHEN LINECMD = 'B' THEN
DO
"ISREDIT LINE_BEFORE &CURRLINE = &GLUEROW,&QTE&NEWSTRG&QTE>"
CALL PUT_BACK_AMPERSANDS
CURRLINE = CURRLINE + 1
END
WHEN LINECMD = ' ' THEN
IF CURSOR_PAST_EOF = 'Y' THEN
DO
"ISREDIT LINE_AFTER &CURRLINE = <&GLUEROW,&QTE&NEWSTRG&QTE>"
CALL PUT_BACK_AMPERSANDS
CURRLINE = CURRLINE + 1
END
ELSE
CALL CHANGE_THE_FILE
OTHERWISE
ADDRESS ISPEXEC
ZEDSMSG = 'PF1 FOR ERROR'
ZEDLMSG = 'ONLY USE (B) BEFORE AND (A) AFTER COMMANDS WHEN '
ZEDLMSG = ZEDLMSG || 'USING "GLUE" COMMAND.'
'SETMSG MSG(ISRZ001)'
"ISREDIT CURSOR = .ZLRANGE"
EXIT 12
END
END
RETURN
/**/
/**/
/**/
/**/
/**/
GLUE_MULTIPLE_LINES:
/*------------------------------------------------------------------*/
/* THIS PARAGRAPH WILL BE PERFORMED WHEN YOU USE THE GLUE */
/* POINTS FEATURE. IT WILL PREVENT LINE COMMANDS FROM BEING */
/* USED. */
/*------------------------------------------------------------------*/
"ISREDIT (CURRLINE) = LINENUM &GLUECOL"
DROP P
DO P = 1 TO LINNBR
INTERPRET "NEWSTRG = SNIP"P
CALL DETERMINE_QUOTE_TO_USE
IF CURSOR_PAST_EOF = 'Y' THEN
DO
"ISREDIT LINE_AFTER &CURRLINE = <&GLUEROW,&QTE&NEWSTRG&QTE>"
CALL PUT_BACK_AMPERSANDS
CURRLINE = CURRLINE + 1
END
ELSE
CALL CHANGE_THE_FILE
END
RETURN
/**/
/**/
/**/
/**/
/**/
CHANGE_THE_FILE:
/*------------------------------------------------------------------*/
/* THIS PARAGRAPH WILL DO A CHANGE AGAINST THE FILE SO THAT */
/* THE LINES THAT HAVE BEEN SNIPPED WILL NOW BECOME PART OF */
/* THE FILE YOU ARE EDITING. */
/*------------------------------------------------------------------*/
"ISREDIT (CURRDATA) = LINE &GLUECOL"
GLUECOL = GLUECOL + 1
IF GLUECOL > CMDLINE THEN CURSOR_PAST_EOF = 'Y'
ELSE
DO
CURSOR_PAST_EOF = 'N'
"ISREDIT CURSOR = &GLUECOL &GLUEROW"
END
RETURN
/**/
/**/
/**/
/**/
/**/
DETERMINE_QUOTE_TO_USE:
/*--------------------------------------------------------------------*/
/*- -*/
/*- BECAUSE THE STRING THAT WE ARE CHANGING HAS TO BE ENCLOSED -*/
/*- IN QUOTES IN THE CHANGE COMMAND, THE REXX LANGUAGE BECOMES -*/
/*- CONFUSED IF THERE ARE QUOTES IN THE STRING. THIS PARAGRAPH -*/
/*- ATTEMPTS TO BUILD THE STRING IN THE CORRECT WAY. -*/
/*- -*/
/*--------------------------------------------------------------------*/
QPOS = 0 | DQPOS = 0
QPOS = POS("'",NEWSTRG)
DQPOS = POS('"',NEWSTRG)
IF QPOS = 0 & DQPOS = 0 THEN
QTE = "'"
ELSE
IF QPOS > DQPOS THEN
QTE = '"'
ELSE
QTE = "'"
NEWSTRG = TRANSLATE(NEWSTRG,'`','&')
RETURN
/**/
/**/
/**/
/**/
/**/
GET_RID_OF_AMPERSANDS:
/*--------------------------------------------------------------------*/
/*- -*/
/*- THIS PARAGRAPH CHANGE THE AMPERSANDS IN THE STRING TO A -*/
/*- SELDOM USED CHARACTER SO THE STRING CAN BE CHANGED. THIS -*/
/*- IS BECAUSE AMPERSANDS ARE INTERPRETED AS SUBSTITUTION -*/
/*- VARIABLES IN EDIT MACROS. -*/
/*- -*/
/*--------------------------------------------------------------------*/
ADDRESS ISPEXEC
"ISREDIT CURSOR = &GLUECOL &GLUEROW"
"ISREDIT CHANGE '&' '`' ALL"
"ISREDIT CURSOR = &GLUECOL &GLUEROW"
"ISREDIT CHANGE P'"ANYCHAR"' &QTE&NEWSTRG&QTE"
RETURN
/**/
/**/
/**/
/**/
/**/
PUT_BACK_AMPERSANDS:
/*--------------------------------------------------------------------*/
/*- -*/
/*- THIS PARAGRAPH WILL PUT BACK THE AMPERSANDS SO THE STRING -*/
/*- WILL APPEAR IN ITS ORIGINAL STATE. -*/
/*- -*/
/*--------------------------------------------------------------------
ADDRESS ISPEXEC
"ISREDIT CURSOR = &GLUECOL &GLUEROW"
"ISREDIT CHANGE '`' '&' ALL"
RETURN
/**/
/**/
/**/
/**/
/**/
ERASE_PROFILE:
/*------------------------------------------------------------------*/
/* THIS PARAGRAPH WILL ERASE THE PROFILE UNLESS THE USER HAS */
/* REQUESTED THAT WE KEEP THE PROFILE. */
/*------------------------------------------------------------------*/
UPPER KEEPSW
IF KEEPSW = 'KEEP' | KEEPSW = 'K' THEN NOP
ELSE
DO
"VERASE (SNIPSW MOVESW) PROFILE"
DO J = 1 TO LINNBR
"VERASE (SNIP"J") PROFILE"
END
"VERASE (LINNBR) PROFILE"
END
IF SETPOINT > 0 THEN
DO J2 = 1 TO SETPOINT
"VERASE (SETL"J2" SETC"J2") PROFILE"
END
ELSE
NOP
"VERASE (SETPOINT) PROFILE"
RETURN
/**/
/**/
/**/
/**/
/**/
REPOSITION_CURSOR:
/*------------------------------------------------------------------*/
/* THIS PARAGRAPH REPOSITION THE CURSOR TO ITS ORIGINAL */
/* POSITION. */
/*------------------------------------------------------------------*/
"ISREDIT CURSOR = &ORIGCOL &ORIGROW"
All times are GMT - 5 Hours Goto page Previous1, 2
Page 2 of 2
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum