如何使用劳特巴赫练习脚本 return 来自被调用脚本的值
how to return a value from a called script with lauterbach practice scripts
我尝试遵循 lib.cmm 脚本,从第 210-214 行到 return 从 DO 调用脚本到我的调用脚本的值,但在我的调用脚本中得到 'stack underflow' RETURN xx 声明。我调用的脚本是 t32/demo/practice/dialogs/dialog_list.cmm.
的编辑版本
我想做的应该很简单,但我无法确定 how/why 我所做的不起作用,也无法确定它与 lib.cmm 中的 ENTERDLG 函数有何不同(在术语中return 个值)。
这是我的两个文件的内容:
来电者:
area.reset
LOCAL &GPU_choice
DO choose_CPU.cmm ENTERDLG
ENTRY %LINE &CPU_choice
print "cpu = &CPU_choice"
被叫方:
ENTERDLG:
LOCAL &CPU_choice
DIALOG
(&+
HEADER "Flash Programming"
POS 0. 0. 25. 1.
TEXT ""
POS 1. 0. 23. 1.
TEXT "CPU Type:"
POS 1. 1. 23. 3.
OptionA.SEL: LISTBOX "CPU1,CPU2" ""
;buttons OK (Default) and Cancel
POS 1. 11. 10. 1.
DEFBUTTON "OK" "CONTinue"
POS 14. 11. 10. 1.
BUTTON "Cancel" "GOTO cancel"
;define action when window is closed
CLOSE "GOTO cancel"
)
;set default selections
DIALOG.SET OptionA.SEL "CPU1"
;STOP command halts script execution
STOP
;script will continue here when "OK" button is clicked
;get selection
&CPU_choice=DIALOG.STRING(OptionA.SEL);
;close dialog window
DIALOG.END
RETURN &CPU_choice <===============this line gives "stack underflow error"
ENDDO
;script continues here when Cancel is clicked"
cancel:
DIALOG.END
DIALOG.OK "Cancelled"
ENDDO
RETURN 用于 return 从在同一脚本中使用 GOSUB 调用的例程获取值。
给return一个值给脚本,它用DO调用当前脚本,你必须用ENDDO命令传递结果。
因此,在您的示例中,将“RETURN &CPU_choice”替换为:
ENDDO &CPU_choice
另见 https://www.lauterbach.com/reference_card_web.pdf(中间第 2 页)
我尝试遵循 lib.cmm 脚本,从第 210-214 行到 return 从 DO 调用脚本到我的调用脚本的值,但在我的调用脚本中得到 'stack underflow' RETURN xx 声明。我调用的脚本是 t32/demo/practice/dialogs/dialog_list.cmm.
的编辑版本我想做的应该很简单,但我无法确定 how/why 我所做的不起作用,也无法确定它与 lib.cmm 中的 ENTERDLG 函数有何不同(在术语中return 个值)。
这是我的两个文件的内容:
来电者:
area.reset
LOCAL &GPU_choice
DO choose_CPU.cmm ENTERDLG
ENTRY %LINE &CPU_choice
print "cpu = &CPU_choice"
被叫方:
ENTERDLG:
LOCAL &CPU_choice
DIALOG
(&+
HEADER "Flash Programming"
POS 0. 0. 25. 1.
TEXT ""
POS 1. 0. 23. 1.
TEXT "CPU Type:"
POS 1. 1. 23. 3.
OptionA.SEL: LISTBOX "CPU1,CPU2" ""
;buttons OK (Default) and Cancel
POS 1. 11. 10. 1.
DEFBUTTON "OK" "CONTinue"
POS 14. 11. 10. 1.
BUTTON "Cancel" "GOTO cancel"
;define action when window is closed
CLOSE "GOTO cancel"
)
;set default selections
DIALOG.SET OptionA.SEL "CPU1"
;STOP command halts script execution
STOP
;script will continue here when "OK" button is clicked
;get selection
&CPU_choice=DIALOG.STRING(OptionA.SEL);
;close dialog window
DIALOG.END
RETURN &CPU_choice <===============this line gives "stack underflow error"
ENDDO
;script continues here when Cancel is clicked"
cancel:
DIALOG.END
DIALOG.OK "Cancelled"
ENDDO
RETURN 用于 return 从在同一脚本中使用 GOSUB 调用的例程获取值。
给return一个值给脚本,它用DO调用当前脚本,你必须用ENDDO命令传递结果。
因此,在您的示例中,将“RETURN &CPU_choice”替换为:
ENDDO &CPU_choice
另见 https://www.lauterbach.com/reference_card_web.pdf(中间第 2 页)