Yes, you'd need to have the following line in Global Code, or at least at the top of the event where you want to use the text descriptors:
#include "sbasic_include.sbas"I'm not sure what you're attempting to accomplish with
@containsstringarray(vSpec1,"",1). This isn't really doing anything, is it?

The main problem is that the three @SpecCommand lines are doing the following:
1.
@SpecCommand(6,5,"") is getting a list of the specs.
2.
@speccommand(1,5,vSpec3) is saving specs using the selected name. But since you have not loaded a spec (they are still blank), you are
effectively clearing/deleting your current specs!3.
@SpecCommand(3,5,vSpec3) is simply viewing the currently loaded specs, of which, there isn't really any because there were never any loaded.
Try this instead:
var vSpecList as String
var vSpec as String
var vResult as String
vSpecList = @SpecCommand(6, 5, "") // Get a list of saved Mass Update specs
vSpecList = @SortStringArray(vSpecList, 0) // Sort them
If vSpecList = "" // Make sure there is at least one spec to show in popup list
@MsgBox("No saved Mass Update specs found!", "", "(HINT: Save one first)")
Else
{
vSpec = @PopupChoiceList(vSpecList, "CHOOSE AN UPDATE") // Display the list of specs
If vSpec <> "" // Make sure a spec name was selected
{
vResult = @SpecCommand(0, 5, vSpec) // LOAD the Mass Update spec
vResult = @SpecCommand(2, 5, vSpec) // RUN the Mass Update spec
}
}
You may want to add some code to check if you are actually in Update mode, and maybe a final popup asking the user to confirm before actually doing the Mass Update.