And for a slightly better answer
// make a CSV file with nuls in a field
filename = savetextfile("$temp/nuls.csv",chartoblob("a,b,c~0D~0A1.1,~00~00~00,1.2~0D~0A2.1,~00~00~00,2.2"));
// load the file into a blob so we can clean it up
blobdata = loadtextfile(filename,blob);
// convert the blob to text so we can manipulate the nuls as ~00
textdata = blobtochar(blobdata);
write("\!nbefore = ", textdata);
// fix it up, convert nul to SYMBOL FOR NULL (U+2400)
// https://www.fileformat.info/info/unicode/char/2400/index.htm
// replace ~00 with three byte UTF-8 sequence for a printable character
substitute into(textdata,"~00","~E2~90~80");
write("\!n after = ", textdata);
// convert it back to a blob, handling the ~0D and ~0A that remain
repairedblobdata = Char To Blob(textdata, "ascii~hex");
// at this point, you could save it (like above) or open it from memory:
dt = open(repairedblobdata,"text"); // tell JMP to interpret the blob as a CSV text file
the diagonal NUL is a single Unicode character
It's really hard to talk about the real nul character that won't print and tends to break things and the printable character 2400 that isn't ~00 but shows a nice graphic that suggests it might be ~00. I'll make my font smaller now.
Craige