Transaction Scope is the outermost block with transaction properties that updates the database.
Statements that update the database include:
UPDATE, CREATE, ASSIGN and SET.
Blocks with transaction properties include:
FOR, REPEAT, PROCEDURE, any block that has the TRANSACTION keyword specified or any block in which EXCLUSIVE-LOCK is used to find a record in a database table.
For example, using FIND or FOR with EXCLUSIVE-LOCK causes the transaction scope to be raised to the nearest block with transaction properties. If no enclosing block qualifies as such then the transaction scope is raised to the PROCEDURE.
Progress allows only one active transaction at a time. The next transaction started in the procedure is actually a sub-transation. When a transaction is started in one procedure and it has not ended a sub-procedure is called, new transactions in the sub-procedure will also be subtransactions.
Please refer to the Documentation References below for further clarification.