有效 JSL 代碼中出現未知消息最近,我注意到 JSL 正在報告有效代碼的未知消息。 以下是最新示例(突出顯示未知消息):
Names Default to Here(1);
Delete Symbols();
databaseFile = Pick File(
"Select Music Collection File",
"$DOCUMENTS",
{"Music Collection|csv"},
1,
0
);
albumTable = Open(databaseFile);
albumTable << <FONT color="#FF0000">Delete Rows</FONT>(N Rows());
:Name("Artist/Album") << Set Name("Title");
:Single 2 << Set Name("CD Single");
:LP << Value Labels({0 = "False", 1 = "True"});
:EP << Value Labels({0 = "False", 1 = "True"});
:Single << Value Labels({0 = "False", 1 = "True"});
:Album << Value Labels({0 = "False", 1 = "True"});
:CD Single << Value Labels({0 = "False", 1 = "True"});
:Want << Value Labels({0 = "False", 1 = "True"});
albumTable << <FONT color="#FF0000">New Column</FONT>(
"Artist Block",
Character,
Formula(If(:Format == "", :Title))
);
albumTable << <FONT color="#FF0000">New Column</FONT>(
"Artist",
Character,
Formula(
If(Row() != 1,
If(:Artist Block == "",
Lag(:Artist, 1),
:Artist Block
),
:Artist Block
)
)
);
albumTable << <FONT color="#FF0000">Move Selected Columns</FONT>({"Artist"}, To First);
tableName = albumTable << <FONT color="#FF0000">Get Name</FONT>();
artistCategoryTable = albumTable << <FONT color="#FF0000">Subset</FONT>(
Output Table("Artist Category " || tableName),
Copy Formula(0),
All Rows,
Selected Columns Only(0)
);
Close(albumTable, NoSave);
artistRowFilter = artistCategoryTable << <FONT color="#FF0000">Data Filter</FONT>(
Mode(Include(1)),
Inverse(1),
Add Filter(
Columns(:Artist Block),
Where(:Artist Block == "")
),
Invisible
);
artistCategoryTable << <FONT color="#FF0000">Delete Rows</FONT>;
artistCategoryTable << <FONT color="#FF0000">Delete Columns</FONT>(:Artist Block);
artistRowFilter << <FONT color="#FF0000">Clear</FONT>;
artistRowFilter << <FONT color="#FF0000">Delete</FONT>;與我在其他腳本中看到的這種顏色編碼一樣,該腳本運行沒有問題。 關於為什麼有效的 JSL 消息被標記為未知的任何想法?
腳本回复:消息未知出現在有效的 JSL 代碼中我喜歡擁有啟用“顏色未知對象消息”:

然後我可以快速檢查對像是否已初始化。
但有時,消息被標記為紅色,儘管它們是“已知的”。
幾分鐘後,Jmp 更正了錯誤。
示例:dt 被稱為數據表 - 幾分鐘後,Jmp 將知道它可以發送開始數據更新到數據表。
為什麼是開始數據表標記為未知?

回复:消息未知出現在有效的 JSL 代碼中就是這樣。 我一定是在嘗試創建深色模式主題時無意中啟用了“顏色未知對象消息”。
回复:消息未知出現在有效的 JSL 代碼中看起來您打開了“顏色未知對象消息”首選項。 您可以在“腳本編輯器”首選項組的“JSL 格式”組框中找到此設置。在運行腳本之前,尚未分配 albumTable 變量,因此 jmp 不會主動將對象消息標記為未知。當腳本運行時,albumTable 被設置為一個表,然後該表被關閉。此時 jmp 可以更好地確定哪些消息有效,並且由於關閉的表無法處理“刪除行”消息,因此該消息將被標記為紅色。由於評估對象和消息可能非常耗時,JMP 不會在每次更改變量時重新檢查每個腳本,因此您可能需要重新格式化腳本或編輯包含消息的行以查看顏色更新。
回复:消息未知出現在有效的 JSL 代碼中
@Jeff_Perkinson寫道:
這真的很奇怪。 我以前從沒見過。 您運行的是什麼版本的 JMP?
同上。 正如我所說,直到幾個月前我才遇到過這個問題。 這真的很奇怪。 前段時間我確實嘗試過為 JSL 創建暗模式主題,但最終又回到了默認設置,因為我不太了解樣式列表中的所有項目在 JSL 中的關聯。 我對色彩科學的了解足以讓我對選擇互補但也非常適合整體主題的顏色非常**,這無濟於事;我現在沒有那麼多空閒時間。 :皺著眉頭:
我正在運行 JMP 14.3。 由於我是我們公司的 JMP 管理員,所以我特別注意讓 JMP 用戶保持最新狀態。
回复:消息未知出現在有效的 JSL 代碼中現在我明白你在描述什麼了。 該圖片有助於解釋腳本編輯器中的顏色編碼沒有正確地為有效消息著色。 相反,它將它們著色為紅色,因為默認偏好禁止消息未知.

這真的很奇怪。 我以前從沒見過。 您運行的是什麼版本的 JMP?
回复:消息未知出現在有效的 JSL 代碼中
@Craige_Hales寫道:
還:未知是 JMP 在發生 JMP 沒有準備好的情況時使用的簡潔錯誤消息。 您可以一次運行 JSL 一條語句,查看日誌以隔離問題。 JMP 嘗試在解析和執行 JSL 時診斷錯誤;如果 JMP 在沒有計劃錯誤的情況下捕捉到錯誤,則 JMP 只能說未知.
如果您可以發布一個獨立的示例,JMP 可能會為下一個找到它的人提供更好的信息。將示例發送給技術支持將確保它得到跟踪。
一旦問題行已知並且您可以研究變量中的值(將它們打印到日誌中),問題可能會更加明顯。 它可能是缺失值或需要數字數據的字符數據,或者它可能是交換函數調用的兩個參數,或者使用太大或太小的表行,或者其他。 所有這些都應該比未知.
如果我沒有遺漏您要中繼的內容,那麼您似乎指的是消息窗口或調試器報告的錯誤。 我得到的標誌在代碼中。 根據 JSL 的默認顏色編碼,紅色關鍵字表示錯誤或未知消息。 由於我在保存腳本時沒有收到錯誤消息並且它運行沒有問題,所以唯一剩下的可能性是紅色的關鍵字是未知消息。
回复:消息未知出現在有效的 JSL 代碼中當代碼被添加到帶有 JSL 標籤的帖子時,突出顯示不會出現,所以這裡是帶有標誌的代碼的屏幕截圖。

正如我在原始帖子中所述,該腳本確實按預期工作,但許多行都有標記為未知消息的保留字這一事實讓我認為還有另一個潛在問題。 我已經使用 JSL 幾年了,直到最近幾個月我才收到這些未知的消息標誌。 現在我想起來了,這可能是在將我的 JMP 安裝更新到 14.3 之後開始的。
gzmorgan0 寫道:
albumTable << 刪除行(N行());這個 JSL 的目的是什麼?
該行代碼刪除了數據表中不是專輯數據的最後一行。
gzmorgan0 寫道:
所有使用數據過濾器的代碼都很混亂。 只需使用
artistCategoryTable <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> select where</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">:</SPAN>Artist<SPAN class="token operator">==</SPAN><SPAN class="token string">""</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
artistCategoryTable <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> delete rows</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>
我在腳本中的過濾代碼是在我手動執行該過程時由 JMP 生成的。 雖然我已經使用 JSL 大約 5 年了,但我絕不是專家,因為我的工作量如此之大,以至於我幾乎沒有時間學習任何新東西,更不用說掌握它了,所以我很少完全從頭開始生成腳本. 最重要的是,我現在需要學習 R,因為我們的一位客戶使用 R 並堅持我們也這樣做。
回复:消息未知出現在有效的 JSL 代碼中編輯:在下面的附加解釋後忽略此回复...謝謝杰夫!
還:未知是 JMP 在發生 JMP 沒有準備好的情況時使用的簡潔錯誤消息。 您可以一次運行 JSL 一條語句,查看日誌以隔離問題。 JMP 嘗試在解析和執行 JSL 時診斷錯誤;如果 JMP 在沒有計劃錯誤的情況下捕捉到錯誤,則 JMP 只能說未知.
如果您可以發布一個獨立的示例,JMP 可能會為下一個找到它的人提供更好的信息。將示例發送給技術支持將確保它得到跟踪。
一旦問題行已知並且您可以研究變量中的值(將它們打印到日誌中),問題可能會更加明顯。 它可能是缺失值或需要數字數據的字符數據,或者它可能是交換函數調用的兩個參數,或者使用太大或太小的表行,或者其他。 所有這些都應該比未知.
@EvanMcCorkle @Audrey_Shull
回复:消息未知出現在有效的 JSL 代碼中@mdawson69 ,
突出顯示了 JSL 的哪些行? 有幾行 JSL 令人困惑:
沒有更多細節,我不明白你的問題。