And if you just care about the interval, you could get it using this kind of approach, which is much quicker since you don't have the overhead of all the platform launches that the generality of Bootstrap requires:
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Big Class.jmp");
n = NRow(dt);
dataVec = dt[0, "height"]; // Get the requisite data as a vector
nb = 100000; // Number of bootstrsp samples
gms = J(nb, 1, .); // Vector to hold the geometric mean of each bootstrap sample
for(s=1, s<=nb, s++, // Loop over bootstrap samples
pickMe = J(n, 1, RandomInteger(1, n)); // Indices of elements to compose this bootstrap sample
bootstrapSampleVec = dataVec[pickMe]; // Values in this bootstrap sample
gm = exp(Mean(ln(bootstrapSampleVec))); // Geometric mean of this bootstrap sample
gms[s] = gm;
);
gm95 = Quantile(0.95, gms);
gm05 = Quantile(0.05, gms);
Print("The Geometric Mean lies betweeen "||Char(Round(gm05, 3))||" and "||Char(Round(gm95, 3))||".");
Probably this code could be parallelised to make it even quicker, but with the loss of some readability.