参考: Programming and Control


序号 类名称  

功能说明

  语法 & 举例
01 DEFSYSV  

====<<<< Description >>>>====

新建一个系统变量。
可以跨程序使用,但是前提是所在程序需要“运行”一次才行。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

DEFSYSV, Name, Value [, Read_Only] [, EXISTS=variable] [, /TEST]

----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  Name:新建系统变量的名称,一般大写并以感叹号开头,例如:!RUNDIR。
◈  Value:初始化的值,可以是数字、字符串、数组或结构体。
◈  Read_Only:设置非零的话为只读,默认可以修改
◈  EXISTS:将此关键字设置为一个变量,此变量返回是否这个名字的系统变量已经存在,1为存在,0为不存在。
◈  EXISTS:设置此关键字,仅当此系统变量不存在的时候创建。

 

IDL> DEFSYSV, '!XYZ', EXISTS = i
IDL> IF i EQ 1 THEN PRINT, '!XYZ exists' ELSE PRINT, $
> '!XYZ does not exist'
!XYZ does not exist
02 EXECUTE  

====<<<< Description >>>>====

用来执行字符串所表达的可编译的函数。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Result = EXECUTE(String [, CompileFlags] [, QuietExecution])
----------------------------------------------------------------------------------

====<<<< Return Value >>>>====

如果编译并执行了则返回 1,如果发生错误则返回 0。
----------------------------------------------------------------------------------

====<<<<  Parameters >>>>====

◈  String:表达式。
◈  CompileFlags:0、1、2
  0:默认值,正常输出错误,没有赋值给变量的表达式会报错
  1:不输出错误、不输出结果
  2:不输出错误、输出结果
◈  QuietExecution:设置此关键字,不输出错误。

 
IDL> void = execute('a=abs(-5)')
IDL> print, a
5 IDL> void = execute('abs(-5)', 2)
5
IDL> print, void
1
03 EXIT  

====<<<< Description >>>>====

退出 IDL。不能取消。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

EXIT [, /NO_CONFIRM] [, STATUS=code]
----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  NO_CONFIRM:不显示任何确认框,否则会提示“是否保存”。

   
04 GET_LOGIN_INFO  

====<<<< Description >>>>====

返回运行 IDL 电脑的名称以及用户的登录名。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Result = GET_LOGIN_INFO()
----------------------------------------------------------------------------------

====<<<<  Return Value >>>>====

返回一个匿名结构体,包括 MACHINE_NAME 和 USER_NAME。

 
IDL> get_login_info()
{
MACHINE_NAME: "JGZX-BNLI-B1",
USER_NAME: "McDelfino"
}
05 HELP  

====<<<< Description >>>>====

提供帮助信息。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

HELP, Expression1, ..., Expressionn, /BREAKPOINTS, /BRIEF, /DEVICE, /DLM, /FILES, /FULL, /FUNCTIONS, /HEAP_VARIABLES, /KEYS, /LAMBDA, /LAST_MESSAGE, LEVEL=value, /MEMORY, /MESSAGES, NAMES=string_of_variable_names, /OBJECTS, OUTPUT=variable, /PATH_CACHE, /PREFERENCES, /PROCEDURES, /RECALL_COMMANDS, /ROUTINES, /SHARED_MEMORY, /SOURCE_FILES, /STRUCTURES, /SYSTEM_VARIABLES, /TRACEBACK

----------------------------------------------------------------------------------

====<<<< Parameters >>>>====

◈  Expression:不选择关键字的情况下提供基本信息。
◈  STRUCTURE:更好的显示结构的内容。

 
IDL> a = 2
IDL> b = 'a'
IDL> help, a, b
A INT = 2
B STRING = 'a'
IDL> help, get_login_info(), /structure
** Structure <cf77d80>, 2 tags, length=32, data length=32, refs=1:
MACHINE_NAME STRING 'JGZX-BNLI-B1'
USER_NAME STRING 'McDelfino'
06 TAG_NAMES  

====<<<< Description >>>>====

返回结构体成员名字的字符串数组。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Result = TAG_NAMES( Expression [, /STRUCTURE_NAME] )

----------------------------------------------------------------------------------

====<<<< Return Value >>>>====

返回结构体成员名称或者结构体的名称。
----------------------------------------------------------------------------------

====<<<<  Parameters >>>>====

◈  Expression:结构体。
◈  STRUCTURE_NAME:设置此关键字,返回结构体名称,对于匿名结构体而言返回值为空。

 
IDL> s1 = {a:1, b:INDGEN(5), c:'hello'}
IDL> PRINT, TAG_NAMES(s1)
A B C
IDL> PRINT, TAG_NAMES(s1, /structure_name) IDL> print, tag_names(get_login_info())
MACHINE_NAME USER_NAME
IDL> s2 = {s2name, a:1, b:INDGEN(5), c:'hello'}
IDL> PRINT, TAG_NAMES(s2, /structure_name)
S2NAME
07 ROUTINE_FILEPATH  

====<<<< Description >>>>====

返回当前正在编译的过程或函数的完整路径。
----------------------------------------------------------------------------------

====<<<< Syntax >>>>====

Result = ROUTINE_FILEPATH( [Routine] [, /EITHER] [, /IS_FUNCTION] )

----------------------------------------------------------------------------------

====<<<< Return Value >>>>====

返回程序所在完整路径的字符串或字符串数组。
----------------------------------------------------------------------------------

====<<<<  Parameters >>>>====

◈  Routine:程序名称,如果设置为函数的话,需要指定IS_FUNCTION or EITHER keyword。不赋值的话,返回当前程序的路径。
◈  EITHER:过程和函数的路径均获取。
◈  IS_FUNCTION:只搜索函数,不搜索过程。

 
;获取当前程序的路径
PRINT, FILE_DIRNAME(ROUTINE_FILEPATH())
;获取当前工作空间的路径
CD, current=c
PRINT, c
-------          

【298】◀▶ IDL 系统过程&函数的更多相关文章

  1. win32编程中消息循环和WndProc()窗口过程函数

    原文地址:https://blog.csdn.net/zxxSsdsd/article/details/45504383 在win32程序的消息循环函数中  while (GetMessage (&a ...

  2. windows窗口过程函数名词解析

    windows窗口过程函数名词解析 LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam) 1. LR ...

  3. win32程序通过LPCREATESTRUCT中的lpCreateParams传递参数给窗口过程函数

    win32窗口程序中如果需要给窗口过程函数传递自定义参数,可以通过LPCREATESTRUCT结构体中的lpCreateParams进行传递. 创建窗口实例函数: m_hWnd = CreateWin ...

  4. [javascript]获取系统时间函数

    var oDate=new Date(); //初始化系统时间函数 alert(oDate.getHours()); //获取时 alert(oDate.getMinutes()); //获取分 al ...

  5. MFC如何添加系统消息处理函数?

    http://zhidao.baidu.com/question/318026804.html 在MFC程序中,我们并不经常直接调用Windows API,而是从MFC类创建对象并调用属于这些对象的成 ...

  6. Delphi过程函数传递参数的八种方式

    今天一同事问我为什么有些过程函数里面有Var而有些没有,不解,遂到网上百度,得解.快哉,快哉. 在Delphi过程.函数中传递参数几个修饰符为Const.Var.Out.另一种不加修饰符的为默认按值传 ...

  7. 在中断服务函数中使用FreeRTOS系统延时函数vTaskDelay导致看门狗复位的情况

    @2019-04-09 [问题] 控制程序工作一段时间异常重启 [分析] 经定位分析重启原因为看门狗复位导致 [解决] 经排查发现在中断服务函数中使用了FreeRTOS的系统时延函数vTaskDela ...

  8. Delphi过程函数传递参数的几种方式

    Delphi过程函数传递参数的几种方式  在Delphi过程.函数中传递参数几个修饰符为Const.Var.Out. 另一种不加修饰符的为默认按值传递参数. 一.默认方式以值方式传递参数 proced ...

  9. Linux下系统时间函数、DST等相关问题总结(转)

    Linux下系统时间函数.DST等相关问题总结 下面这个结构体存储了跟时区相关的位移量(offset)以及是否存在DST等信息,根据所在的时区信息,很容易找到系统时间与UTC时间之间的时区偏移,另外根 ...

随机推荐

  1. python 时间日期处理

    refer to : http://www.wklken.me/posts/2015/03/03/python-base-datetime.html#datetime-string http://ww ...

  2. lapis 路由

    1. 路由以及url 模式 参考如下: local lapis = require("lapis") local app = lapis.Application() app:mat ...

  3. 高并发的epoll+线程池,线程池专注实现业务

    我们知道,服务器并发模型通常可分为单线程和多线程模型,这里的线程通常是指“I/O线程”,即负责I/O操作,协调分配任务的“管理线程”,而实际的请求和任务通常交由所谓“工作者线程”处理.通常多线程模型下 ...

  4. 搭建Spring Cloud+Dubbo

    公司要测试一下zipkin是否可以跟踪全流程,项目的架构比较复杂,不要问我为什么,基本架构如下:前端门户,调用spring cloud组件,spring cloud在调用dubbo,这样一套流程.于是 ...

  5. ZooKeeper+Kafka+Storm

    http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html

  6. CentOS 6.5 下MySql主从、主主配置

    参考网站: http://blog.csdn.net/faye0412/article/details/6280761 http://blog.csdn.net/kk185800961/article ...

  7. sqlserver2008事务日志已满

    --将数据库设为简单模式.日志文件自动断开. alter database CustomerInfoProject set recovery simple --查看日志文件状况  use Custom ...

  8. MOSS 2013研究系列---列表的资源限制

    MOSS2010 以后,对列表的条目数做了一些限制,大量的将数据存储在列表中,会降低列表的运行效能,因此,MOSS中对列表默认有了一个阀值,默认是5000条数据,当你存储的数据多余5000条的时候,用 ...

  9. golang里面检测对象是否实现了接口的方法

    写法有点怪异,记一下吧 _, implemented := this.delegate.(IGenTcpServerDelegate) if implemented { this.delegate.G ...

  10. 洛谷八连测R4

    1.逃避 https://www.luogu.org/problemnew/show/T14561 注意: 1.输入时需要用EOF判断,否则会TLE. 2.用flag判断字符是不是每一句首字母. 3. ...