You don’t need to list the functions here, but you don’t need to use them either…
http://forum.mikrotik.com/t/pdu-fields-for-incoming-sms/167111/1
[…]
# BEGIN TIMEZONE section
:local tza [:tonum “0x$[:pick $pdu ($skip + 1) ($skip + 2)]”]
:local tzb [:tonum “0x$[:pick $pdu $skip ($skip + 1)]”]
:local tzs “+” ; :if (($tza & 0x8) = 0x8) do={:set tzs “-”}
:set tza ($tza & 0x7)
:local tzmin ((($tza * 10) + $tzb) * 15)
:set ($return->“tzminutes”) [:tonum “$tzs$tzmin”]
:local tzhou ($tzmin / 60) ; :if ($tzhou < 10) do={:set tzhou “0$tzhou”}
:set tzmin ($tzmin % 60) ; :if ($tzmin < 10) do={:set tzmin “0$tzmin”}
:set ($return->“timezone”) “GMT$tzs$tzhou:$tzmin”
:set skip ($skip + 2)
# END TIMEZONE section
[…]
Just create a function…
{
:local tzpdutogmt do={
:local input $1
:local tza [:tonum “0x$[:pick $input 1 2]”]
:local tzb [:tonum “$[:pick $input 0 1]”]
:local tzs “+” ; :if (($tza & 8) = 8) do={:set tzs “-”}
:set tza ($tza & 7)
:local tzmin ((($tza * 10) + $tzb) * 15)
:local tzhou ($tzmin / 60) ; :if ($tzhou < 10) do={:set tzhou “0$tzhou”}
:set tzmin ($tzmin % 60) ; :if ($tzmin < 10) do={:set tzmin “0$tzmin”}
:return “GMT$tzs$tzhou:$tzmin”
}
:put [$tzpdutogmt “8A”]
}
Result:
GMT-07:00