Я программирую на SAS и хочу написать XML-файл для создания, используя LUA
Итак, сначала я запускаю proc LUA
и передаю имя файла;
%let file = \\ourCompany\ourTeam\ourProject\myFile.xml;
proc lua restart;
submit;
local file_name = sas.symget("file")
print (file_name)
- Далее, Я открываю файл для записи, пишу что-то и закрываю его
print('DEBUG: before opening')
file = io.open (file_name, "w")
print('DEBUG: after opening, before writing')
file:write ("<test/>", "\n")
print('DEBUG: after writing, before closing')
file:close()
print('DEBUG: after closing')
- и, конечно, останавливаю LUA
endsubmit;
run;
/ * Это работает: файл создается с этим содержимым
<test/>
Но это приводит к следующим сообщениям в журнале
NOTE: Lua initialized.
\\ourCompany\ourTeam\ourProject\myFile.xml
DEBUG: before opening
DEBUG: after opening, before writing
DEBUG: after writing, before closing
ERROR: An exception has been encountered.
Please contact technical support and provide them with the following traceback information:
The SAS task name is [LUA (2)]
ERROR: Read Access Violation LUA (2)
Exception occurred at (89400CB7)
Task Traceback
Address Frame (DBGHELP API Version 4.0 rev 5)
00007FFD89400CB7 000000000862F1F0 ntdll:RtlAllocateHeap+0x27
00000000084D2ACD 000000000862F1F8 sasplua:tkvercn1+0x81A8D
00000000084D0E7F 000000000862F250 sasplua:tkvercn1+0x7FE3F
00000000084D0D17 000000000862F280 sasplua:tkvercn1+0x7FCD7
00000000084CF711 000000000862F2B0 sasplua:tkvercn1+0x7E6D1
0000000008462609 000000000862F300 sasplua:tkvercn1+0x115C9
0000000008474A7D 000000000862F410 sasplua:tkvercn1+0x23A3D
0000000008485C7E 000000000862F530 sasplua:tkvercn1+0x34C3E
0000000008474349 000000000862F570 sasplua:tkvercn1+0x23309
00000000084788A4 000000000862F8D0 sasplua:tkvercn1+0x27864
0000000008478A9D 000000000862F940 sasplua:tkvercn1+0x27A5D
0000000008469746 000000000862F9A0 sasplua:tkvercn1+0x18706
00000000084523A2 000000000862F9F0 sasplua:tkvercn1+0x1362
000000000845224E 000000000862FB10 sasplua:tkvercn1+0x120E
00000000084529F4 000000000862FBF0 sasplua:tkvercn1+0x19B4
0000000001A489DB 000000000862FBF8 sashost:Main+0x10EBB
0000000001A4E61D 000000000862FF50 sashost:Main+0x16AFD
00007FFD875613F2 000000000862FF58 KERNEL32:BaseThreadInitThunk+0x22
00007FFD893E54F4 000000000862FFD0 ntdll:RtlUserThreadStart+0x34
NOTE: The SAS System stopped processing this step because of errors.
Я понятия не имею, является ли это чисто проблемой LUA или чем-то связанным с proc LUA
в SAS.
Поскольку последнее сообщение отладки не печатается, проблема возникает при закрытии файла.Я попробовал несколько различных опций для команды open
и попытался удалить io.write
, но это не помогло.