#SECTION (define code section) 

Top  Previous  Next

 

#SECTION (<name>)

    statements

#ENDSECTION

#SECTION

Marks the beginning of a section of generated code.

name

A string that identifies the name of the section.

statements

Any template or target language statements.

#ENDSECTION

Terminates the #SECTION.

The #SECTION structure defines a contiguous section of generated code so that the position of embedded source code is correctly patched up for error positions in the resulting generated code. #APPEND with the SECTION attribute performs the patch.

 

Named Sections

A name parameter has been added to the #SECTION statement. This parameter can then be referenced by the SECTION attribute of the #APPEND statement as follows:

 

#SECTION('First Section')

...

#ENDSECTION

#SECTION('Another Section')

...

#ENDSECTION

...

 

#APPEND('FileName'),SECTION('Another Section')

#APPEND('FileName'),SECTION('First Section')

The first #APPEND statement with the SECTION attribute uses the last defined section in source order. The next #APPEND statement is used for the previous section, etc. A named #SECTION can be used with the #APPEND statement only once. If the SECTION attribute of the #APPEND statement has a parameter defined, for example:

#APPEND('somefile'),SECTION('somesection')

The template source generator will append the #SECTION defined with the name 'somesection' and then removes it from the list of sections. If the SECTION attribute has no parameter

#APPEND('somefile'),SECTION

The generator uses the most recently declared #SECTION not removed yet from the top of sections stack and then pops it (but does not destroy).

In summary, to avoid any logic problems, all #APPEND statements should not mix usage of named and unnamed sections.

Other Example:

#CREATE(%Temp)                               #!Create temp module file

#SECTION

#EMBED(%MyEmbed,@s30)

#ENDSECTION

#CLOSE

#CREATE('target.clw')

CODE

#APPEND(%Temp),SECTION                       #!Correctly patch position of #EMBED

#CLOSE

See Also:     #APPEND