| tchsize | tables | tchsize |
tchsize -- Change the size of tables.
tchsize intable outtable maxpar maxcols rowlen allrows
This task changes the allocated sizes of various portions of a table or a list of tables. In some cases it is difficult to effectively use this task, so caution is advised.
NOTE: This task should not be used on FITS tables. If any input table is of type FITS, a message will be printed, and that file will be skipped.
Four integer parameters specify table sizes. Passing a value of -1 to any parameter means that the current value should not be changed. A value (such as zero) that is smaller than the minimum allowed value for that parameter results in the truncation of unused space; for example, if three header parameters have already been written to a table then setting maxpar=0 gives you a table with space for only three header parameters.
The input may be a general filename template, including wildcard characters or the name of a list file (preceded by an "@" sign) containing table names. The output may be null, a directory specification, or a list of table names. If the output is a list of tables then there must be the same number of names in the input and output lists, and the names are taken in pairs, one from input and one from output. A null string for the output is equivalent to specifying the same names for the input and output tables.
NOTE: Be careful when using a wildcard for the extension. If you have the files table.tab and table.lis in the current directory, for example, then "tchsize tab* test/" would crash when trying to open table.lis as a table.
Use maxpar=-1 if no change is to be made; set maxpar=0 to truncate unused space.
Set maxcols=-1 if no change is to be made; set maxcols=0 to truncate unused space.
Set rowlen=-1 if no change is to be made; set rowlen=0 to truncate unused space.
Set allrows=-1 if no change is to be made; set allrows=0 to truncate unused space.
1. Truncate (in-place) all unused space in a single table:
tt> tchsize table "" 0 0 0 0 or tt> tchsize table table 0 0 0 0
2. Set the allocated space for user (header) parameters to 27 records without changing any other size parameter. The result is to be put in a new file called table2.tab, leaving the input table unchanged.
tt> tchsize table table2 27 -1 -1 -1
3. Truncate unused space in three different tables, with the truncated tables named a.tab, b.tab, and c.tab:
tt> tchsize table1,table2,tab67 a,b,c 0 0 0 0 or tt> tchsize tab*.tab a,b,c 0 0 0 0In the latter case the extension is given explicitly in case there are other files beginning with tab that are not tables; there must be exactly three tables beginning with tab because the output list has three names.
4. Increase the space available for allocating new columns:
Suppose the following information about the table has been obtained by using the tinfo task:
tinfo.ncols = 7 tinfo.maxcols = 8 tinfo.rowlen = 12 tinfo.rowused = 10 tinfo.tbltype = "row"
Suppose we want to add 10 more columns: five single-precision columns, two double-precision, and three character*12. If the table were column-ordered we would only have to increase maxcols to at least 17 (ncols+10). Since the table is row-ordered we still must have maxcols=17, but we also have to increase the row length to allow room for the additional columns. The extra row length needed is 5 + 2*2 + 3*3 = 18, so we must set the new row length to at least tinfo.rowused + 18 = 28. So we have
tt> tchsize table "" -1 17 28 -1
if the space for header parameters does not need to be changed, and the allocated number of rows is irrelevant for a row-ordered table.
This task was written by Phil Hodge.