序號 |
名稱 |
|
功能說明 |
|
語法 & 舉例 |
01 |
PRINT/PRINTF |
|
格式化輸出(PRINTF 用於輸出到文件)。 ---------------------------------------------------------------------------------- PRINT [, Expression1, ..., Expressionn] ---------------------------------------------------------------------------------- PRINTF [, Unit, Expression1, ..., Expressionn] ---------------------------------------------------------------------------------- Keywords: [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, /IMPLIED_PRINT] [, MONTHS=string_array{12 names}] [, /STDIO_NON_FINITE] ---------------------------------------------------------------------------------- ◈ Unit:欲輸出的文件單元(邏輯設備號) ◈ FORMAT=value:格式化控制
|
|
IDL> PRINT, 'IDL is fun.'
IDL is fun.
|
02 |
READ/READF |
|
格式化輸入(READF 用於文件的讀取)。 ---------------------------------------------------------------------------------- READ, [Prompt,] Var1, ..., Varn ---------------------------------------------------------------------------------- READF, [Prompt,] Unit, Var1, ..., Varn ---------------------------------------------------------------------------------- Keywords: [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, MONTHS=string_array{12 names}] [, PROMPT=string] ---------------------------------------------------------------------------------- ◈ Unit:欲讀取的文件單元(邏輯設備號) ◈ FORMAT=value:格式化控制 ◈ PROMPT=string:提示字符串
|
|
IDL> B=''
IDL> READ, B, PROMPT='Enter Name: '
Enter Name: ALEX
IDL> B
ALEX
|
03 |
READS |
|
從字符串中讀取格式化數據。 ---------------------------------------------------------------------------------- READS, Input, Var1, ..., Varn [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, MONTHS=string_array{12 names}] ---------------------------------------------------------------------------------- ◈ Input:讀取的字符串 ◈ Vari:賦值的變量 ◈ FORMAT=value:格式化控制
|
|
IDL> str='abc100def'
IDL> a=''
IDL> b=0
IDL> c=''
IDL> READS,str,a,b,c,FORMAT='(A3,I3,A3)'
IDL> PRINT,a,b,c
abc 100def
IDL> HELP,a,b,c
A STRING = 'abc'
B INT = 100
C STRING = 'def'
|
04 |
Format Codes |
|
格式化控制。 ---------------------------------------------------------------------------------- [n]FC[+][-][width] ---------------------------------------------------------------------------------- ◈ n:代表格式控制符的重復次數,默認為1次,所謂重復次數是指在一行中格式控制的次數,n=1,表示每行只顯示一個變量,n=2,表示每行顯示兩個變量,n≥變量總數,單行顯示 ◈ FC:Format Codes,格式控制符 ◈ +:正數前加“+”,僅對數字格式化輸出有效(包括0) ◈ -:字符串和數字左對齊,默認是右對齊 ◈ width:數字或字符的寬度
|
|
IDL> ;格式符控制重復三次,一行顯示三個
IDL> PRINT, FORMAT='(3I6)', [0, 10, 20]
0 10 20
-----------------------------------------
IDL> ;6個字符寬度,非負數前加“+”
IDL> PRINT, FORMAT='(I+6)', [-10, 0, 10]
-10
+0
+10
-----------------------------------------
IDL> ;6個字符寬度,左對齊
IDL> PRINT, FORMAT='(I-6)', [-10, 0, 10]
-10
0
10
-----------------------------------------
IDL> ;格式符寬度與字符串寬不符,字符串短則右對齊輸出,長則截斷
IDL> PRINT, FORMAT='(A4)', ['ABCDEF', 'AB']
ABCD
AB
-----------------------------------------
IDL> ;格式符寬度與數字長度不符,數字短則右對齊輸出,長則輸出為“*”
IDL> PRINT, FORMAT='(I3)', [12, 123, 1234]
12
123
***
-----------------------------------------
IDL> ;格式輸出數字時前加0,數字短則左側自動補0
IDL> PRINT, FORMAT='(I03)', [12, 123, 1234]
012
123
***
-----------------------------------------
IDL> ;格式符寬度為0,則依照原始格式輸出
IDL> PRINT, FORMAT='(I0)', [12, 123, 1234]
12
123
1234
-----------------------------------------
IDL> ;總寬度為6,數字寬度為4,不足的用0填充
IDL> PRINT, FORMAT='(I6.4)', [12, 123, 1234]
0012
0123
1234
|
|
FC —— 字符、字符串及整數 ---------------------------------------------------------------------------------- [n]A[-][w] [n]I[+][-][w][.m] [n]B[-][w][.m] [n]O[-][w][.m] [n]Z[-][w][.m] ---------------------------------------------------------------------------------- ◈ A:字符及字符串的格式化輸入輸出 ◈ I:整數輸入輸出時的 十進制 ◈ B:整數輸入輸出時的 二進制 ◈ O:整數輸入輸出時的 八進制 ◈ Z:整數輸入輸出時的 16進制 ◈ w:輸入輸出寬度 ◈ m:無空格的寬度,無數字部分由 0 填充
|
|
FC —— 輸入輸出位置控制 ---------------------------------------------------------------------------------- Tn TLn TRn nX ---------------------------------------------------------------------------------- ◈ T:變量輸出的絕對位置,n 表示位置值 ◈ TL:從當前位置向左移動,n 表示向左移動的字符數 ◈ TR:從當前位置向右移動,n 表示向右移動的字符數 ◈ X:空格輸出,n 是空格的個數
|
|
IDL> ;絕對位置為6,為2的時候,將原數據替換
IDL> PRINT, FORMAT='("AB", T6, "CD")'
AB CD
IDL> PRINT, FORMAT='("AB", T2, "CD")'
ACD
-------------------------------------------------
IDL> ;左右移動輸出
IDL> PRINT, FORMAT='("AB", 2X, "CD", 4X, "EF")'
AB CD EF
IDL> PRINT, FORMAT='("AB", "CD", TL2, "EF")'
ABEF
IDL> PRINT, FORMAT='("AB", "CD", TR4, "EF")'
ABCD EF
|
|
FC —— 浮點數格式符(F、D、E、G) ---------------------------------------------------------------------------------- [n]F[+][-][w][.d] [n]D[+][-][w][.d] [n]E[+][-][w][.d] [n]G[+][-][w][.d] ---------------------------------------------------------------------------------- ◈ F:以定點計數法輸出浮點型(單精度) ◈ D:以定點計數法輸出浮點型(雙精度) ◈ E:指數形式(科學格式)輸出 ◈ G:根據數據大小自動選擇科學格式E或F格式輸出 ◈ w:字符寬度 ◈ d:四舍五入的精度 |
|
IDL> ;浮點數顯示,精度,科學計數法
IDL> PRINT, FORMAT='(F10.4)', [11.22225, 115486.3, 2.0]
11.2222
**********
2.0000
IDL> PRINT, FORMAT='(E15.4)', [11.22225, 115486.3, 2.0]
1.1222E+001
1.1549E+005
2.0000E+000
IDL> PRINT, FORMAT='(G12.4)', [11.22225, 115486.3, 2.0]
11.22
1.155E+005
2.000
|
|
FC —— C()日期與時間輸出 ---------------------------------------------------------------------------------- [n]C([c0,c1,...,cx]) CMOA[-][w]、CMoA[-][w]、CmoA[-][w] CMOI[+][-][w][.m] CDI[+][-][w][.m] CYI[+][-][w][.m] CHI[+][-][w][.m]、ChI[+][-][w][.m] CMI[+][-][w][.m] CSI[+][-][w][.m] CSF[+][-][w][.d] CDWA[-][w]、CDwA[-][w]、CdwA[-][w] CAPA[-][w]、CApA[-][w]、CapA[-][w] ---------------------------------------------------------------------------------- ◈ CMOA:C-MONTH-A,字符串形式輸出月,Cmoa-dec、CMoA-Dec、CMOA-DEC ◈ CMOI:C-MONTH-I,數字形式輸出月 ◈ CDI:C-DAY-I,數字形式輸出日 ◈ CYI:C-YEAR-I,數字形式輸出年 ◈ CHI:C-HOUR-I,數字形式輸出小時,CHI-14(24小時制)、ChI-2(12小時制) ◈ CMI:C-MINUTE-I,數字形式輸出分鍾 ◈ CSI:C-SECOND-I,數字形式輸出秒 ◈ CSF:C-SECOND-F,浮點數形式輸出秒 ◈ CDWA:C-DAY-WEEK-A,字符串形式輸出星期,cdwa-sun、CDwa-Sun、CDWA-SUN ◈ CAPA:C-AM-PM-A,字符串形式輸出上午或下午,capa-pm、CApa-Pm、CAPA-PM |
|
IDL> ;日期輸出,下面補0
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CYI, "-", CMOI, "-", CDI))'
2016- 8-26
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CHI, ":", CMI, ":", CSI))'
14:35:56
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CYI, "-", CMOI02, "-", CDI02))'
2016-08-26
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CHI02, ":", CMI02, ":", CSI02))'
14:35:56
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(CHI4.3, ":", CMI5.4, ":", CSI0.3))'
014: 0035:56
IDL> PRINT, SYSTIME(/JULIAN),
FORMAT='(C(ChI4.3, ":", CMI5.4, ":", CSI0.3))'
002: 0035:56
|
05 |
OPENR/OPENU/OPENW |
|
打開文件。 OPENR:打開讀文件,文件已經存在 OPENW:打開寫文件,文件不存在新建文件,文件存在則刪除原內容 OPENU:打開更新文件,文件已經存在 ---------------------------------------------------------------------------------- OPENR, Unit, File ---------------------------------------------------------------------------------- OPENW, Unit, File ---------------------------------------------------------------------------------- OPENU, Unit, File ---------------------------------------------------------------------------------- Keywords: [, /APPEND | , /COMPRESS] [, BUFSIZE={0 | 1 | value>512}] [, /DELETE] [, ERROR=variable] [, /F77_UNFORMATTED] [, /GET_LUN] [, /MORE] [, /NOEXPAND_PATH] [, /STDIO] [, /SWAP_ENDIAN] [, /SWAP_IF_BIG_ENDIAN] [, /SWAP_IF_LITTLE_ENDIAN] [, /VAX_FLOAT] [, WIDTH=value] [, /XDR] ---------------------------------------------------------------------------------- ◈ Unit:欲打開的文件單元(邏輯設備號) ◈ File:文件的路徑,字符串 ◈ APPEND:指針定位到文件的最后,准備添加信息,默認情況指針定位到文件的最開始 ◈ GET_LUN:設置此關鍵字,將調用 GET_LUN 過程,在文件還沒打開之前就對 Unit 賦值
|
|
;在文件中添加新內容
file="D:\IDL\blog\1.txt"
OPENW, lun, file, /APPEND, /GET_LUN
PRINTF, lun, "alexbnlee"
FREE_LUN, lun
---------------------------------------
;讀取文件中的內容,一行一行讀取,並輸出
str=''
file="D:\IDL\blog\1.txt"
OPENR, lun, file, /GET_LUN
WHILE(~EOF(lun)) DO BEGIN
READF, lun, str
PRINT, str
ENDWHILE
FREE_LUN, lun
|
06 |
EOF |
|
測試指定文件單元是否到達文件結尾,返回布爾值。 ---------------------------------------------------------------------------------- Result = EOF(Unit) ---------------------------------------------------------------------------------- ◈ Unit:文件單元(邏輯設備號) |
|
|
07 |
GET_LUN |
|
獲取一個邏輯設備號。 ---------------------------------------------------------------------------------- GET_LUN, Unit ---------------------------------------------------------------------------------- ◈ Unit:文件單元(邏輯設備號) |
|
|
08 |
FREE_LUN |
|
釋放一個邏輯設備號並關閉文件。 ---------------------------------------------------------------------------------- FREE_LUN [, Unit1, ..., Unitn] [, EXIT_STATUS=variable] [, /FORCE] ---------------------------------------------------------------------------------- ◈ Uniti:文件單元(邏輯設備號) |
|
file="D:\IDL\blog\1.txt"
OPENR, lun, file, /GET_LUN
;獲取文件的總字符數
SKIP_LUN, lun, /EOF, TRANSFER_COUNT=n_bytes
PRINT, n_bytes
;指針定位到文件開始
POINT_LUN, lun, 0
;獲取文件的總行數
SKIP_LUN, lun, /LINES, /EOF, TRANSFER_COUNT=n_lines
PRINT, n_lines
FREE_LUN, lun
|
09 |
POINT_LUN |
|
設置或者獲取指定文件的文件指針位置。 ---------------------------------------------------------------------------------- POINT_LUN, Unit, Position ---------------------------------------------------------------------------------- ◈ Unit:文件單元(邏輯設備號) ◈ Position:移動指針的字節數
|
10 |
SKIP_LUN |
|
移動文件指針來讀取文件。 ---------------------------------------------------------------------------------- SKIP_LUN, FromUnit, [, Num] [, /EOF] [, /LINES] [, /TRANSFER_COUNT=variable] ---------------------------------------------------------------------------------- ◈ FromUnit:文件單元(邏輯設備號) ◈ Num:忽略的數目 ◈ EOF:直接跳到文件結尾 ◈ LINES:按照行來計數,默認按照字節來計數 ◈ TRANSFER_COUNT=variable:記錄忽略的數目,即 Num 的值,對於設置 EOF 而言,可以計算文件總的字符數或者總的行數
|
11 |
CLOSE |
|
關閉文件。 ---------------------------------------------------------------------------------- CLOSE[, Unit1, ..., Unitn] [, /ALL] [, EXIT_STATUS=variable] [, /FILE] [, /FORCE] ---------------------------------------------------------------------------------- ◈ Uniti:要關閉的文件單元(邏輯設備號) ◈ ALL:關閉所有打開的文件單元(邏輯設備號)
|
|
|
12 |
READU |
|
讀取二進制文件。 ---------------------------------------------------------------------------------- READU, Unit, Var1, ..., Varn [, TRANSFER_COUNT=variable] ---------------------------------------------------------------------------------- ◈ Unit:欲讀取的文件單元(邏輯設備號) ◈ Vari:接收數據的變量名 |
|
|
13 |
WRITEU |
|
寫入二進制文件。 ---------------------------------------------------------------------------------- WRITEU, Unit, Expr1 ..., Exprn [, TRANSFER_COUNT=variable] ---------------------------------------------------------------------------------- ◈ Unit:欲讀取的文件單元(邏輯設備號) ◈ Vari:接收數據的變量名
|
|
|
|
|
|
|
|
|