Same for RENAME() does not need the FILE structure defined. I like the idea of Renaming the file to hide it instead of Remove and its gone.
Syntax is TpsTableRename TpsFile OldTableName NewTableName [password]
for example TpsTableRename ProjectFile TaskTable Old_Tasks
will rename ProjectFile.tps\!TaskTable
inside the file to ProjectFile.tps\!Old_Tasks
One option is having Rename() extract the Table out of the Super file into a separate TPS file. I decided that if the New Name was ~\! that flags to “extract” (i.e. not a super file). Maybe someone has other ideas for syntax?
For example TpsTableRename ProjectFile TaskTable ~\!
—> creates TaskTable.TPS with only the TaskTable table inside as “UNNAMED”
Or TpsTableRename ProjectFile TaskTable ~\!OldTasks\!\TaskTable
—> creates OldTasks.TPS with the TaskTable table inside as “TaskTable”
PROGRAM !TpsTableRename.exe Utility by Carl Barnes based on Table Remove by Jeff Slarve
!Usage: TpsTableRename YourTpsFile TableName NewName [Password]
!FYI: New Name as "~\!" the Table is "Extracted" to its own TPS
MAP
RenameTPSTable PROCEDURE(STRING pTableName, STRING pNewName,<STRING pOwnerID>),LONG,PROC
Err4Msg PROCEDURE(Byte NoCRLF=0),STRING !Fromat ErrorCode() & Error() & FileError... for Message() Stop() Halt() or Log file (NoCRLF)
END
BuiltFilePath CSTRING(401)
BuiltRenFile CSTRING(401)
NewTableName CSTRING(256)
Password CSTRING(101)
ExractFlag BOOL
CODE
SYSTEM{PROP:FontName}='Segoe UI' ; SYSTEM{PROP:FontSize}=10
IF NOT COMMAND('1') OR NOT COMMAND('2') OR NOT COMMAND('3')
MESSAGE('TpsTableRename.exe: ' & |
'||<9>A commandline program designed for the quick' & |
'|<9>rename of a \!Table within a TOPSPEED "super" file.' & |
'||Usage:' & |
'|<9>TpsTableRename YourTpsFile TableName NewName [Password]'& |
'||Specify NewName as "~\!" to Extract the Table as a separate TPS file.' & |
'|FYI: The table "UNNAMED" is when no "\!" was specified.' & |
'','TpsTableRename Usage',ICON:Help,,,MSGMODE:CANCOPY)
RETURN
END
BuiltFilePath = LONGPATH(COMMAND('1')) & '\!'& COMMAND('2')
NewTableName = CLIP(COMMAND('3'))
Password = CLIP(COMMAND('4'))
IF SUB(NewTableName,1,3) = '~\!' THEN !Pass New Name as ~\! to extract
IF SUB(NewTableName,4,999) <> '' THEN !There is text after '~\!'
BuiltRenFile = SUB(NewTableName,4,999) !Extracted TPS file name = after '~\!'
ELSE
BuiltRenFile = COMMAND('2') !Extracted TPS file name = just \!Table Name
END
ExractFlag = True
ELSE
BuiltRenFile = LONGPATH(COMMAND('1')) & '\!'& NewTableName !Rename inside current TPS
END
IF RenameTPSTable(BuiltFilePath,BuiltRenFile,Password) THEN
MESSAGE('Rename() failed ' & |
'<13,10><13,10>Table Name: "' & BuiltFilePath &'"'& |
'<13,10>Rename as: "' & BuiltRenFile &'"'& |
CHOOSE(NOT Password,'','<13,10>Using Password: "'& Password & '"' ) & |
Err4Msg(),'TPSTableRename Error',ICON:EXCLAMATION,,,MSGMODE:CANCOPY)
ELSIF ExractFlag THEN
MESSAGE('From File: ' & BuiltFilePath &'||Extracted To: '& BuiltRenFile & |
'||The table was extracted as a separate TPS file','TPSTableRename Extract',Icon:Tick,,,MSGMODE:CANCOPY)
ELSE
MESSAGE('Renamed: ' & BuiltFilePath &'||To Table: '& BuiltRenFile,'TPSTableRename Success',Icon:Tick,,,MSGMODE:CANCOPY)
END
RETURN
!-----------------------------------------------------------------------------
RenameTPSTable PROCEDURE(STRING pTableName, STRING pNewName,<STRING pOwnerID>)
FileName STRING(400),STATIC
OwnerID CSTRING(101),STATIC
F FILE,DRIVER('TOPSPEED'),NAME(FileName),PRE(F),OWNER(OwnerID),ENCRYPT
Record RECORD
END
END
CODE
IF NOT pTableName THEN RETURN 0.
IF ~OMITTED(pOwnerID) THEN OwnerID = CLIP(pOwnerID).
FileName = pTableName
! STOP('RenameTPSTable Debug <13,10><13,10>Name(F): '& CLIP(Name(F)) &'<13,10><13,10>Rename To: '& pNewName)
RENAME(F,pNewName) !was REMOVE(F)
RETURN ERRORCODE()
!-----------------------------------------------------------------------------
Err4Msg PROCEDURE(Byte NoCRLF=0)!,STRING
!Example: IF ERRORCODE() THEN STOP('Failed ADD(xxx)' & Err4Msg()).
!Note: Return starts '<13,10><13,10>Error Code:' so no need to put in the Message()
CODE
IF ~ERRORCODE() THEN RETURN ''.
IF ~NoCRLF THEN
RETURN '<13,10><13,10>Error Code: ' & ERRORCODE()&' '&ERROR() & |
CHOOSE(~FILEERRORCODE(),'','<13,10>Driver Error: ' & FILEERRORCODE()&' '&FILEERROR() ) & |
CHOOSE(~ERRORFILE(),'','<13,10>File Name: ' & ERRORFILE() )
END
!NoCRLF<>0 is 1 line format for use by logging
RETURN ERRORCODE()&' '&ERROR() & | ! {148}
CHOOSE(~FILEERRORCODE(),'',' [Driver ' & FILEERRORCODE()&' '&FILEERROR() &']' ) & |
CHOOSE(~ERRORFILE(),'',' {{' & ERRORFILE() & '}' )
Project_TpsTableRename.zip (5.1 KB)
A reminder that every TPS file is a Super File. If you don’t specify a \!TableName then Table Name defaults to UNNAMED.