home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 13
/
AACD13.ISO
/
AACD
/
System
/
EASys
/
EASys!_update_47x_to_481
/
c
/
RemoteEd.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
2000-04-21
|
9KB
|
438 lines
/*
EASys! System © TNE) 1998
RemoteEd.rexx
Insert, replace, append, prepend, extract text parts from,to ASCII arg
Date: 08/99
Author: Thomas Neidhardt (TNE), Deutschland, Erlangen
InterNet: thomas.neidhardt@fen-net.de
Needs: The EASys! Configuration Environment.
Referenced by: ${RefTable/Text-RemoteEd}
*/
PARSE ARG AllArguments
CALL ParseArgs
CALL Init
IF (arg.1='' | arg.1='h' | arg.1='help') THEN CALL Help
IF (arg.1='appendtext') THEN CALL AppendText(arg.2,arg.3)
IF (arg.1='prependtext') THEN CALL PrependText(arg.2,arg.3)
IF (arg.1='replacestring') THEN CALL ReplaceString(arg.2,arg.3,arg.4)
IF (arg.1='inserttext') THEN CALL InsertText(arg.2,arg.3,arg.4)
IF (arg.1='replacetext') THEN CALL ReplaceText(arg.2,arg.3,arg.4,arg.5)
IF (arg.1='movetext') THEN CALL MoveText(arg.2,arg.3,arg.4,arg.5)
CALL ExitMe
/* -------------------------- */
AppendText:
PARSE ARG modifyFile,appendFile
IF (appendFile='') THEN CALL Help
tmpFile=modifyFile'_t'
IF (~EXISTS(modifyFile) | ~EXISTS(appendFile)) THEN RETURN
IF EXISTS(tmpFile) THEN ADDRESS COMMAND 'delete "'tmpFile'" FORCE QUIET'
ADDRESS COMMAND 'join "'modifyFile'" "'appendFile'" TO "'tmpFile'"'
CALL BackupFile(modifyFile)
CALL MakeModifiedFile
RETURN
/* -------------------------- */
PrependText:
PARSE ARG preFile,modifyFile
IF (modifyFile='') THEN CALL Help
tmpFile=modifyFile'_t'
IF (~EXISTS(preFile) | ~EXISTS(modifyFile)) THEN RETURN
IF EXISTS(tmpFile) THEN ADDRESS COMMAND 'delete "'tmpFile'" FORCE QUIET'
ADDRESS COMMAND 'join "'preFile'" "'modifyFile'" TO "'tmpFile'"'
CALL BackupFile(modifyFile)
CALL MakeModifiedFile
RETURN
/* -------------------------- */
ReplaceString:
PARSE ARG modifyFile,string,newstring
IF (modifyFile='') THEN CALL Help
CALL BackupFile(modifyFile)
ADDRESS COMMAND 'Install_C:ReplaceStrings "'modifyFile'" "'string'" "'newstring'"'
RETURN
/* -------------------------- */
InsertText:
PARSE ARG insertFile,StartString,modifyFile
IF (modifyFile='') THEN CALL Help
CALL Prepare
tmpFile='T:SrcFile_'ProcessNumber
IF StartString='sTaRt' THEN
DO
ADDRESS COMMAND 'JOIN "'modifyFile'" "'insertFile'" TO 'tmpFile
found=1
END
ELSE
DO
IF ~Open(fModifyfile,modifyFile,'R') THEN CALL Err_ShowMessage(modifyFile)
IF ~Open(fInsertFile,insertFile,'R') THEN CALL Err_ShowMessage(insertFile)
IF ~Open(ftmpFile,tmpFile,'W') THEN CALL Err_ShowMessage(tmpFile)
DO FOREVER
Line=ReadLn(fModifyfile)
IF EOF(fModifyfile) THEN LEAVE
IF found=1 | POS(UPPER(StartString),UPPER(Line))=0 THEN
r=WriteLn(ftmpFile,Line) /* keep lines until found StartString and after inserting */
ELSE
DO
found=1
DO FOREVER /* write lines of InsertFile */
newLine=ReadLN(fInsertFile)
IF EOF(fInsertFile) THEN LEAVE
ELSE r=WriteLn(ftmpFile,newLine)
END
r=WriteLn(ftmpFile,Line) /* and write the line after the inserted lines */
END
END
r=Close(fModifyfile)
r=Close(fInsertFile)
r=Close(ftmpFile)
END
IF found=1 THEN
DO
CALL BackupFile(modifyFile)
CALL MakeModifiedFile
END
RETURN
/* -------------------------- */
ReplaceText:
PARSE ARG replaceFile,StartString,EndString,modifyFile
IF (modifyFile='') THEN CALL Help
CALL Prepare
tmpFile='T:SrcFile_'ProcessNumber
IF ~Open(fModifyfile,modifyFile,'R') THEN CALL Err_ShowMessage(modifyFile)
IF ~Open(freplaceFile,replaceFile,'R') THEN CALL Err_ShowMessage(replaceFile)
IF ~Open(ftmpFile,tmpFile,'W') THEN CALL Err_ShowMessage(tmpFile)
DO FOREVER /* read and put all lines until StartString */
Line=ReadLn(fModifyfile)
IF EOF(fModifyfile) THEN LEAVE
IF POS(uStartString,UPPER(Line))=0 & ExcludeStart=0 & ~(StartString='sTaRt') THEN
r=WriteLn(ftmpFile,Line)
ELSE
DO
found=1
LEAVE
END
END
IF found=1 THEN
DO
IF ExcludeStart=1 THEN
r=WriteLn(ftmpFile,Line) /* write first line to file, do not replace it */
DO FOREVER /* write the replacing lines */
replaceLine=ReadLN(fReplaceFile)
IF EOF(fReplaceFile) THEN LEAVE
ELSE r=WriteLn(ftmpFile,replaceLine)
END
DO FOREVER /* scan for EndString, don't write the replaced lines */
Line=ReadLn(fModifyfile)
uLine=UPPER(Line)
SELECT
WHEN EOF(fModifyfile) THEN LEAVE
WHEN ExcludeEnd=1 & POS(uEndString,uLine)>0 THEN
DO /* Line(EndString) is excluded from being replaced */
r=WriteLn(ftmpFile,Line)
LEAVE
END
WHEN POS(uEndString,uLine)>0 THEN LEAVE
OTHERWISE NOP
END
END
IF ~EOF(fModifyFile) THEN
DO FOREVER /* write rest of source back */
Line=ReadLn(fModifyfile)
IF EOF(fModifyFile) THEN LEAVE
ELSE r=WriteLn(ftmpFile,Line)
END
END
r=Close(fModifyfile)
r=Close(freplaceFile)
r=Close(ftmpFile)
IF found=1 THEN
DO
CALL BackupFile(modifyFile)
CALL MakeModifiedFile
END
RETURN
/* -------------------------- */
MoveText:
PARSE ARG modifyFile,StartString,EndString,destFile
IF (destFile='') THEN CALL Help
CALL Prepare
tmpFile='T:SrcFile_'ProcessNumber
tmpDest='T:DestFile_'ProcessNumber
IF ~Open(fModifyfile,modifyFile,'R') THEN CALL Err_ShowMessage(modifyFile)
IF ~Open(fDestFile,tmpDest,'W') THEN CALL Err_ShowMessage(tmpDest)
IF ~Open(ftmpFile,tmpFile,'W') THEN CALL Err_ShowMessage(tmpFile)
DO FOREVER /* handle part of file until StartString */
Line=ReadLn(fModifyfile)
IF EOF(fModifyfile) THEN LEAVE
IF POS(uStartString,UPPER(Line))>0 | StartString='sTaRt' THEN
DO
found=1
LEAVE
END
ELSE
r=WriteLn(ftmpFile,Line)
END
IF found=1 THEN
DO
/* handle first found line */
IF IncludeStart=1 | StartString='sTaRt' | EndString='1LiNe' | PatternEnd=1 THEN
r=WriteLn(fDestFile,Line) /* move first found line */
ELSE
r=WriteLn(ftmpFile,Line) /* keep first found line */
DO FOREVER /* handle rest of File */
Line=ReadLn(fModifyfile)
IF EOF(fModifyfile) THEN LEAVE
uLine=UPPER(Line)
IF POS(uEndString,uLine)>0 | EndString='1LiNe' | ((EndString='*sAmE' | PatternEnd=1) & POS(uStartString,uLine)=0) THEN
end_found=1
SELECT
WHEN end_found=0 & (ExcludeEnd=1 | EndString='*sAmE' | PatternEnd=1) THEN
r=WriteLn(fDestFile,Line)
WHEN end_found=1 & IncludeEnd=1 & end_included=0 THEN
DO
end_included=1
r=WriteLn(fDestFile,Line)
END
WHEN end_found=0 THEN r=WriteLn(fDestFile,Line)
OTHERWISE r=WriteLn(ftmpFile,Line)
END
END
END
r=Close(fModifyfile)
r=Close(fDestFile)
r=Close(ftmpFile)
IF found=1 THEN
DO
ADDRESS COMMAND 'type "'tmpDest'" >>"'DestFile'"'
CALL BackupFile(modifyFile)
CALL MakeModifiedFile
END
ADDRESS COMMAND 'delete "'tmpDest'" QUIET'
RETURN
/* -------------------------- */
Prepare:
IF ~EXISTS(modifyFile) THEN CALL Err_ShowMessage(modifyFile' does not exist!')
IncludeStart=0
ExcludeStart=0
IncludeEnd=0
ExcludeEnd=0
PatternEnd=0
done=0
found=0
end_included=0
end_1Line=0
end_found=0
IF POS('~~',StartString)=1 THEN
DO
StartString=RIGHT(StartString,LENGTH(StartString)-2)
ExcludeStart=1
END
ELSE
IncludeStart=1
SELECT
WHEN POS('~~',EndString)=1 THEN
DO
EndString=RIGHT(EndString,LENGTH(EndString)-2)
ExcludeEnd=1
END
WHEN RIGHT(EndString,2)='#?' THEN
DO
EndString=LEFT(EndString,LENGTH(EndString)-2)
PatternEnd=1
END
WHEN EndString='*sAmE' THEN NOP
WHEN EndString='1LiNe' THEN NOP
OTHERWISE IncludeEnd=1
END
uStartString=UPPER(StartString)
uEndString=UPPER(EndString)
RETURN
/* -------------------------- */
MakeModifiedFile:
ADDRESS COMMAND
'protect "'modifyFile'" +wd'
'copy "'tmpFile'" "'modifyFile'"'
/* CALL Present(modifyFile) */
RETURN
/* -------------------------- */
BackupFile:
PARSE ARG bakFile
n=2
IF EXISTS(bakFile'.'n) THEN
DO
DO i=2 to n
k=i-1
ADDRESS COMMAND
'protect "'bakFile'.'i'" +wd'
'copy "'bakFile'.'i'" "'bakFile'.'k'" CLONE QUIET'
END
'copy "'bakFile'" "'bakFile'.'n'" CLONE QUIET'
END
ELSE
DO i=1 to n
IF ~EXISTS(bakFile'.'i) THEN
DO
ADDRESS COMMAND
'copy "'bakFile'" "'bakFile'.'i'" CLONE QUIET'
LEAVE i
END
END
RETURN
/* -------------------------- */
Init:
CR='0a'x
OPTIONS RESULTS
OPTIONS FAILAT 21
ProcessNumber=PRAGMA('ID')
TimeStamp=MyGetENV('TimeStamp')
RETURN
/* -------------------------- */
MyGetENV: PROCEDURE
PARSE ARG name
TheFile="ENV:" || name
IF (Open(fTmp, TheFile, 'read')) THEN
DO
ENVvalue=ReadLn(fTmp)
r=Close(fTmp)
END
ELSE ENVvalue="???"
RETURN ENVvalue
/* -------------------------- */
ParseArgs:
DO i=1 TO 5
arg.i=''
END
i=0
DO FOREVER
i=i+1
IF POS('"', AllArguments)=1 THEN
PARSE VAR AllArguments '"'arg.i'"' AllArguments /* parse the line */
ELSE
PARSE VAR AllArguments arg.i' 'AllArguments
IF (arg.i = " ") THEN
DO
IF POS('"',AllArguments)=1 THEN
PARSE VAR AllArguments '"'arg.i'"' AllArguments /* parse the line */
ELSE
PARSE VAR AllArguments arg.i' 'AllArguments
END
arg.i = strip(arg.i,T,' ')
arg.i = strip(arg.i,B,'"')
IF (arg.i='') THEN
DO /* Break if end of Command-line */
arg.count=i-1
LEAVE
END
END
RETURN
/* -------------------------- */
Err_ShowMessage:
PARSE ARG ErrText
say CR' Error while accessing File "'ErrText'"'CR
CALL ExitMe
/* -------------------------- */
Help:
say ' ERROR: Wrong commandline options'
CALL ExitMe
/* -------------------------- */
ExitMe:
ADDRESS COMMAND 'delete "'tmpFile'" QUIET'
EXIT 0