diff --git a/docs/ass2.md b/docs/ass2.md index d14ba86..919803a 100644 --- a/docs/ass2.md +++ b/docs/ass2.md @@ -22,6 +22,7 @@ - [arm](#arm) - [arm_by](#arm_by) - [sort_by](#sort_by) +- [sort_linguistic](#sort_linguistic) - [at_least](#at_least) - [at_least_text](#at_least_text) - [at_least_output_if_zero](#at_least_output_if_zero) @@ -283,6 +284,26 @@ sort_by = %str(#G1#FREQ(desc) #G1#TIME(desc) #G2#FREQ(desc) #G2#TIME(desc)) --- +#### sort_linguistic + +**Syntax** : `true` | `false` + +指定是否在排序时遵循当前区域设置的默认 collating sequence 选项。 + +> [!NOTE] +> +> 指定 `sort_linguistic = true` 相当于指定了 `PROC SQL` 语句的 [SORTSEQ = LINGUISTIC](https://documentation.sas.com/doc/zh-CN/pgmsascdc/9.4_3.5/sqlproc/p12ohgh32ffm6un13s7l2d5p9c8y.htm#p0i5z6z3vnmjd2n1abnsp9p3bc05) 选项。 + +**Default** : `true` + +**Usage** : + +```sas +sort_linguistic = false +``` + +--- + #### at_least **Syntax** : `true` | `false` diff --git a/docs/ass3.md b/docs/ass3.md index f70de77..613a2b1 100644 --- a/docs/ass3.md +++ b/docs/ass3.md @@ -24,6 +24,7 @@ - [arm](#arm) - [arm_by](#arm_by) - [sort_by](#sort_by) +- [sort_linguistic](#sort_linguistic) - [at_least](#at_least) - [at_least_text](#at_least_text) - [at_least_output_if_zero](#at_least_output_if_zero) @@ -321,6 +322,26 @@ sort_by = %str(#G1#FREQ(desc) #G1#TIME(desc) #G2#FREQ(desc) #G2#TIME(desc)) --- +#### sort_linguistic + +**Syntax** : `true` | `false` + +指定是否在排序时遵循当前区域设置的默认 collating sequence 选项。 + +> [!NOTE] +> +> 指定 `sort_linguistic = true` 相当于指定了 `PROC SQL` 语句的 [SORTSEQ = LINGUISTIC](https://documentation.sas.com/doc/zh-CN/pgmsascdc/9.4_3.5/sqlproc/p12ohgh32ffm6un13s7l2d5p9c8y.htm#p0i5z6z3vnmjd2n1abnsp9p3bc05) 选项。 + +**Default** : `true` + +**Usage** : + +```sas +sort_linguistic = false +``` + +--- + #### at_least **Syntax** : `true` | `false` diff --git a/src/gb18030/ass2.sas b/src/gb18030/ass2.sas index 46047e4..994659f 100644 --- a/src/gb18030/ass2.sas +++ b/src/gb18030/ass2.sas @@ -2,7 +2,7 @@ * Macro Name: ass2 * Macro Purpose: ¼ * Author: wtwang - * Version Date: 2025-06-25 + * Version Date: 2025-07-16 */ %macro ass2(indata, @@ -14,6 +14,7 @@ arm = #null, arm_by = %nrstr(&arm), sort_by = %str(#FREQ(desc) #TIME(desc)), + sort_linguistic = true, at_least = true, at_least_text = %str(ٷһAE), at_least_output_if_zero = false, @@ -34,6 +35,7 @@ * arm: -#null ʾ * arm_by: -ʽܵȡֵУֵͱʽ#null#null ʾ * sort_by: ܽݼй۲ʽϸ﷨οĵ + * sort_linguistic: ǷʱѭǰõĬ collating sequence ѡ * at_least: Ƿڻܽݼĵһٷһβ¼ͳƽ * at_least_text: at_least = true ʱܽݼĵһʾı * at_least_output_if_zero ٷһβ¼ĺϼΪʱǷȻڻܽݼ @@ -57,6 +59,7 @@ %let arm = %upcase(%sysfunc(strip(%bquote(&arm)))); %let arm_by = %upcase(%sysfunc(strip(%bquote(&arm_by)))); %let sort_by = %upcase(%sysfunc(strip(%bquote(&sort_by)))); + %let sort_linguistic = %upcase(%sysfunc(strip(%bquote(&sort_linguistic)))); %let at_least = %upcase(%sysfunc(strip(%bquote(&at_least)))); %let at_least_text = %sysfunc(strip(%superq(at_least_text))); %let at_least_output_if_zero = %upcase(%sysfunc(strip(%bquote(&at_least_output_if_zero)))); @@ -508,7 +511,7 @@ quit; /**/ - proc sql noprint; + proc sql noprint %if %bquote(&sort_linguistic) = %upcase(true) %then %do; sortseq = linguistic %end;; create table tmp_summary_formated_sorted as select * from tmp_summary_formated order by &aesoc._FLAG, diff --git a/src/gb18030/ass3.sas b/src/gb18030/ass3.sas index 8bc4287..7dfc695 100644 --- a/src/gb18030/ass3.sas +++ b/src/gb18030/ass3.sas @@ -2,7 +2,7 @@ * Macro Name: ass3 * Macro Purpose: ¼ * Author: wtwang - * Version Date: 2025-06-25 + * Version Date: 2025-07-16 */ %macro ass3(indata, @@ -16,6 +16,7 @@ arm = #null, arm_by = %nrstr(&arm), sort_by = %str(#FREQ(desc) #TIME(desc)), + sort_linguistic = true, at_least = true, at_least_text = %str(ٷһAE), at_least_output_if_zero = false, @@ -38,6 +39,7 @@ * arm: -#null ʾ * arm_by: -ʽܵȡֵУֵͱʽ#null#null ʾ * sort_by: ܽݼй۲ʽϸ﷨οĵ + * sort_linguistic: ǷʱѭǰõĬ collating sequence ѡ * at_least: Ƿڻܽݼĵһٷһβ¼ͳƽ * at_least_text: at_least = true ʱܽݼĵһʾı * at_least_output_if_zero ٷһβ¼ĺϼΪʱǷȻڻܽݼ @@ -63,6 +65,7 @@ %let arm = %upcase(%sysfunc(strip(%bquote(&arm)))); %let arm_by = %upcase(%sysfunc(strip(%bquote(&arm_by)))); %let sort_by = %upcase(%sysfunc(strip(%bquote(&sort_by)))); + %let sort_linguistic = %upcase(%sysfunc(strip(%bquote(&sort_linguistic)))); %let at_least = %upcase(%sysfunc(strip(%bquote(&at_least)))); %let at_least_text = %sysfunc(strip(%superq(at_least_text))); %let at_least_output_if_zero = %upcase(%sysfunc(strip(%bquote(&at_least_output_if_zero)))); @@ -563,7 +566,7 @@ quit; /**/ - proc sql noprint; + proc sql noprint %if %bquote(&sort_linguistic) = %upcase(true) %then %do; sortseq = linguistic %end;; create table tmp_summary_formated_sorted as select * from tmp_summary_formated order by &aesoc._FLAG, diff --git a/src/gb2312/ass2.sas b/src/gb2312/ass2.sas index 46047e4..994659f 100644 --- a/src/gb2312/ass2.sas +++ b/src/gb2312/ass2.sas @@ -2,7 +2,7 @@ * Macro Name: ass2 * Macro Purpose: ¼ * Author: wtwang - * Version Date: 2025-06-25 + * Version Date: 2025-07-16 */ %macro ass2(indata, @@ -14,6 +14,7 @@ arm = #null, arm_by = %nrstr(&arm), sort_by = %str(#FREQ(desc) #TIME(desc)), + sort_linguistic = true, at_least = true, at_least_text = %str(ٷһAE), at_least_output_if_zero = false, @@ -34,6 +35,7 @@ * arm: -#null ʾ * arm_by: -ʽܵȡֵУֵͱʽ#null#null ʾ * sort_by: ܽݼй۲ʽϸ﷨οĵ + * sort_linguistic: ǷʱѭǰõĬ collating sequence ѡ * at_least: Ƿڻܽݼĵһٷһβ¼ͳƽ * at_least_text: at_least = true ʱܽݼĵһʾı * at_least_output_if_zero ٷһβ¼ĺϼΪʱǷȻڻܽݼ @@ -57,6 +59,7 @@ %let arm = %upcase(%sysfunc(strip(%bquote(&arm)))); %let arm_by = %upcase(%sysfunc(strip(%bquote(&arm_by)))); %let sort_by = %upcase(%sysfunc(strip(%bquote(&sort_by)))); + %let sort_linguistic = %upcase(%sysfunc(strip(%bquote(&sort_linguistic)))); %let at_least = %upcase(%sysfunc(strip(%bquote(&at_least)))); %let at_least_text = %sysfunc(strip(%superq(at_least_text))); %let at_least_output_if_zero = %upcase(%sysfunc(strip(%bquote(&at_least_output_if_zero)))); @@ -508,7 +511,7 @@ quit; /**/ - proc sql noprint; + proc sql noprint %if %bquote(&sort_linguistic) = %upcase(true) %then %do; sortseq = linguistic %end;; create table tmp_summary_formated_sorted as select * from tmp_summary_formated order by &aesoc._FLAG, diff --git a/src/gb2312/ass3.sas b/src/gb2312/ass3.sas index 8bc4287..7dfc695 100644 --- a/src/gb2312/ass3.sas +++ b/src/gb2312/ass3.sas @@ -2,7 +2,7 @@ * Macro Name: ass3 * Macro Purpose: ¼ * Author: wtwang - * Version Date: 2025-06-25 + * Version Date: 2025-07-16 */ %macro ass3(indata, @@ -16,6 +16,7 @@ arm = #null, arm_by = %nrstr(&arm), sort_by = %str(#FREQ(desc) #TIME(desc)), + sort_linguistic = true, at_least = true, at_least_text = %str(ٷһAE), at_least_output_if_zero = false, @@ -38,6 +39,7 @@ * arm: -#null ʾ * arm_by: -ʽܵȡֵУֵͱʽ#null#null ʾ * sort_by: ܽݼй۲ʽϸ﷨οĵ + * sort_linguistic: ǷʱѭǰõĬ collating sequence ѡ * at_least: Ƿڻܽݼĵһٷһβ¼ͳƽ * at_least_text: at_least = true ʱܽݼĵһʾı * at_least_output_if_zero ٷһβ¼ĺϼΪʱǷȻڻܽݼ @@ -63,6 +65,7 @@ %let arm = %upcase(%sysfunc(strip(%bquote(&arm)))); %let arm_by = %upcase(%sysfunc(strip(%bquote(&arm_by)))); %let sort_by = %upcase(%sysfunc(strip(%bquote(&sort_by)))); + %let sort_linguistic = %upcase(%sysfunc(strip(%bquote(&sort_linguistic)))); %let at_least = %upcase(%sysfunc(strip(%bquote(&at_least)))); %let at_least_text = %sysfunc(strip(%superq(at_least_text))); %let at_least_output_if_zero = %upcase(%sysfunc(strip(%bquote(&at_least_output_if_zero)))); @@ -563,7 +566,7 @@ quit; /**/ - proc sql noprint; + proc sql noprint %if %bquote(&sort_linguistic) = %upcase(true) %then %do; sortseq = linguistic %end;; create table tmp_summary_formated_sorted as select * from tmp_summary_formated order by &aesoc._FLAG, diff --git a/src/gbk/ass2.sas b/src/gbk/ass2.sas index 46047e4..994659f 100644 --- a/src/gbk/ass2.sas +++ b/src/gbk/ass2.sas @@ -2,7 +2,7 @@ * Macro Name: ass2 * Macro Purpose: ¼ * Author: wtwang - * Version Date: 2025-06-25 + * Version Date: 2025-07-16 */ %macro ass2(indata, @@ -14,6 +14,7 @@ arm = #null, arm_by = %nrstr(&arm), sort_by = %str(#FREQ(desc) #TIME(desc)), + sort_linguistic = true, at_least = true, at_least_text = %str(ٷһAE), at_least_output_if_zero = false, @@ -34,6 +35,7 @@ * arm: -#null ʾ * arm_by: -ʽܵȡֵУֵͱʽ#null#null ʾ * sort_by: ܽݼй۲ʽϸ﷨οĵ + * sort_linguistic: ǷʱѭǰõĬ collating sequence ѡ * at_least: Ƿڻܽݼĵһٷһβ¼ͳƽ * at_least_text: at_least = true ʱܽݼĵһʾı * at_least_output_if_zero ٷһβ¼ĺϼΪʱǷȻڻܽݼ @@ -57,6 +59,7 @@ %let arm = %upcase(%sysfunc(strip(%bquote(&arm)))); %let arm_by = %upcase(%sysfunc(strip(%bquote(&arm_by)))); %let sort_by = %upcase(%sysfunc(strip(%bquote(&sort_by)))); + %let sort_linguistic = %upcase(%sysfunc(strip(%bquote(&sort_linguistic)))); %let at_least = %upcase(%sysfunc(strip(%bquote(&at_least)))); %let at_least_text = %sysfunc(strip(%superq(at_least_text))); %let at_least_output_if_zero = %upcase(%sysfunc(strip(%bquote(&at_least_output_if_zero)))); @@ -508,7 +511,7 @@ quit; /**/ - proc sql noprint; + proc sql noprint %if %bquote(&sort_linguistic) = %upcase(true) %then %do; sortseq = linguistic %end;; create table tmp_summary_formated_sorted as select * from tmp_summary_formated order by &aesoc._FLAG, diff --git a/src/gbk/ass3.sas b/src/gbk/ass3.sas index 8bc4287..7dfc695 100644 --- a/src/gbk/ass3.sas +++ b/src/gbk/ass3.sas @@ -2,7 +2,7 @@ * Macro Name: ass3 * Macro Purpose: ¼ * Author: wtwang - * Version Date: 2025-06-25 + * Version Date: 2025-07-16 */ %macro ass3(indata, @@ -16,6 +16,7 @@ arm = #null, arm_by = %nrstr(&arm), sort_by = %str(#FREQ(desc) #TIME(desc)), + sort_linguistic = true, at_least = true, at_least_text = %str(ٷһAE), at_least_output_if_zero = false, @@ -38,6 +39,7 @@ * arm: -#null ʾ * arm_by: -ʽܵȡֵУֵͱʽ#null#null ʾ * sort_by: ܽݼй۲ʽϸ﷨οĵ + * sort_linguistic: ǷʱѭǰõĬ collating sequence ѡ * at_least: Ƿڻܽݼĵһٷһβ¼ͳƽ * at_least_text: at_least = true ʱܽݼĵһʾı * at_least_output_if_zero ٷһβ¼ĺϼΪʱǷȻڻܽݼ @@ -63,6 +65,7 @@ %let arm = %upcase(%sysfunc(strip(%bquote(&arm)))); %let arm_by = %upcase(%sysfunc(strip(%bquote(&arm_by)))); %let sort_by = %upcase(%sysfunc(strip(%bquote(&sort_by)))); + %let sort_linguistic = %upcase(%sysfunc(strip(%bquote(&sort_linguistic)))); %let at_least = %upcase(%sysfunc(strip(%bquote(&at_least)))); %let at_least_text = %sysfunc(strip(%superq(at_least_text))); %let at_least_output_if_zero = %upcase(%sysfunc(strip(%bquote(&at_least_output_if_zero)))); @@ -563,7 +566,7 @@ quit; /**/ - proc sql noprint; + proc sql noprint %if %bquote(&sort_linguistic) = %upcase(true) %then %do; sortseq = linguistic %end;; create table tmp_summary_formated_sorted as select * from tmp_summary_formated order by &aesoc._FLAG, diff --git a/src/utf16/ass2.sas b/src/utf16/ass2.sas index b0db8cf..a4fa158 100644 Binary files a/src/utf16/ass2.sas and b/src/utf16/ass2.sas differ diff --git a/src/utf16/ass3.sas b/src/utf16/ass3.sas index 5877b55..807cd2e 100644 Binary files a/src/utf16/ass3.sas and b/src/utf16/ass3.sas differ diff --git a/src/utf8/ass2.sas b/src/utf8/ass2.sas index 302aa2f..fb1abdc 100644 --- a/src/utf8/ass2.sas +++ b/src/utf8/ass2.sas @@ -2,7 +2,7 @@ * Macro Name: ass2 * Macro Purpose: 不良事件汇总 * Author: wtwang - * Version Date: 2025-06-25 + * Version Date: 2025-07-16 */ %macro ass2(indata, @@ -14,6 +14,7 @@ arm = #null, arm_by = %nrstr(&arm), sort_by = %str(#FREQ(desc) #TIME(desc)), + sort_linguistic = true, at_least = true, at_least_text = %str(至少发生一次AE), at_least_output_if_zero = false, @@ -34,6 +35,7 @@ * arm: 变量-试验组别,#null 表示单组 * arm_by: 变量-试验组别的排序方式,可能的取值有:数值型变量、输出格式、#null,#null 表示单组 * sort_by: 汇总结果数据集中观测的排序方式,详细语法参考帮助文档 + * sort_linguistic: 是否在排序时遵循当前区域设置的默认 collating sequence 选项 * at_least: 是否在汇总结果数据集的第一行输出至少发生一次不良事件的统计结果 * at_least_text: at_least = true 时,汇总结果数据集的第一行显示的描述性文本 * at_least_output_if_zero 当至少发生一次不良事件的合计例数为零时,是否仍然在汇总结果数据集中输出 @@ -57,6 +59,7 @@ %let arm = %upcase(%sysfunc(strip(%bquote(&arm)))); %let arm_by = %upcase(%sysfunc(strip(%bquote(&arm_by)))); %let sort_by = %upcase(%sysfunc(strip(%bquote(&sort_by)))); + %let sort_linguistic = %upcase(%sysfunc(strip(%bquote(&sort_linguistic)))); %let at_least = %upcase(%sysfunc(strip(%bquote(&at_least)))); %let at_least_text = %sysfunc(strip(%superq(at_least_text))); %let at_least_output_if_zero = %upcase(%sysfunc(strip(%bquote(&at_least_output_if_zero)))); @@ -508,7 +511,7 @@ quit; /*排序*/ - proc sql noprint; + proc sql noprint %if %bquote(&sort_linguistic) = %upcase(true) %then %do; sortseq = linguistic %end;; create table tmp_summary_formated_sorted as select * from tmp_summary_formated order by &aesoc._FLAG, diff --git a/src/utf8/ass3.sas b/src/utf8/ass3.sas index 0609621..dcb0e4c 100644 --- a/src/utf8/ass3.sas +++ b/src/utf8/ass3.sas @@ -2,7 +2,7 @@ * Macro Name: ass3 * Macro Purpose: 不良事件汇总 * Author: wtwang - * Version Date: 2025-06-25 + * Version Date: 2025-07-16 */ %macro ass3(indata, @@ -16,6 +16,7 @@ arm = #null, arm_by = %nrstr(&arm), sort_by = %str(#FREQ(desc) #TIME(desc)), + sort_linguistic = true, at_least = true, at_least_text = %str(至少发生一次AE), at_least_output_if_zero = false, @@ -38,6 +39,7 @@ * arm: 变量-试验组别,#null 表示单组 * arm_by: 变量-试验组别的排序方式,可能的取值有:数值型变量、输出格式、#null,#null 表示单组 * sort_by: 汇总结果数据集中观测的排序方式,详细语法参考帮助文档 + * sort_linguistic: 是否在排序时遵循当前区域设置的默认 collating sequence 选项 * at_least: 是否在汇总结果数据集的第一行输出至少发生一次不良事件的统计结果 * at_least_text: at_least = true 时,汇总结果数据集的第一行显示的描述性文本 * at_least_output_if_zero 当至少发生一次不良事件的合计例数为零时,是否仍然在汇总结果数据集中输出 @@ -63,6 +65,7 @@ %let arm = %upcase(%sysfunc(strip(%bquote(&arm)))); %let arm_by = %upcase(%sysfunc(strip(%bquote(&arm_by)))); %let sort_by = %upcase(%sysfunc(strip(%bquote(&sort_by)))); + %let sort_linguistic = %upcase(%sysfunc(strip(%bquote(&sort_linguistic)))); %let at_least = %upcase(%sysfunc(strip(%bquote(&at_least)))); %let at_least_text = %sysfunc(strip(%superq(at_least_text))); %let at_least_output_if_zero = %upcase(%sysfunc(strip(%bquote(&at_least_output_if_zero)))); @@ -563,7 +566,7 @@ quit; /*排序*/ - proc sql noprint; + proc sql noprint %if %bquote(&sort_linguistic) = %upcase(true) %then %do; sortseq = linguistic %end;; create table tmp_summary_formated_sorted as select * from tmp_summary_formated order by &aesoc._FLAG,