システム関数 — プログラミング言語 Ring 1.14 取扱説明書

Skip to content

# システム関数

システム関数の用法です。

- System()

- SysGet()

- SysSet()

- SysUnset()

- IsMSDOS()

- IsWindows()

- IsWindows64()

- IsUnix()

- IsMacOSX()

- IsLinux()

- IsFreeBSD()

- IsAndroid()

- GetArch()

- Windowsnl()

- コマンドライン引数の取得

- 使用中のソースファイル名を取得

- CurrentDir()

- ExeFileName()

- ChDir()

- ExeFolder()

- Version()

- Shutdown()

## System() 関数

System() 関数はシステムコマンドを実行します。

文法:

    System(cCommand)

用例:

    System("myapp.exe")     # myapp.exe の実行
    System("ls")            # ファイルのリストを表示

## SysGet() 関数

SysGet() 関数は環境変数を取得します。

文法:

    SysGet(cVariable)

用例:

    see sysget("path")              # システムパスの情報を表示

## SysSet() 関数

SysSet() 関数は指定された環境変数を定義します。

    SysSet(cVariable, cValue) ---> 1 ならば成功であり 0 ならば失敗です。

## SysUnset() 関数

SysUnset() 関数は指定された環境変数を削除します。

    SysUnset(cVariable) ---> 1 ならば成功であり 0 ならば失敗です。

## IsMSDOS() 関数

IsMSDOS() 関数はオペレーティングシステムが MS-DOS か確認します。

文法:

    IsMSDOS()
            → オペレーティングシステムが MS-DOS ならば 1 を、そうでなければ 0 を返します。

## IsWindows() 関数

IsWindows() 関数はオペレーティングシステムが Windows か確認します。

文法:

    IsWindows()
            → オペレーティングシステムが Windows ならば 1 を、そうでなければ 0 を返します。

## IsWindows64() 関数

IsWindows64() 関数はオペレーティングシステムが 64bit 版の Windows か確認します。

文法:

    IsWindows64()
            → オペレーティングシステムが Windows64 ならば 1 を、そうでなければ 0 を返します。

## IsUnix() 関数

IsUnix() 関数はオペレーティングシステムが UNIX か確認します。

文法:

    IsUnix()
            → オペレーティングシステムが UNIX ならば 1 を、そうでなければ 0 を返します。

## IsMacOSX() 関数

IsMacOSX() 関数はオペレーティングシステムが macOS か確認します。

文法:

    IsMacOSX()
            → オペレーティングシステムが macOS ならば 1 を、そうでなければ 0 を返します。

## IsLinux() 関数

IsLinux() 関数はオペレーティングシステムが Linux か確認します。

文法:

    IsLinux()
            → オペレーティングシステムが Linux ならば 1 を、そうでなければ 0 を返します。

## IsFreeBSD() 関数

IsFreeBSD() 関数はオペレーティングシステムが FreeBSD か確認します。

文法:

    IsFreeBSD()
            → オペレーティングシステムが FreeBSD ならば 1 を、そうでなければ 0 を返します。

## IsAndroid() 関数

IsAndroid() 関数はオペレーティングシステムが Android か確認します。

文法:

    IsAndroid()
            → オペレーティングシステムが Android ならば 1 を、そうでなければ 0 を返します。

## 用例

    see "IsMSDOS()     --> " + ismsdos()     + nl
    see "IsWindows()   --> " + iswindows()   + nl
    see "IsWindows64() --> " + iswindows64() + nl
    see "IsUnix()      --> " + isunix()      + nl
    see "IsMacOSX()    --> " + ismacosx()    + nl
    see "IsLinux()     --> " + islinux()     + nl
    see "IsFreeBSD()   --> " + isfreebsd()   + nl
    see "IsAndroid()   --> " + isandroid()   + nl

実行結果:

    IsMSDOS()     --> 0
    IsWindows()   --> 1
    IsWindows64() --> 0
    IsUnix()      --> 0
    IsMacOSX()    --> 0
    IsLinux()     --> 0
    IsFreeBSD()   --> 0
    IsAndroid()   --> 0

## GetArch() 関数

GetArch() 関数は Ring 実行可能ファイルが動作しているアーキテクチャ名を検出します。

文法:

    GetArch() ---> cString (Ring 実行可能ファイルが動作しているアーキテクチャ名)

利用できる値:

    x86
    x64
    arm64
    arm
    unknown

用例:

    switch getarch()
    on "x86"
            ? "x86 32bit アーキテクチャ"
    on "x64"
            ? "x64 64bit アーキテクチャ"
    on "arm64"
            ? "ARM64 64bit アーキテクチャ"
    on "arm"
            ? "ARM 32bit アーキテクチャ"
    other
            ? "Unknown アーキテクチャ"
    off

## Windowsnl() 関数

Windowsnl() 関数は Windows の改行文字を取得します。

文法:

    WindowsNL() → CR+LF = CHAR(13) + CHAR(10) から構成される文字列

用例:

    cStr = read("input.txt")

    if iswindows()
            cStr = substr(cStr,windowsnl(),nl)
    ok

    aList = str2list(cStr)
    # 課題 - リストの項目処理で "for in" を使用する
    cStr = list2str(aList)

    if iswindows()
            cStr = substr(cStr,nl,windowsnl())
    ok

    write("ouput.txt",cStr)

## コマンドライン引数の取得

Ring スクリプトへ渡されたコマンドライン引数を得るには、リスト形式の変数 sysargv を使用します。

用例:

    see copy("=",30) + nl
    see "Command Line Parameters" + nl
    see "Size : " + len(sysargv) + nl
    see sysargv
    see copy("=",30) + nl
    if len(sysargv) < 4 return ok
    nStart = sysargv[3]
    nEnd = sysargv[4]
    for x = nStart to nEnd
            see x + nl
    next

実行結果:

    c:\mahmoud\apps\ring>ring tests\syspara.ring 1 10
    ==============================
    Command Line Parameters
    Size : 4
    ring
    tests\syspara.ring
    1
    10
    ==============================
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

## 使用中のソースファイル名を取得

filename() 関数は現在使用中のソースファイル名 (*.ring) を取得します。

文法:

    filename() → この文字列は現在使用中のソースファイル名です。

用例:

    see "Active Source File Name : " + filename() + nl

実行結果:

    Active Source File Name : tests\filename.ring

用例:

    if sysargv[2] = filename()
            see "I'm the main program file!" + nl
            # ここでテスト実行ができます！
    else
            see "I'm a sub file in a program" + nl
    ok

## PrevFileName() 関数

PrevFileName() 関数は以前使用中のソースファイル名を取得します。

「以前使用中のファイル」とは、呼び出し元の関数が存在するファイル、または PrevFileName() を呼び出す前に呼び出された関数が存在するファイルです。

文法:

    prevfilename() → この文字列は以前使用中のソースファイル名です。

用例:

この関数は stdlib.ring の PrevFileName() により 「呼び出し元にある関数が存在するファイル」が「プログラムのメインソース」であるか判定をします。

    Func IsMainSourceFile
            if PrevFileName() = sysargv[2]
                    return true
            ok
            return false

## CurrentDir() 関数

現在のディレクトリをパスを返します。

文法:

    CurrenDir() → この文字列は現在のディレクトリのパスです。

## ExeFileName() 関数

Ring の実行可能ファイル名を返します。

文法:

    exefilename() → この文字列は Ring の実行可能ファイル名です。

## ChDir() 関数

現在のディレクトリを変更します。

文法:

    ChDir(cNewPath)

## ExeFolder() 関数

Ring の実行可能ファイルがあるパスを返します。

文法:

    exefolder() → この文字列は Ring の実行可能ファイルがあるパスです。

## Version() 関数

Ring のバージョン情報を返します。

文法:

    version() → この文字列は Ring のバージョンです。

実行結果:

    1.14

## Shutdown() 関数

アプリケーションを閉じます。

文法:

    shutdown(nStatus) → アプリケーションを閉じます。

## NofProcessors() 関数

NofProcessors() 関数はシステムに搭載されている CPU の論理プロセッサ数を検出します。

文法:

    NofProcessors() ---> nProcessors

用例:

    ? NofProcessors()