<html>
<head> <title>FORM .. ENDFORM</title> </head> <BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000"> <p align="left">⚠ <b>
<span class="titulo">FORM .. ENDFORM</span>⚠ </b>
</p>
<p align="left">⚠ <b>
Definicin⚠ </b>
</p>
<p align="left">Esta sentencia permite definir subrutinas.</p>
<p align="left">⚠ <b>
Sintaxis:⚠ </b>
</p>
<pre>FORM <subrutina> [ TABLES <parmetros-formales> ]
[ USING <parmetros-formales> ]
[ CHANGING <parmetros-formales> ]</pre>
<p><subrutina> define el nombre de la subrutina. Con TABLES,
USING y CHANGING definimos los parmetros formales de la subrutina. Para las subrutina internas nos es definir parmetros ya que la subrutina tiene acceso a todos los objetos de datos declarados en el programa principal. Para las subrutinas externas se puede elegir pasar los objetos de datos mediante parmetros o utilizar memoria compartida entre el programa que llama a la subrutina y la subrutina (sentencia COMMON PART).</p>
<p>⚠ <b>
Ejemplo 1:⚠ </b>
</p>
FORM WELCOME.
WRITE / 'Hola mundo'.
ENDFORM.</pre>
<p><br>⚠ <b>
Ejemplo 2:⚠ </b>
</p>
<pre>DATA: BEGIN OF X.
INCLUDE STRUCTURE SFLIGHT.
DATA: ADDITION(8) TYPE C,
END OF X.
...
PERFORM U USING X. ... FORM U USING X STRUCTURE SFLIGHT.WRITE: X-FLDATE.
ENDFORM.</pre>
<p>⚠ <b>
Ejemplo 3:⚠ </b>
<br>
</p>
<pre>TYPES: BEGIN OF FLIGHT_STRUC,
FLCARRID LIKE SFLIGHT-CARRID, PRICE LIKE SFLIGHT-FLDATE, END OF FLIGHT_STRUC.</pre>
<pre>DATA: MY_FLIGHT TYPE FLIGHT_STRUC OCCURS 0 WITH HEADER LINE,
IBOOK1 LIKE SBOOK OCCURS 0 WITH HEADER LINE, IBOOK2 LIKE IBOOK1 OCCURS 0, STRUC LIKE SBOOK.</pre>
<pre>PERFORM DISPLAY TABLES MY_FLIGHT IBOOK1 IBOOK2 USING STRUC.</pre>
<pre>FORM DISPLAY TABLES P_ITAB LIKE MY_FLIGHT[]P_BOOK1 LIKE IBOOK1[] P_BOOK2 LIKE IBOOK2[] USING P_STRU LIKE STRUC. DATA L_CARRID LIKE P_ITAB-FLCARRID. ... WRITE: / P_STRU-CARRID, P_STRU-CONNID. ... LOOP AT P_ITAB WHERE FLCARRID = L_CARRID. ... ENDLOOP. ...
ENDFORM.</pre>
<p>⚠ <b>
Ejemplo 4:⚠ </b>
</p>
<pre>DATA: NUMBER_1 TYPE I VALUE 1,
NUMBER_2 TYPE I VALUE 2, TEXT_1(10) VALUE 'one', TEXT_2(10) VALUE 'two'.</pre>
<pre>PERFORM CONFUSE USING NUMBER_1
NUMBER_2 TEXT_1 NUMBER_1 TEXT_2.</pre>
<pre>FORM CONFUSE USING PAR_NUMBER_1 TYPE I
PAR_NUMBER_2 TYPE I PAR_TEXT_1 TYPE C VALUE(PAR_V_NUMBER_1) TYPE I VALUE(PAR_V_TEXT_2) TYPE C. ADD 3 TO PAR_V_NUMBER_1. ADD 4 TO PAR_NUMBER_1. ADD NUMBER_1 TO PAR_NUMBER_2. TEXT_2 = 'three'. PAR_TEXT_1 = PAR_V_TEXT_2. PAR_V_TEXT_2 = 'four'.
ENDFORM.
</pre> <p>El contenido de los campos despus de la llamada al⚠ <a href="perform.htm" tppabs="perform.htm">
PERFORM⚠ </a>
Es:</p>
<pre>NUMBER_1 = 5
NUMBER_2 = 7 TEXT_1 = 'two' TEXT_2 = 'three' </pre> <p>⚠ <b>
Vase tambin:⚠ </b>
⚠ <a href="perform.htm" tppabs="perform.htm">
PERFORM⚠ </a>
</p>
</body>
</html>