In Castalia we do use dynamic arrays in msg files. Look at Mac802154Packet.msg
you can see the line.
This is a dynamic array of a structures (the struct is defined in the message as well)
beaconPacket->setGTSlistArraySize(GTSlist.size());
for (int i = 0; i < (int)GTSlist.size(); i++) {
if (CAPlength > GTSlist[i].length) {
CAPlength -= GTSlist[i].length;
GTSlist[i].start = CAPlength + 1;
beaconPacket->setGTSlist(i,GTSlist[i]);
} else {
GTSlist[i].length = 0;
trace() << "Internal ERROR: GTS list corrupted";
}
}
"GTSlist" above is an internal variable (a C++ vector) which we use to fill the message field