MID

Copia caratteri da una posizione centrale

MID copia L caratteri della stringa IN iniziando alla posizione P, dove 1 denota il primo carattere della stringa. Il risultato viene scritto nella variabile di uscita.

Parametri

Ingresso

IN (STRING)

Stringa di ingresso iniziale

L (INT)

Numero di caratteri della stringa di ingresso che vengono copiati

P (INT)

Posizione iniziale della stringa di ingresso da copiare, in cui 1 è il primo carattere della stringa

Uscita

Unnamed output (STRING)

Stringa copiata

Note

  • Se questa istruzione è utilizzata con stringhe UTF-8, fare riferimento alle note relative alle stringhe UTF-8 sotto il tipo di dati STRING.

  • La somma di posizione iniziale e numero di caratteri da restituire non deve essere superiore alla stringa di ingresso. Se ad esempio volete ricevere 5 caratteri di una stringa di 10 caratteri partendo dalla posizione 7, vengono restituiti solo gli ultimi 4 caratteri.

  • Se la lunghezza della stringa di uscita supera la lunghezza definita per la variabile di uscita nel campo Tipo, viene copiato un numero di caratteri da sinistra pari a quello che la variabile di uscita può contenere.La variabile di sistema sys_bIsCarry è impostato.

Flag di errore

sys_bIsOperationErrorHold (passa a TRUE e resta TRUE)

se una stringa applicata in ingresso o in uscita è una stringa non valida

sys_bIsOperationErrorNonHold (passa a TRUE per una scansione)

se una stringa applicata in ingresso o in uscita è una stringa non valida

sys_bIsCarry (passa a TRUE per una scansione)

se la lunghezza della stringa di uscita supera la lunghezza definita per la variabile di uscita nel campo "Tipo"

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	VAR
		sInputString: STRING[32]:='A better life. A better world.';
			(*sample string*)
		iNumberOfCharacters: INT:=15;
			(*characters to be delivered*)
		iStartPos: INT:=16;
			(*position to start copying*)
		sResultString: STRING[15]:='';
			(*result here: 'A better world.'*)
	END_VAR

In questo esempio sono state dichiarate le variabili di ingresso (sInputString, iNumberOfCharacters e iStartPos). Al loro posto potete inserire la stringa, il numero di caratteri da restituire e la posizione iniziale direttamente nella funzione. La stringa deve essere inserita tra virgolette, sia nell'intestazione del POU sia nella funzione.

Corpo del POU

A partire da iStartPos (16), iNumberOfCharacters (15) di sInputString) viene copiato in (sResultString).

Corpo LD

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,MID!,,22,0,27,5,,?DIN?DL?DP?C);
B(B_VARIN,,sInputString,20,1,22,3,);
B(B_VARIN,,iNumberOfCharacters,20,2,22,4,);
B(B_VARIN,,iStartPos,20,3,22,5,);
B(B_VAROUT,,sResultString,27,1,29,3,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corpo ST

sResultString:=MID(IN:=sInputString, L:=iNumberOfCharacters, P:=iStartPos);

Corpo IL

L'ultima revisione: 2024-04-02Feedback su questa paginaPanasonic hotline