Description

Moves the contents of one variable into another variable, and clears the original variable.

Syntax

Transfer variable1 To variable2

Parameters

The Transfer statement accepts arguments for the following parameters.

ParameterDescription
variable1The source variable. After the execution of a Transfer statement, variable1 is null.
variable2The target. After a transfer, variable2 contains the data originally represented by variable1. It is not necessary to initialize the target variable before transferring to it.

Remarks

The Transfer statement moves the value of a variable by reference. Instead of copying the data represented by a variable, Transfer copies the pointer to that data. The effect is a very quick reassignment, with no loss of memory.

If the contents of a variable are copied using an assignment operator (for example, A = B), BASIC+ makes a copy of the value in the source variable (B), and loads it into the location represented by the target variable (A). The assignment operator is a transfer by value. This consumes both time and memory, and thus direct assignment is less efficient than using the Transfer statement.

Example

/* The program processes each record in the CUSTOMER file.
After calling the external program RECORD_STATS,
the program restores the values of @RECORD and @ID by transferring them from temporary variables.
The local subroutine FURTHER_PROCESSING is not shown. */
 
Open "TEST" To CUSTOMER_TABLE Else
  status = Set_FSError()
  Return
End
Select CUSTOMER_TABLE
Done = 0
Loop
  ReadNext @ID Else Done = 1
Until Done
  Read @RECORD From CUSTOMER_TABLE, @ID Then
    * save contents before calling routine
    * in case RECORD_STATS changes values
    SAVE_RECORD = @RECORD
    SAVE_ID = @ID
    Call RECORD_STATS
    * restore contents
    Transfer SAVE_RECORD To @RECORD
    Transfer SAVE_ID To @ID
    GoSub Further_Processing
  End
Repeat
  • No labels