4D v16.3

SEND PACKET

Inicio

 
4D v16.3
SEND PACKET

SEND PACKET 


 

SEND PACKET ( {docRef ;} paquete ) 
Parámetro Tipo   Descripción
docRef  DocRef in Número de referencia del documento o canal actual (puerto serial o documento)
paquete  Cadena, BLOB in Cadena o BLOB a enviar

El comando SEND PACKET envía un paquete a un puerto serial o a un documento. Si docRef se especifica, el paquete se escribe en el documento referenciado por docRef. Si docRef no se especifica, el paquete se escribe para el puerto serial o documento previamente abierto por el comando SET CHANNEL.

Un paquete es sólo una serie simple de datos, generalmente una cadena de caracteres.

También puede pasar un BLOB en paquete. Esto le permite evitar las restricciones relacionadas con la codificación de los caracteres enviados en modo texto (ver ejemplo 2).

Nota: cuando pasa un BLOB en paquete, el comando no tiene en cuenta ningún conjunto de caracteres definido por el comando USE CHARACTER SET. El BLOB se envía sin ninguna modificación.

Antes de utilizar SEND PACKET, debe abrir un puerto serial o un documento con SET CHANNEL, o abrir un documento con uno de los comandos de gestión de documentos.

Cuando escribe un documento, el primer SEND PACKET comienza a escribir al comienzo del documento a menos que el documento hubiera sido abierto con USE CHARACTER SET. Hasta el momento en que el documento se cierra, cada paquete subsiguiente se añade a los paquetes enviados anteriormente.

Nota: este comando es útil para un documento abierto con SET CHANNEL. Por otra parte, para un documento abierto con Open document, Create document o Append document, usted puede utilizar los comandos Get document position y SET DOCUMENT POSITION para obtener y cambiar la ubicación en el documento donde ocurrirá la próxima escritura (SEND PACKET) o lectura (RECEIVE PACKET).

El siguiente ejemplo escribe datos de campos en un documento. Escribe los campos como campos de longitud fija. Si un campo es de longitud menor a la especificada, el campo se llena con espacios. (es decir, se añaden espacios para alcanzar la longitud especificada.) Aunque el uso de campos de longitud fija es un método ineficiente de almacenamiento de datos, algunos sistemas informáticos y ciertas aplicaciones todavía lo utilizan:

 $vhDocRef :=Create document("") ` Creación de un documento
 If(OK=1) ` ¿Se creó el documento?
    For($vlRegistro;1;Records in selection([Personas])) ` Bucle para cada registro
  ` Envío de un paquete creado a partir de una cadena de 15 espacios que contiene el campo Nombre
       SEND PACKET($vhDocRef;Change string(15*Char(SPACE);[Personas]Nombre;1))
  ` Envío de un segundo paquete creado a partir de una cadena de 15 espacios que contiene el campo Apellido
  ` Este podría estar en el primer SEND PACKET, pero se separa por claridad
       SEND PACKET($vhDocRef;Change string(15*Char(SPACE);[Personas]Apellido;1))
       NEXT RECORD([Personas])
    End for
  ` Envío de Char(26), utilizado como marcador de fin de registro por algunos ordenadores
    SEND PACKET($vhDocRef;Char(SUB ASCII code))
    CLOSE DOCUMENT($vhDocRef` Cierre del documento
 End if

Este ejemplo ilustra el envío y recuperación de caracteres extendidos vía un BLOB en un documento:

 C_BLOB($enviar_blob)
 C_BLOB($recibir_blob)
 TEXT TO BLOB("âzértÿ";$enviar_blob;UTF8 text without length)
 SET BLOB SIZE($enviar_blob;16;255)
 $enviar_blob{6}:=0
 $enviar_blob{7}:=1
 $enviar_blob{8}:=2
 $enviar_blob{9}:=3
 $enviar_blob{10}:=0
 $vlDocRef:=Create document("blob.test")
 If(OK=1)
    SEND PACKET($vlDocRef;$enviar_blob)
    CLOSE DOCUMENT($vlDocRef)
 End if
 $vlDocRef</Gen9>=<Gen9>Open document(document)
 If(OK=1)
    RECEIVE PACKET($vlDocRef;$recibir_blob;65536)
    CLOSE DOCUMENT($vlDocRef)
 End if



Ver también 

Get document position
RECEIVE PACKET
SET DOCUMENT POSITION

 
PROPIEDADES 

Producto: 4D
Tema: Comunicaciones
Número 103

This command can be run in preemptive processesEl modo Unicode afecta este comando

 
HISTORIA 

Modificado: 4D v11 SQL

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)