# MID(string,start [ ,len ])

BACK

mid(x,y,[z]) cuts out a sub-string from the string x. If the first argument of the function is undefined the result is undef. Otherwise the first argument is converted to string and the second and third arguments are converted to numeric value. The third argument is optional.

The second argument specifies the start position of the resulting substring in the original string x; and the last argument specifies the number of characters to take from the original string x. If the third argument is missing the substring lasts from the start position to the end of the string. If the second argu-ment is not defined the start of the substring is at the start of the original string. In other words if the second argument is missing it is the same as value 1. If the second argument is zero or negative it will specify the start position counting the characters from the end of the string.

If the staring position y points beyond the end of the string the result is empty string. If the length of the substring is larger than the number of characters between the starting position and end of the original string then the result will be the substring between the start position and the end of the original string.

If the length of the substring is negative the characters before the starting position are taken. No more than the available characters can be taken in this case either. In other words if the length is negative and is larger in absolute value than the starting position the resulting sub-string is the character between the position specified by the second argument and the start of the string.

Note that the order of the characters is never changed even if some position or length parameters are negative.

For compatibility reasons you can append a dollar (\$) sign to the end of the function identifier.

Example:

```a\$ = "superqualifragilisticexpialidosys"
print mid(a\$,undef)
print mid(a\$,1,5)
print mid(a\$,undef,6)
print mid(a\$,6,5)
print mid(a\$,"-3")
print "*",mid(a\$,0),"*"
print mid(undef,"66")
print mid(a\$,6,-3)
print mid(a\$,6,3)
print mid(a\$,-4,-3)
print mid(a\$,-4,3)
```

will print

```superqualifragilisticexpialidosys
super
superq
quali
sys
**
undef
erq
qua
ido
osy
```