📄 logmon.rxl
字号:
/*****************************************************************************//* Software Testing Automation Framework (STAF) *//* (C) Copyright IBM Corp. 2001 *//* *//* This software is licensed under the Common Public License (CPL) V1.0. *//*****************************************************************************//******************************************************************************//* Common functions for the STAF Log, Remote Log, and Monitor programs *//* Version: 1.00 *//******************************************************************************/#Function All#From LogMon Import ManageDir FileStatus STAFAbort STAFExit#From LogMon Import LogMonErrorText ConvertSeconds ExpandLevel ResolveLevel#From LogMon Import ResolveVariable InitializeLogOption DisplayOldVarErrorMessage#End/******************************************************************************//* ManageDir - If directory does not exist, then create it, one level at a *//* time. If e:\a\b\c\d is passed, creates e:\a, e:\a\b, e:\a\b\c, and *//* finally e:\a\b\c\d *//* Arguments: directory delimiter *//* Returns : status */*******************************************************************************/#Function ManageDirManageDir: parse arg MD_dir, MD_delimit MD_partdir = '' MD_sep = '' MD_totlen = dbwidth(MD_dir) MD_rc = 0 if pos(":",MD_dir) = 0 then /* Make sure a drive is specified */ do MD_rc = errorDrive errorBuffer = errorDrive.!text end else do while MD_dir > '' MD_endloc = pos(MD_delimit,MD_dir) if MD_endloc > 0 then MD_endloc = MD_endloc -1 else MD_endloc = MD_totlen MD_partdir = MD_partdir || MD_sep || substr(MD_dir,1,MD_endloc) MD_rc = SysFileTree(MD_partdir,MD_stem,D) if pos(MD_delimit,MD_partdir) > 0 then do if MD_stem.0 = 0 then MD_rc = SysMkDir(MD_partdir) /* Create dir */ if MD_rc > 0 then do MD_rc = errorMakeDir errorBuffer = errorMakeDir.!text || MD_partdir leave end end MD_dir = substr(MD_dir,MD_endloc + 2) MD_sep = MD_delimit endRETURN MD_rc#End/******************************************************************************//* FileStatus - Check the status of a file (complete path) *//* Arguments: file - name of file to open *//* maxwait - retry count, < 1 or > 30 defaults to 5 *//* openfor - read, write, null/anything else is read/write *//* Returns : 0 if file exists and is READY *//* 1 if file does not exist *//* 2 if file exists but is not READY */*******************************************************************************/#Function FileStatusFileStatus: parse arg FS_file, FS_maxwait, FS_openfor FS_status = '' FS_rc = 0 FS_openfor = translate(FS_openfor) if FS_openfor = "READ" then FS_openfor = "open read" else if FS_openfor = "WRITE" then FS_openfor = "open write" else FS_openfor = "open" call SysFileTree FS_file, FS_stem, 'F' /* Check if file exists */ if FS_stem.0 = 0 then do /* File not found */ FS_rc = 1 errorBuffer = STAFError.!FileOpenError.!text || lineSep || FS_file end else /* File exists, see if it is READY */ do do FS_maxwait /* Repeat maxwait times or file READY */ FS_status = stream(FS_file, "c", FS_openfor) if FS_status = "READY:" then leave /* File READY */ call SysSleep 1 end if FS_status \= "READY:" then do FS_rc = 2 errorBuffer = "File not READY: " || lineSep || FS_file end endRETURN FS_rc#End/******************************************************************************//* STAFEXIT - Exit from program. *//* Arguments: exit string *//* Returns : none *//******************************************************************************/#Function STAFExitSTAFExit: parse arg SE_return_string if infile > '' then call stream infile, "c", "close" if logcopied = 1 then call SysFileDelete copyfile call STAFUnRegisterEXIT SE_return_string#End/******************************************************************************//* STAFABORT - Abort from program. *//* Arguments: none *//* Returns : none *//******************************************************************************/#Function STAFAbortSTAFAbort: if infile > '' then call stream infile, "c", "close" if logcopied = 1 then call SysFileDelete copyfile call STAFUnRegisterEXIT#End/******************************************************************************//* LogMonErrorText - Log and Monitor error codes/text *//* Arguments: none *//* Returns : none *//******************************************************************************/#Function LogMonErrorTextLogMonErrorText: errorBadNum = 4001 errorBadNUm.!text = "Invalid number: " errorDate = 4002 errorDate.!text = "Invalid date: " errorTime = 4003 errorTime.!text = "Invalid time: " errorLevel = 4004 errorLevel.!text = "Invalid error level" errorDrive = 4005 errorDrive.!text = "Unknown/Invalid drive specified" errorMakeDir = 4006 errorMakeDir.!text = "Error creating directory: " errorBadLog = 4007 errorBadLog.!text = "Invalid file format" errorPurge = 4008 errorPurge.!text = "Failed attempting to purge all records, use DELETE" errorNoRemote = 4009 errorNoRemote.!text = "No remote log server defined"RETURN#End/******************************************************************************//* ResolveLevel - Returns an english definition for the 32 bit level mask. *//* Arguments: level *//* Returns : definition *//******************************************************************************/#Function ResolveLevelResolveLevel: procedure parse arg RL_lvl select
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -