英語フランス語スペイン語

Ad


OnWorksファビコン

basl2cB - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターを介して、OnWorks の無料ホスティング プロバイダーで basl2cB を実行します。

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなど、複数の無料オンライン ワークステーションのいずれかを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド basl2cB です。

プログラム:

NAME


basl2c - BASL (BAtch Scheduling Language) コードを C スケジューラ コードに変換します。

SYNOPSIS


basl2c [-d] [-l lexerDebugFile] [-p parserDebugFile] [-y symtabDebugFile] [-s
SemanticDebugFile] [-g codegenDebugFile] [-c cFile] baslFile

DESCRIPTION


basl2c に供給できる中間コードを生成する BASL から C へのコンパイラです。
通常の C コンパイラを使用し、PBS ライブラリとリンクしてスケジューラの実行可能ファイルを生成します。
Basl2c は入力として baslファイルこれは、BAtch Scheduling で記述されたプログラムです。
メインのスケジューリング コードを含む言語。 次に、Basl2c は BASL コンストラクトを変換します
ファイル内のコードを C ステートメントに変換し、追加のコードを添付して PBS を生成します。
スケジューラのソース コード。 デフォルトでは、結果の C コードがファイルに書き込まれます。
pbs_sched.c.

結果の C ファイルへのフル パス名は、 SCHD_CODE
BASL スケジューラをコンパイルして生成する前に、local.mk の変数 pbs_sched
実行可能ファイル。

OPTIONS


-d 追加のデバッグ メッセージをレクサー (-l オプションを参照)、パーサー (-p を参照) に出力します。
オプション)、シンボル テーブル (-y オプションを参照)、セマンティック アナライザー (-s オプションを参照)、およびコード
ジェネレーター (-g オプションを参照)。

-l lexerDebugFile
レクサーデバッグファイル 生成されたデバッグ メッセージに書き込むファイルの名前です。
トークンのスキャン中。

-p parserDebugFile
パーサーデバッグファイル 生成されたデバッグ メッセージに書き込むファイルの名前です。
使用可能な方法でトークンをまとめながら。

-y symtabデバッグファイル
symtabデバッグファイル 関連するデバッグ メッセージに書き込むファイルの名前です。
シンボルテーブル。

-s セマンティックデバッグファイル
セマンティックデバッグファイル デバッグ メッセージに書き込むファイルの名前です。
変数と演算子が使用されていることを確認するためにチェック中に生成されます
一貫した方法。

-g codegenデバッグファイル
codegenデバッグファイル 生成されたデバッグ メッセージに書き込むファイルの名前です。
BASLステートメントをCステートメントに変換するとき。

-c cファイル
cファイル 生成された C コードが書き込まれるファイルの名前です。

メイン 構造


BASL で記述されたスケジューラ コードの基本構造は次のとおりです。
ゼロ or 他には? 関数 定義
ゼロ or 他には? 全体的な 変数 宣言
ゼロ or 他には? 割り当て (に 初期化します 全体的な 変数)
sched_main()
{
XNUMXつ or 他には? 変数 宣言

ゼロ or 他には? 声明
}

たとえば、
% cat sched.basl
int型 合計(整数 a, int型 b)
{
int型 s;
s = a + b;
戻り値);
}
int型 グロブ;
sched_main()
{
int型 c;

a = 3;
b = 4;
c = 合計(a、 b);
印刷 (c);
地球 = 5;
印刷 (グロブ);
}

sched_main() スケジューリングの反復ごとに呼び出される関数です。

関数


後続の関数で呼び出すことができる関数を定義するための構文は次のとおりです。

返品の種類 関数名 ( データタイプ1 識別子1、
データタイプ2 識別子2、 ... )
{
XNUMXつ or 他には? 変数 宣言

ゼロ or 他には? 声明
}

たとえば、
空間 printStuff(曜日 ダウ、 日付時刻 t, 文字列 ストラ、
サイズ sz、 Cノード CN)
{
印刷(ダウ);
印刷 (t);
印刷 (文字列);
印刷 (sz);
印刷 (cn);
}

有効な機能 返品の種類 : Void、Int、Float、Dayofweek、DateTime、String、Size、
サーバー、キュー、ジョブ、CNode、サーバーの設定、キューの設定、ジョブの設定、CNode の設定。

有効なデータ型 ( データタイプ1、 データタイプ2、 ... ) パラメータ識別子は次のとおりです: Int、
Float、Dayofweek、DateTime、String、Size、Server、Que、Job、CNode、Set Server、Set Que、
ジョブの設定、CNode の設定、Int の範囲、Float の範囲、Dayofweek の範囲、DateTime の範囲、Size の範囲、
Fun Int、Fun Float、Fun Void、Fun Dayofweek、Fun DateTime、Fun String、Fun Size、Fun
サーバー、Fun Que、Fun Job、Fun CNode、Fun Set Server、Fun Set Que、Fun Set Job、Fun Set
Cノード。 これらのデータ型については、次のトピックで説明します。

関数は、次のように名前と引数によって呼び出されます。

printStuff( 月、 (5|1|1997@14:32:00), 「スケジュール 始まる",
30ギガバイト、 );

basl2c 実際には、スケジューラによって指定された関数名に「basl_」プレフィックスが追加されます
結果の C コードが
PBS、BASL ライブラリとリンクされています。 たとえば、生成された C コードを見ると、
印刷物、あなたが見るだろう、

basl_printStuff( MON, (5|1|1997@14:32:00),
「スケジュール開始」、30gb、ノード);

C と同様に、すべての関数呼び出しは事前に定義されている必要があります。 BASL コンパイラは、
関数呼び出しの引数が正確に一致することを確認します (
型) を関数定義のパラメーターと共に使用します。

BASL には、ユーザー定義関数と定義済み関数の XNUMX 種類の関数が存在します。
ユーザー定義関数は、スケジューラー作成者が定義を提供した関数です。
事前定義された関数は、必要なくすぐに呼び出すことができる関数です。
それを定義します。 定義済み関数のリストについては、セクションを参照してください。 事前定義済み 関数 .

変数 宣言


C と同様に、BASL コードのすべての変数は、使用前に明示的に宣言する必要があります。 それらの
関数の外で宣言された変数は、グローバル変数と呼ばれます。
関数本体内で宣言された変数は、ローカル変数と呼ばれます。 グローバル
変数は BASL コード内のどこでも使用できますが、ローカル変数は読み取り可能です
それらが宣言された関数内でのみ。

変数宣言の構文は次のとおりです。

データ・タイプ 識別子 ;

コラボレー データ・タイプ Int、Float、Dayofweek、DateTime、String、Size、Server、Que、Job、
CNode、Set Server、Set Que、Set Job、Set CNode、Range Int、Range Float、Range Dayofweek、
範囲日時、範囲サイズ。

DATA タイプ


空間 値を返さない関数に使用されます。

int型 基数 10 の符号付き整数。

サンプル定数:
5、+1、-3、成功 (=1)、失敗 (=0)、TRUE (=1)、FALSE (=0)

フロート 変換された C コードで double として表される実数。
サンプル定数: 4.3、+1.2、-2.6

曜日
定数値: SUN、MON、TUE、WED、THU、FRI、SAT。内部的には次のように表されます。
SUN=0、MON=1 などの整数値定数。

日付時刻
次の 3 つの形式のいずれかで指定します。

[1] (m|d|y) ここで、1 <= m <= 12、1 <= d <= 31、0 <= y、例: (4|4|1997);

[2] (hh:mm:ss) ここで、0 <= hh <= 23、0 <= mm <= 59、0 <= ss <= 61、例:
(12:01:00);

[3] (m|d|y@hh:mm:ss), ex. (4|4|1997@12:01:00)
日付/時刻の比較中に、時刻が「現在」の時刻に置き換えられます。
部分が指定されていません (形式 [1])。 「現在」の日付は、次の場合に置き換えられます。
日付部分は指定されません (形式 [2])。 また、通年の部分は
あいまいさを避けるために、日付を指定してください (つまり、1997 ではなく 97)。

文字列 文字列は引用符 (") で囲まれており、別の文字列以外のものを含めることができます。
引用符、改行、左右の括弧。
サンプル定数: 「サンプル文字列」、NULLSTR

サイズ フォーマット: ここで、suffix は次の形式の乗数です。
:

乗数 単位 (バイト or 言葉)
=================== =================================
k、m、g、t、p、K、M、G、T、P b、b、w、w

ここで、k=K=1024、m=M=1,048,576、g=G=1,073,741,824、t=T=1,099,511,627,776、
p=P=1,125,899,906,842,624、b=B=1、ワード サイズ w=W はローカルに定義されます (つまり、4
32 ビット マシンではバイト)。

接尾辞が異なる 2 つのサイズのオペランドを操作する場合、
XNUMX つの「下位」が結果の接尾辞になります。 例えば、
10MB + 10GB = 10250MB
サンプル定数: -1b、2w、1kb、2mw、+3gb、4tw、6Pb

レンジ int型

フォーマット: (低い Int 値、高い Int 値)
低い Int 値 <= 高い Int 値。 サンプル定数: (1,3)

レンジ フロート

形式: (低い Float 値、高い Float 値)
低い値 <= 高い値。 サンプル定数: (2.3, 4.6)

レンジ 曜日

形式:(早い日、遅い日)
ここで、早い日 <= 遅い日です。 サンプル定数: (WED, FRI)

レンジ 日付時刻

形式: (前の日付/時刻、後の日付/時刻)
ここで、以前の日付/時刻 <= 後の日付/時刻。
注: 範囲に時間部分のみが含まれていて、以前の時間が「表示される」場合
"((18:0:0), (6:0:0))" のように > 後で、その後は日付/時刻の間
比較すると、「後の」時間は XNUMX 日調整されます。
のように見える: "( ( @18:0:0)、( @6:0:0) )"

サンプル定数:
((4|4|1997), (4|10|1997)), ((12:01:00), (12:30:00)), ((4|4|1997@12:01:00),
(4|10|1997@12:30:00))

レンジ サイズ

フォーマット: (ローサイズ、ハイサイズ)
低サイズ <= 高サイズ。 サンプル定数: (23gb、50gb)

サーバー PBS サーバー オブジェクトに直接マップします。 あ サーバー XNUMX つ以上を管理する その オブジェクト。
サンプル定数: NOSERVER

Cノード 単一の OS イメージ、共有メモリ、およびセットで構成される計算ノード用
CPUの。 CNode は 1 つの PBS MOM を実行します。
サンプル定数: NOCNODE

その PBS キュー オブジェクトに直接マップします。 あ その XNUMX つまたは複数のオブジェクト スプール ジョブ
オブジェクト。
サンプル定数: NOQUE

ジョブ PBS ジョブ オブジェクトに直接マップします。 あ ジョブ オブジェクトはいくつかの属性を持ち、
リソース要件。
サンプル定数: NOJOB

作成セッションプロセスで サーバー
サーバー オブジェクトのリスト。
サンプル定数: EMPTYSETSERVER

作成セッションプロセスで Cノード
CNode オブジェクトのリスト。
サンプル定数: EMPTYSETCNODE

作成セッションプロセスで その Que オブジェクトのリスト。
サンプル定数: EMPTYSETQUE

作成セッションプロセスで ジョブ Job オブジェクトのリスト。
サンプル定数: EMPTYSETJOB

BASL定義 定数


これらは、識別子の命名には使用できない定数です (次のトピックを参照)。 これらは
は常に大文字です。

DATA タイプ BASL定義 CONSTANT
=================== =============================================
曜日 太陽、 月、 火、 結婚した、 木、 金、 土曜日

int型 成功、 不合格、 TRUE、 シンクラン、 ASYNCRUN、
削除、 再実行、 所有、 リリース、 信号、
MODIFYATTR、 修正、 サーバー_アクティブ、
サーバー_IDLE、 SERVER_SCHED、 SERVER_TERM、
SERVER_TERMDELAY、 QTYPE_E、 QTYPE_R、
SCHED_DISABLED、 SCHED_ENABLED、 トランジット、
キューに入れられた、 開催、 待っている、 ランニング、 終了、
CNODE_OFFLINE、 CNODE_DOWN、 CNODE_FREE、
CNODE_RESERVE、 CNODE_INUSE_EXCLUSIVE、
CNODE_INUSE_SHARED、 CNODE_TIMESHARED、
CNODE_CLUSTER、 CNODE_UNKNOWN、 OP_EQ、 OP_NEQ、
OP_LE、 OP_LT、 OP_GE、 OP_GT、 OP_MAX、 OP_MIN、
ASC DESC

サーバー ノーサーバー
作成セッションプロセスで サーバー 空のセットサーバー

Cノード ノクノード
作成セッションプロセスで Cノード 空のノード

その ノケ
作成セッションプロセスで その 空のセット

ジョブ 無職
作成セッションプロセスで ジョブ 空のセットジョブ

文字列 NULLSTR

識別子


識別子 (変数名と関数名に使用) は英数字形式で、
特殊なアンダースコア (_) 文字を使用できます。 現在、BASL は識別子のみを処理できます。
長さは最大 80 文字です。 また、BASL で定義された定数名は使用できません。
識別子の命名。

声明


In バーゼル(2)、セミコロンまたはグループで終了する単一のステートメントを持つことができます
「{」と「}」で区切られたステートメント (複合ステートメントまたはブロックと呼ばれる)。 異なる
BASL コードに表示できるステートメントの種類は次のとおりです。

1.式文
式ステートメントは、次の形式のものです。

;

コラボレー することができます:

a) 算術式

leexpr + reexpr (追加)
leexpr - reexpr (減算)
leexpr * reexpr (かける)
leexpr / reexpr (分ける)
leexpr % reexpr (係数 or 残り)

注: 足し算、引き算、掛け算、割り算、余り
適切なタイプに対してのみ許可され、左と右の場合
式は一貫した型です。 下の表は、
タイプは、さまざまな演算子間で一貫しています。

+ の場合:

leexpr reexpr
============ ============
int型 or フロート int型 or フロート
サイズ サイズ
文字列 文字列

為に -、 *、 /:

leexpr reexpr
============ ============
int型 or フロート int型 or フロート
サイズ サイズ

為に %:

leexpr reexpr
============ ============
int型 or フロート int型 or フロート

次に、算術式ステートメントの例をいくつか示します。
int型 i1;
int型 i2;
フロート f1;
フロート f2;
サイズ sz1;
サイズ sz2;
文字列 str1;
文字列 str2;

i1 + i2;
f1 - i2;
sz1 * sz2 * 2b;
sz1 / 1024b;

str1 = "バーゼル";
str2 = " いいね";

//   フォロー中 is a 文字列 連結
// 操作 結果として in   文字列:
// 「バスル いいね"
str1 + str2;

i1 % 10。

b) 単項式

+ expr // 正の - 掛けます by 1 an
// 表現 それ is
// of 整数、 浮く、 or
// サイズ type

-expr // - 掛けます by -1 an
// 表現 それ is
// of 整数、 浮く、 or
// サイズ type

!expr // - 変換する a ゼロ以外
// 0, & a
// ゼロ 1
// コラボレー type しなければなりません be
// of type int型 or フロート

単項式のサンプル:
int型 i;

+ 3;
-(私 + 4);
!私;

c) 論理式

leexpr EQ reexpr
leexpr NEQ reexpr
leexpr LT reexpr
leexpr LE reexpr
leexpr GT reexpr
leexpr GE reexpr
leexpr そして reexpr
leexpr OR reexpr

leexpr & reexpr 示されているように、相互に一貫性のある型が必要です
次の表:

lterminal-expr rterminal-expr
============== ==============
int型 or フロート int型 or フロート
曜日 曜日
日付時刻 日付時刻
文字列 文字列
サイズ サイズ
サーバー サーバー
その その
ジョブ ジョブ
Cノード Cノード
作成セッションプロセスで サーバー 作成セッションプロセスで サーバー
作成セッションプロセスで その 作成セッションプロセスで その
作成セッションプロセスで ジョブ 作成セッションプロセスで ジョブ
作成セッションプロセスで Cノード 作成セッションプロセスで Cノード

そして、 OR オペレーター、 leexpr、 reexpr 一貫した型は Int または
浮く。

論理式の例:

i1 EQ i2;
i1 NEQ f2;
ダウ1 LE ダウ2;
d1 LT d2;
str1 GT str2;
sz1 GE sz2;

d) 演算子後の式
これらは代入への単なる近道である式です
ステートメント。

識別子++; // 識別子=識別子+1
識別子 - ; // 識別子=識別子-1

識別子 Int または Float 型である必要があります。

例:
int型 i;
フロート f;

私+ +;
ふー;

e) 関数呼び出し

関数名 ( arg1 、arg2 ... , 引数N )

コラボレー arg1、 ···、 引数N 任意の定数または変数にすることができます。 あなたは持つことができません
引数として別の関数呼び出し。
例:
空間 pr(整数 a) {
印刷 (a);
}

pr(5);

スケジューラ ライターが使用できる特定の定義済み関数があります。
BASL コードを定義する必要なく自動的に呼び出します。
これらの関数は、アシスト関数 (またはヘルパー) と呼ばれます。
関数) で説明されています。 事前定義済み 関数 のトピックを参照してください。

f) 定数
いくつかの有効な定数式を次に示します。
5;
+ 1.2;
太陽;
月;
火;
結婚した;
木;
金;
土;
(4|4|1997);
(12:01:00);
(4|4|1997@12:01:00);
"素晴らしい";
-1b;
シンクラン;
非同期。
消去;
再実行;
所有;
リリース;
信号;
変更ATTR;
変更します。
(1、3);
(2.3、4.6);
(水、金);
((4|4|1997), (4|10|1997));
((12:01:00), (12:30:00));
((4|4|1997@12:01:00), (4|10|1997@12:30:00));
(23GB、50GB);
ノーサーバー;
ノクノード;
ノーク。
無職;
空のセットサーバー;
空のETCノード;
空のセット;
空のセットジョブ;
NULLSTR;
成功;
失敗;
サーバー_アクティブ;
サーバー_IDLE;
サーバー_スケジュール;
SERVER_TERM;
SERVER_TERMDELAY;
QTYPE_E;
QTYPE_R;
SCHED_DISABLED;
SCHED_ENABLED;
間違い;
真実;
トランジット;
キューに入れられました。
開催;
待っている;
ランニング;
終了します。
CNODE_オフライン;
CNODE_DOWN;
CNODE_FREE;
CNODE_RESERVE;
CNODE_INUSE_EXCLUSIVE;
CNODE_INUSE_SHARED;
CNODE_TIMESHARED;
CNODE_CLUSTER;
CNODE_UNKNOWN;
OP_EQ;
OP_NEQ;
OP_LE;
OP_LT;
OP_GE;
OP_GT;
OP_MAX;
OP_MIN;

g) 識別子

例:
整数 i;

i;

2.譲渡書

識別子 = ;

識別子 & として相互に一貫性のある型を持っている必要があります。
次の表に示します。

識別子
=============== ===============
int型 整数、 フロート
フロート 整数、 フロート
曜日 曜日
日付時刻 日付時刻
文字列 文字列
サイズ サイズ
その その
ジョブ ジョブ
Cノード Cノード
サーバー サーバー
曜日 曜日
日付時刻 日付時刻
作成セッションプロセスで サーバー 作成セッションプロセスで サーバー
作成セッションプロセスで その 作成セッションプロセスで その
作成セッションプロセスで ジョブ 作成セッションプロセスで ジョブ
作成セッションプロセスで Cノード 作成セッションプロセスで Cノード
レンジ int型 レンジ int型
レンジ フロート レンジ フロート
レンジ 曜日 レンジ 曜日
レンジ 日付時刻 レンジ 日付時刻
レンジ サイズ レンジ サイズ

3. if ... else ステートメント
if ステートメントの形式は、C の形式と似ていますが、区切り記号は次のとおりです。
"{" と "}" は常に存在します:

もし( ) {
ゼロ or 他には? (真) 声明
}

もし( ) {
ゼロ or 他には? (真) 声明
} ほかに {
ゼロ or 他には? (false) 声明
}

  's type は Int または Float のいずれかである必要があり、評価後にその場合
値がゼロ以外の場合、真のステートメントが実行されます。 XNUMX番目に
フォーム、 ゼロに評価された場合、偽のステートメントが実行されます。

いくつかのサンプル if 以下にステートメントを示します。

if (2 * x )
{
y = y + 3;
印刷 (y);
}

if (2 * x ) {
y = y + 3;
} ほかに {
もし( 3 * x ) {
y = 4;
} ほかに {
y = 5;
}
}

4. for ループ ステートメント
for ステートメントの形式は次のとおりです。

にとって( 始める; テスト; アクション ) {
ゼロ or 他には? 声明
}

Cのように、 for 最初に実行する start , 次に、 test 条件
ゼロ以外の値を返すかどうかを確認します。 もしそうなら、 for 文は
実行されました。 後に for ステートメントが実行された後、 アクション 評価され、
そして、それは test 再び元の状態に戻ります。
start & アクション 単純な代入式または後置演算子にすることができます
式です。 test 論理/関係式です。 いくつかのサンプル
ステートメントは次のとおりです。

for (i = 0; i LT 3 ; i = i + 1)
{
印刷 (私);
}

for (i = 0; i LT 2 * x; i ++)
{
if (x GT 3)
{
y = 99。
} ほかに
{
x = 73。
}
}

5. foreachの ループ ステートメント
このステートメントは主に、の各要素を連続して取得するために使用されます。
a データ型の設定: Server の設定、CNode の設定、Job の設定、Que の設定。 構文は次のとおりです。

foreachの ( 識別子1 in 識別子2 ) {
ゼロ or 他には? 声明
}

ここで、識別子の型の次の組み合わせが許可されます。

識別子1 識別子2
=========== ===========
サーバー 作成セッションプロセスで サーバー
その 作成セッションプロセスで その
ジョブ 作成セッションプロセスで ジョブ
Cノード 作成セッションプロセスで Cノード

例:
サーバー s;
その q;
ジョブ j;
Cノード c;

作成セッションプロセスで サーバー ss;
作成セッションプロセスで その 平方;
作成セッションプロセスで ジョブ sj;
作成セッションプロセスで Cノード sc;

foreach(s) in ss){
プリント;
}
foreach(q in 平方){
印刷 (q);
}
foreach(j in sj){
印刷 (j);
}
foreach(c in sc){
印刷 (c);
}

6. while ループ ステートメント
while ループの構文は次のとおりです。

while ( ) {
ゼロ or 他には? 声明
}

コラボレー Int または Float 型である必要があります。 もしも が非ゼロの場合、ゼロ
以上 声明 実行され、 再評価されます。

例:
int型 i;
i = 3;
ながら(私) {
もし( i EQ 0 ) {
print("ブレーク on i = 1");
破る;
}
私 - ;
}

7. スイッチ ステートメント
switch ステートメントは、
識別子の値は、いくつかの値の XNUMX つに一致し、次の値に分岐します。
それに応じてステートメントのグループ。
switch ステートメントの構文は次のとおりです。

スイッチ( 識別子 ) {
場合 定数式 :
{
ゼロ or 他には? 声明
}
場合 定数式 :
{
ゼロ or 他には? 声明
}
...
場合 in 定数範囲またはセット式 :
{
ゼロ or 他には? 声明
}
場合 in IDENTIFIER-rangeOrSettype :
{
ゼロ or 他には? 声明
}
デフォルト :
{
ゼロ or 他には? 声明
}
}

コラボレー 定数式 あります タイプ Int、Float、Dayofweek、DateTime、
サイズ、文字列、サーバー、キュー、ジョブ、または CNode。 定数範囲またはセット式 &
IDENTIFIER-rangeOrSettype タイプは、Set Server、Set CNode、Set Que、Set のいずれかです。
Job、Range Int、Range Float、Range Dayofweek、Range DateTime、Range Size。

識別子 タイプを Void にすることはできません。 識別子 's タイプは一貫している必要があります
  定数式 「S、 定数範囲またはセット式 「S、 & 識別子-
範囲またはセットタイプ 's 次の表に示すように入力します。
識別子 定数範囲式、 IDENTIFIER-範囲タイプ
=========== =========================================
サーバー 作成セッションプロセスで サーバー
その 作成セッションプロセスで その
ジョブ 作成セッションプロセスで ジョブ
Cノード 作成セッションプロセスで Cノード
int型 レンジ int型
フロート レンジ フロート
曜日 レンジ 曜日
日付時刻 レンジ 日付時刻
サイズ レンジ サイズ

ケース式が 識別子 's 値、次に対応する
ステートメントのブロックが実行されます。 C とは異なり、実行は落ちません
次の case ステートメントまで。 この理由は、 basl2c 意志
これを訳して スイッチ if-elseif-else コンストラクトへのステートメント。 ケース
ラベル付けされたデフォルトは、他のケースが満たされない場合に実行されます。 の
デフォルト オプションです。 そこにない場合、およびどのケースも一致しない場合は、いいえ
アクションが行われます。

例:
曜日 ダウ;

スイッチ(ダウ)
{
場合 月:
{
print("ケース 月");
}
場合 TUE:
{
print("ケース 火曜日");
}
場合 結婚した:
{
print("ケース 結婚した");
}
場合 THU:
{
print("ケース 木");
}
場合 FRI:
{
print("ケース 金");
}
場合 SAT:
{
print("ケース 土");
}
場合 太陽:
{
print("ケース 太陽");
}
デフォルト:
{
print("ケース デフォルト");
}
}

int型 a;
レンジ int型 り;
ri = (10、 12);
スイッチ(a)
{
場合 in (1,5):
{
print("ケース 1,5");
}
場合 in (6,9):
{
print("ケース 6,9");
}
場合 in り:
{
print("ケース り」);
}
}

8. 印刷 ステートメント
Print ステートメントは、任意の値を stdout に出力できます。 識別子
or 定数 タイプ Int、Float、Dayofweek、DateTime、String、Size、Que、Job、
CNode、Server、Range Int、Range Float、Range Dayofweek、Range DateTime、
範囲サイズ。
構文は次のとおりです。

印刷 ( 識別子 );
印刷 ( 定数 );

例:
日付時刻 dt;
Cノード CN;

dt = (4|4|1997@12:13:36);
cn = AllNodesLocalHostGet();

印刷 (dt);
印刷 (cn);

セット型の場合は、 foreachの 各要素を調べて、次のように出力します。

サーバー s;
作成セッションプロセスで サーバー ss;

ss = AllServersGet();

foreach(s) in ss) {
プリント;
}

9. ステートメントの継続

続ける ;

  続ける ステートメントは、 ために、 それぞれ、 &
while ループ。 これにより、囲んでいるループの次の反復が開始されます。

10. break ステートメント

破る ;

  破る ステートメントは、 ために、 それぞれ、 & while
ループ。 これにより、囲んでいるループから早期に抜け出すことができます。

11.リターンステートメント

return(識別子) ;
戻り値(定数) ;
戻る() ;

return ステートメントは、によって返される値 (存在する場合) を提供します。
関数。 によって返される型 識別子 & 定数 一致する必要があります
呼び出し関数の戻り値の型。 定数 許可されるタイプは、
セット型と範囲型。 最後のフォーマット、 戻る() 通常、
値を返さない関数 ( のように sched_main() ).

12.終了ステートメント

終了 (定数);

コラボレー 定数 Int 型です。 これを呼び出すと、スケジューラが終了します。

13. コメント文
これらは「//」で始まるステートメントであり、BASL では無視されます。
コンパイラ。

// この ライン is 無視され
int型 i; // 文字列 フォロー中   スラッシュ is 無視され

オペレーター 優先順位 そして 連想性


次の表は、定義されているさまざまな演算子の優先順位と結合規則を示しています。
BASL言語で。 演算子は、優先度の高い順にリストされています。 の
演算子の優先度が高いほど、早く実行されます。 の順序
同じレベルの演算子が実行されるかどうかは、結合性に依存します。左は、
演算子は左から右に表示され、right は右から左に表示されることを意味します。

演算子 連想性
=========================== =============
! ++ -- + (単項 プラス) - (単項 マイナス)
* / %
+ -
LT LE GT GE
EQ NEQ
そして
OR
=

事前定義済み 関数


In バーゼル(2)、 サーバー データ型は、バッチ サーバー オブジェクトに直接マップされます。 同様に、 Cノード
ママ/レスモムに、 ジョブ はバッチジョブであり、 その キューをバッチ処理することです。 ただし、すべてではありません
PBS オブジェクトへの属性は、BASL からアクセスできます。 属性のサブセットのみ、
スケジューラのコンテキストで意味があると思われるものが利用可能になり、
これらの属性の値は、次の定義済み関数を呼び出すことでアクセスできます。
アシスト/ヘルパー機能とも呼ばれます。

(1) サーバー関連機能

作成セッションプロセスで サーバー AllServersGet(void)
の構成ファイルで指定されたサーバーのリストを返します。
スケジューラ作成者がシステムに定期的にチェックしてもらいたいもの
ステータス、キュー、およびジョブ情報。 見る pbs__sched__basl(8B) のために
構成ファイルのフォーマットに関する議論。
注意: この関数は内部から呼び出す必要があります sched_main() so
スケジューリングの反復ごとに、最新の 作成セッションプロセスで サーバー
構造が返されます。

サーバー AllServersLocalHostGet(void)
ローカル ホストを表す Server オブジェクトを返します。 未設定値:
ノーサーバー。 これは、非クラスター環境で呼び出す単純な関数です。
サーバー ホストが XNUMX つだけ存在する場合。
注意: この関数は内部から呼び出す必要があります sched_main() (またはから
sched_main によって呼び出される関数内) で、すべてのスケジューリングで
反復、最新 サーバー 構造が返されます。

文字列 ServerInetAddrGet(サーバー s)
Server の名前を返します。 未設定値: NULLSTR

文字列 ServerDefQGet(サーバー s)
Server の default_queue 属性を返します。 未設定値: NULLSTR

int型 ServerStateGet(サーバー s)
Server の server_state 属性を返します。

戻り値:
SERVER_ACTIVE、SERVER_IDLE、SERVER_SCHED、SERVER_TERM、
SERVER_TERMDELAY、-1 (未設定値)

int型 ServerMaxRunJobsGet(サーバー s)
Server の max_running 属性を返します。 未設定値: 0

int型 ServerMaxRunJobsPerUserGet(サーバー s)
Server の max_user_run 属性を返します。 未設定値: 0

int型 ServerMaxRunJobsPerGroupGet(サーバー s)
Server の max_group_run 属性を返します。 未設定値: 0

作成セッションプロセスで その ServerQueuesGet(サーバー s)
Server によって管理されるキューのリストを返します。

作成セッションプロセスで ジョブ ServerJobsGet(サーバー s)
Server によって管理されるジョブのリストを返します。 このサブセットを取得するため
リスト、参照 QueJobsGet().

int型 ServerIntResAvailGet(サーバー s, 文字列 名)
で指定されたリソースに値を返します ジョブに使用できる
このサーバーによって実行されます (サーバー 利用可能なリソース名.name 属性)。 これを呼び出す
Int 型の値を持つリソースの関数。 サンプル リソース
名前は次のとおりです: cput、pcput、walltime、mppt、pmppt、nice、procs、mppe、ncpus、
pncpus、nodect、srfs_assist、mta、...、mth. これらの説明については
リソース名については、を参照してください pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
int型 cpuAvail;
// return   # of CPUの 現在 利用できます in
//  
cpu利用可能 = ServerIntResAvailGet(サーバー、 "ncpus");

サイズ ServerSizeResAvailGet(サーバー s, 文字列 名)
で指定されたリソースに値を返します ジョブに使用できる
このサーバーによって実行されます (サーバー 利用可能なリソース名.name 属性)。 これを呼び出す
サイズ型の値を持つリソースの関数。 サンプル リソース
名前は次のとおりです: file、mem、pmem、workingset、pf、ppf、srfs_tmp、srfs_wrk、
srfs_big、srfs_fast、sds、psds。 これらのリソースの説明について
名前、参照 pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
サイズ memAvail;
// return   of 利用できます メモリ in
//  
memAvailable = ServerSizeResAvailGet(サーバー、 "mem");

文字列 ServerStringResAvailGet(サーバー s, 文字列 名)
で指定されたリソースに値を返します ジョブに使用できる
このサーバーによって実行されます (サーバー 利用可能なリソース名.name 属性)。 これを呼び出す
String 型の値を持つリソースの関数。 サンプル
リソース名は、nodes、arch、neednodes です。 これらの説明については
リソース名については、を参照してください pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
文字列 タイプ;
// return   建築 (または os タイプ) of
//  
type = ServerStringResAvailGet(サーバー、 "アーチ");

int型 ServerIntResAssignGet(サーバー s, 文字列 名)
で指定されたリソースに値を返します 割り当てられている
実行中のジョブ (サーバー resource_assigned.name 属性)。 これを呼び出す
Int 型の値を持つリソースの関数。 サンプル リソース
名前は次のとおりです: cput、pcput、walltime、mppt、pmppt、nice、procs、mppe、ncpus、
pncpus、nodect、srfs_assist、mta、...、mth. これらの説明については
リソース名については、を参照してください pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
int型 cpuAssn;
// return   # of CPUの 現在 割り当てられた in
//  
CPUAssn = ServerIntResAssignGet(サーバー、 "ncpus");

サイズ ServerSizeResAssignGet(サーバー s, 文字列 名)
で指定されたリソースに値を返します 割り当てられている
実行中のジョブ (サーバー resource_assigned.name 属性)。 これを呼び出す
サイズ型の値を持つリソースの関数。 サンプル リソース
名前は次のとおりです: file、mem、pmem、workingset、pf、ppf、srfs_tmp、srfs_wrk、
srfs_big、srfs_fast、sds、psds。 これらのリソースの説明について
名前、参照 pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
サイズ sdsAssn;
// return   of SDS スペース 現在 割り当てられた
// in  
sdsAssn = ServerSizeResAssignGet(サーバー、 "sds");

文字列 ServerStringResAssignGet(サーバー s, 文字列 名)
で指定されたリソースに値を返します 割り当てられている
実行中のジョブ (サーバー resource_assigned.name 属性)。 これを呼び出す
String 型の値を持つリソースの関数。 サンプル
リソース名は、nodes、arch、neednodes です。 これらの説明については
リソース名については、を参照してください pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

作成セッションプロセスで Cノード ServerNodesGet(サーバー s)
サーバー s によって管理されるノードのセットを返します。 未設定値: EMPTYSETCNODE。
注: 通常、返されたノードに対して次の関数を呼び出すことができます。
この呼び出しによって: CNodeStateGet()、CNodePropertiesGet()、および CNodeTypeGet()。

int型 ServerNodesQuery(サーバー s, 文字列 仕様)
指定されたサーバーにリクエストを発行して、の可用性を照会します。
で指定されたリソース スペック 現時点では、唯一のリソース
許可される仕様は「ノード」を含むものであり、
「ノード」、「ノード=」、または「ノード=」の形式"。クエリの結果は
次の関数を呼び出してアクセスします: ServerNodesNumAvailGet()、
ServerNodesNumAllocGet()、ServerNodesNumRsvdGet()、
ServerNodesNumDownGet()。
注: これは、 pbs_rescquery(3B) サーバー機能。

戻り値:
成功、失敗

int型 ServerNodesNumAvailGet(サーバー s)
指定されたによって管理されるノードで使用可能なノードの数を返します
サーバー、またはによって指定された最新のクエリによって反映されるように
ServerNodesQuery()。 戻り値がゼロの場合、これは次のことを意味します。
の仕様を満たすために現在必要なノード数
ServerNodesQuery() は現在利用できません。 リクエストは多分満たされる
後で。 結果が負の場合、既知の組み合わせはありません
ノードは仕様を満たすことができます。

int型 ServerNodesNumAllocGet(サーバー s)
指定されたによって管理されるノードに割り当てられたノードの数を返します。
サーバー、またはによって指定された最新のクエリによって反映されるように
ServerNodesQuery()。

int型 ServerNodesNumRsvdGet(サーバー s)
指定されたによって管理されるノードのために予約されているノードの数を返します。
サーバー、またはによって指定された最新のクエリによって反映されるように
ServerNodesQuery()。

int型 ServerNodesNumDownGet(サーバー s)
指定したノードによって管理されているノードの停止数を返します。
サーバー、またはによって指定された最新のクエリによって反映されるように
ServerNodesQuery()。

int型 ServerNodesReserve(サーバー s,文字列 仕様、整数 resId)
指定されたサーバーにリソースを予約するリクエストを発行します
で指定 スペック 値 0 は、 解像度ID これは、
新規予約。 それ以外の場合、番号は既存の
(一部)予約。 このために現在予約されているリソース 解像度ID 意志
解放され、完全予約が再試行されます。 で
現時点で指定できる唯一のリソースは
「ノード」。 次のように指定する必要があります ノード=仕様 コラボレー
指定は、ユーザーが -l オプションの引数リストで指定するものです
ノードについては、qsub (1B) を参照してください。
注: これは、 pbs_recreserve(3B) サーバー機能。

戻り値:
成功または部分的に成功したものの参照番号
予約、またはFAIL

int型 ServerNodesRelease(サーバー s, int型 resId)
これにより、参照番号で予約されたリソースが解放または解放されます
で指定 resId。
注: これは、 pbs_recreelease(3B) サーバー機能。

戻り値:
成功か失敗か

(2) Que関連機能:

文字列 QueNameGet( その その )
Que que の名前を返します。 未設定値: NULLSTR

int型 QueTypeGet( その その )
Que que の queue_type 属性を返します。
戻り値: QTYPE_E (実行)、QTYPE_R (ルーティング)、-1 (未設定)
値)

int型 QueNumJobsGet( その その )
Que que に存在するジョブの数を返します。 未設定値: 0

int型 QueMaxRunJobsGet( その その )
Que que の max_running 属性を返します。 未設定値: 0

int型 QueMaxRunJobsPerUserGet( その その )
Que que の max_user_run 属性を返します。 未設定値: 0

int型 QueMaxRunJobsPerGroupGet( その その )
Que que の max_group_run 属性を返します。 未設定値: 0

int型 QuePriorityGet( その その )
Que que の Priority 属性を返します。 未設定値: 0

int型 QueStateGet( その その )
Que que の started 属性を返します - ジョブ実行選択
キューの状態: SCHED_DISABLED、SCHED_ENABLED。 未設定値:
SCHED_DISABLED

作成セッションプロセスで ジョブ QueJobsGet( その その )
現在キューに存在するジョブのリストを返します。

int型 QueIntResAvailGet(キュー q, 文字列 名)
で指定されたリソースに値を返します それが利用可能です
この q から実行されているジョブ (Que 利用可能なリソース名.name 属性)。
Int 型の値を持つリソースに対してこの関数を呼び出します。
リソース名の例: cput、pcput、walltime、mppt、pmppt、nice、
procs、mppe、ncpus、pncpus、nodect、srfs_assist、mta、...、mth. のために
これらのリソース名の説明については、を参照してください pbs_resources_irix5(7B)、
pbs_resources_sp2(7B)、 pbs_resources_sunos4(7B)、
pbs_resources_unicos8(7B)、 pbs_server_attributes(7B)、
pbs_resources_irix6(7B)、 pbs_resources_linux(7B)。

サイズ QueSizeResAvailGet(キュー q, 文字列 名)
で指定されたリソースに値を返します それが利用可能です
この q から実行されているジョブ (Que 利用可能なリソース名.name 属性)。
Size 型の値を持つリソースに対して、この関数を呼び出します。
リソース名の例: file、mem、pmem、workingset、pf、ppf、
srfs_tmp、srfs_wrk、srfs_big、srfs_fast、sds、psds。 説明のために
これらのリソース名については、を参照してください。 pbs_resources_irix5(7B)、
pbs_resources_sp2(7B)、 pbs_resources_sunos4(7B)、
pbs_resources_unicos8(7B)、 pbs_server_attributes(7B)、
pbs_resources_irix6(7B)、 pbs_resources_linux(7B)。

文字列 QueStringResAvailGet(キュー q, 文字列 名)
で指定されたリソースに値を返します それが利用可能です
この q から実行されているジョブ (Que 利用可能なリソース名.name 属性)。
String 型の値を持つリソースに対して、この関数を呼び出します。
リソース名の例は、nodes、arch、neednodes です。 説明のために
これらのリソース名については、を参照してください。 pbs_resources_irix5(7B)、
pbs_resources_sp2(7B)、 pbs_resources_sunos4(7B)、
pbs_resources_unicos8(7B)、 pbs_server_attributes(7B)、
pbs_resources_irix6(7B)、 pbs_resources_linux(7B)。

int型 QueIntResAssignGet(キュー q, 文字列 名)
で指定されたリソースに値を返します 割り当てられている
このキューから実行中のジョブ (キュー resource_assigned.name 属性)。
Int 型の値を持つリソースに対してこの関数を呼び出します。
リソース名の例: cput、pcput、walltime、mppt、pmppt、nice、
procs、mppe、ncpus、pncpus、nodect、srfs_assist、mta、...、mth. のために
これらのリソース名の説明については、を参照してください pbs_resources_irix5(7B)、
pbs_resources_sp2(7B)、 pbs_resources_sunos4(7B)、
pbs_resources_unicos8(7B)、 pbs_server_attributes(7B)、
pbs_resources_irix6(7B)、 pbs_resources_linux(7B)。

サイズ QueSizeResAssignGet(キュー q, 文字列 名)
で指定されたリソースに値を返します 割り当てられている
この q から実行されているジョブ (Que resource_assigned.name 属性)。
Size 型の値を持つリソースに対して、この関数を呼び出します。
リソース名の例: file、mem、pmem、workingset、pf、ppf、
srfs_tmp、srfs_wrk、srfs_big、srfs_fast、sds、psds。 説明のために
これらのリソース名については、を参照してください。 pbs_resources_irix5(7B)、
pbs_resources_sp2(7B)、 pbs_resources_sunos4(7B)、
pbs_resources_unicos8(7B)、 pbs_server_attributes(7B)、
pbs_resources_irix6(7B)、 pbs_resources_linux(7B)。

文字列 QueStringResAssignGet(クエリ q, 文字列 名)
で指定されたリソースに値を返します 割り当てられている
この q から実行されているジョブ (Que resource_assigned.name 属性)。
String 型の値を持つリソースに対して、この関数を呼び出します。
リソース名の例は、nodes、arch、neednodes です。 説明のために
これらのリソース名については、を参照してください。 pbs_resources_irix5(7B)、
pbs_resources_sp2(7B)、 pbs_resources_sunos4(7B)、
pbs_resources_unicos8(7B)、 pbs_server_attributes(7B)、
pbs_resources_irix6(7B)、 pbs_resources_linux(7B)。

(3) ジョブ関連機能

文字列 JobIdGet( ジョブ ジョブ )
Job ジョブのジョブ識別子を返します。 未設定値: NULLSTR

文字列 ジョブ名Get( ジョブ ジョブ )
Job ジョブの Job_Name 属性を返します。 未設定値: NULLSTR

文字列 ジョブ所有者名Get( ジョブ ジョブ )
Job ジョブの Job_Owner 属性を返します。 未設定値: NULLSTR

文字列 JobEffectiveUserNameGet( ジョブ ジョブ)
Job job の euser 属性を返します。

文字列 JobEffectiveGroupNameGet(ジョブ ジョブ)
ジョブ job の egroup 属性を返します。 未設定値: NULLSTR

int型 JobStateGet ( ジョブ ジョブ )
Job ジョブの job_state 属性を返します。

戻り値:
TRANSIT、QUEUED、HELD、WAITING、RUNNING、EXITING、-1 (unset
値)

int型 JobPriorityGet( ジョブ ジョブ )
Job ジョブの Priority 属性を返します。 未設定値: 0

int型 JobRerunFlagGet( ジョブ ジョブ )
Job ジョブの Rerunable 属性を返します。
戻り値:FALSE、TRUE、-1(未設定値)

int型 JobInteractiveFlagGet( ジョブ ジョブ )
Job ジョブの対話型属性を返します。
戻り値: FALSE、TRUE。 未設定値: FALSE

日付時刻 JobDateTimeCreatedGet(ジョブ ジョブ)
Job job の ctime 属性を返します。 未設定値:
(0|0|0@-1:-1:-1)

文字列 JobEmailAddrGet( ジョブ ジョブ )
Job ジョブの Mail_Users 属性を返します。 未設定値: NULLSTR

文字列 JobStageinFilesGet( ジョブ ジョブ )
Job job の stagein 属性を返します。 未設定値: NULLSTR

文字列 JobStageoutFilesGet( ジョブ ジョブ )
Job ジョブのステージアウト属性を返します。 未設定値: NULLSTR

int型 JobIntResReqGet(ジョブ 仕事、 文字列 名)
で指定されたリソースに値を返します 必要に応じて
ジョブ(ジョブ リソースリスト名 属性)。 この関数を呼び出す
Int 型の値を持つリソース。 リソース名の例
cput、pcput、walltime、mppt、pmppt、nice、procs、mppe、ncpus、
pncpus、nodect、srfs_assist、mta、...、mth. これらの説明については
リソース名については、を参照してください pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
int型 cputReq;
// 収益   コンピューター 要件 of   ジョブ
cputReq = JobIntResReqGet(ジョブ、 "cput");

サイズ JobSizeResReqGet(ジョブ 仕事、 文字列 名)
で指定されたリソースに値を返します 必要に応じて
ジョブ(ジョブ リソースリスト名 属性)。 この関数を呼び出す
サイズ型の値を持つリソース。 リソース名の例
ファイル、mem、pmem、ワーキングセット、pf、ppf、srfs_tmp、srfs_wrk、
srfs_big、srfs_fast、sds、psds。 これらのリソースの説明について
名前、参照 pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
サイズ メモリ要求;
// 収益   メモリ 要件 of   ジョブ
メモリ要求 = JobSizeResReqGet(ジョブ、 "mem");

文字列 JobStringResReqGet(ジョブ 仕事、 文字列 名)
で指定されたリソースに値を返します 必要に応じて
ジョブ(ジョブ リソースリスト名 属性)。 この関数を呼び出す
文字列型の値を持つリソース。 リソース名の例
ノード、アーチ、ニードノードです。 これらのリソースの説明について
名前、参照 pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
文字列 ノード;
// 収益   ノード 要件 財産 of
//   ジョブ
ノード = JobStringResReqGet(ジョブ、 「ノード」);

int型 JobIntResUseGet(ジョブ 仕事、 文字列 名)
で指定されたリソースに値を返します ジョブによって使用される (ジョブ
使用されるリソース名 属性)。 リソースに対してこの関数を呼び出す
Int 型の値。 リソース名の例: cput、pcput、
walltime、mppt、pmppt、ナイス、procs、mppe、ncpus、pncpus、nodect、
srfs_assist、mta、...、mth. これらのリソース名の説明については、
pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
int型 ウォールト使用;
// 収益   of ウォールタイム 中古 by
//   ジョブ
ウォール使用 = JobIntResUseGet(ジョブ, "ウォールタイム");

サイズ JobSizeResUseGet(ジョブ 仕事、 文字列 名)
で指定されたリソースに値を返します ジョブによって使用される (ジョブ
使用されるリソース名 属性)。 リソースに対してこの関数を呼び出す
サイズ型の値。 リソース名の例: file、mem、
pmem、ワーキングセット、pf、ppf、srfs_tmp、srfs_wrk、srfs_big、srfs_fast、
SD、PSD。 これらのリソース名の説明については、を参照してください。
pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

例:
サイズ srfs使用;
// 収益   of srfs_fast 中古 by
//   ジョブ
srfs使用 = JobSizeResUseGet(ジョブ、 "srfs_fast");

文字列 JobStringResUseGet(ジョブ 仕事、 文字列 名)
で指定されたリソースに値を返します ジョブによって使用される (ジョブ
使用されるリソース名 属性)。 リソースに対してこの関数を呼び出す
文字列型の値。 リソース名の例: ノード、
アーチ、ノードが必要です。 これらのリソース名の説明については、を参照してください。
pbs_resources_irix5(7B)、 pbs_resources_sp2(7B)、
pbs_resources_sunos4(7B)、 pbs_resources_unicos8(7B)、
pbs_server_attributes(7B)、 pbs_resources_irix6(7B)、
pbs_resources_linux(7B)。

(4) CNode関連の機能

作成セッションプロセスで Cノード AllNodesGet(void)
上で実行されているサーバーによって管理されるノードのリストを返します。
ローカル ホスト。 これには、指定されたノードも含まれる場合があります。
スケジューラー・ライターが対象のスケジューラー構成ファイル
システムに状態などの情報を定期的にチェックしてもらいたい
プロパティなど。 見る pbs_sched_basl(8B) の議論のために
構成ファイル形式。
注意: この関数は内部から呼び出す必要があります sched_main() so
スケジューリングの反復ごとに、最新の 作成セッションプロセスで Cノード
構造が返されます。 これを割り当てステートメントから呼び出さないでください
ステートメントはグローバル変数のみを初期化するためのものです。
一度呼び出されます。

Cノード AllNodesLocalHostGet(void)
ローカル ホストを表す CNode オブジェクトを返します。 これは
CNode が 1 つしかない非クラスター化システムを呼び出す単純な関数
存在します。 未設定値: NOCNODE
注意: この関数は内部から呼び出す必要があります sched_main() (または
sched_main によって呼び出される関数内から)
最新のイテレーションのスケジューリング Cノード 構造は
戻ってきた。 これを代入ステートメントから呼び出さないでください。
ステートメントは呼び出されるだけなので、グローバル変数を初期化します
一度。

文字列 CNodeNameGet(CNode ノード)
ノードの一意の(公式)名前を返します(つまり、ResMom ホスト名
1 ママ/ノード モデル)。 これは、元の文字列と同じ文字列を返します
構成ファイルで指定されています。 未設定値: NULLSTR

文字列 CNodeOsGet(CNode ノード)
ノードの OS アーキテクチャを返します (つまり、"irix5"、"sp2")。 設定解除
値: NULLSTR

int型 CNodeStateGet( Cノード )
ノードの状態を返します。

戻り値:
CNODE_OFFLINE、CNODE_DOWN、CNODE_FREE、CNODE_RESERVE、
CNODE_INUSE_EXCLUSIVE、CNODE_INUSE_SHARED、CNODE_UNKNOWN

int型 CNodeTypeGet( Cノード )
ノードのタイプを返します。

戻り値:
CNODE_TIMESHARED、CNODE_CLUSTER、CNODE_UNKNOWN

文字列 CNodePropertiesGet(CNodePropertiesGet(Cノード) ノード)
ノードが認識されている他の名前のコンマ区切りリストを返します
(プロパティ、他のネットワーク名)。 例えば、
「babbage.OpenPBS.org」はノード名かもしれませんが、知られている可能性もあります
「babbage1、babbage2」経由。 未設定値: NULLSTR

文字列 CNodeVendorGet(CNode ノード)
マシンのハードウェアのベンダーの名前を返します (つまり、
"sgi"、"ibm")。 未設定値: NULLSTR

int型 CNodeNumCpusGet(CNode ノード)
ノードに接続されているプロセッサの数を返します。 未設定値:
-1

サイズ CNodeMemTotalGet( Cノード ノード、 文字列 type )
合計メモリを返します type ノード用。 type は任意です
スケジューラ作成者がスケジューラで定義する文字列
構成ファイル。 未設定値: -1b
例:
// 取得する 合計 物理的な メモリ
CNodeMemTotalGet(ノード、 "本物")
// 取得する 合計 バーチャル メモリ
CNodeMemTotalGet(ノード、 "バーチャル")

サイズ CNodeMemAvailGet( Cノード ノード、 文字列 type )
利用可能なメモリを返します type ノード用。 type は任意です
スケジューラ作成者がスケジューラで定義する文字列
構成ファイル。 未設定値: -1b
したがって、サンプル呼び出しは次のようになります。
// 取得する 利用できます 物理的な メモリ
CNodeMemAvailGet(ノード、 "本物")
// 取得する 利用できます バーチャル メモリ
CNodeMemAvailGet(ノード、 "バーチャル")

int型 CNodeIdletimeGet( Cノード )
キーストロークまたはマウスの動きがない秒数を返します
ノードに接続された任意の端末で行われます。 未設定値: -1

フロート CNodeLoadAveGet( Cノード )
すべての CPU のノードの負荷平均を返します。 未設定値: -1.0

int型 CNodeCpuPercentIdleGet( Cノード )
ノードのすべてのプロセッサがアイドル時間の割合を返します。
経験しました。

int型 CNodeCpuPercentSysGet( Cノード )
ノードのすべてのプロセッサが使用している時間の割合を返します
カーネルコードの実行に費やしました。

int型 CNodeCpuPercentUserGet( Cノード )
ノードのすべてのプロセッサが使用している時間の割合を返します
ユーザーコードの実行に費やしました。

int型 CNodeCpuPercentGuestGet( Cノード )
ノードのすべてのプロセッサが使用している時間の割合を返します
ゲスト オペレーティング システムの実行に費やされました。

int型 CNodeNetworkBwGet( Cノード ノード、 文字列 type )
ノードのネットワークの帯域幅を返します type 単位はバイト/秒。
type スケジューラーのスケジューラー・ライターによって定義されます
構成ファイル。 未設定値: -1
いくつかのサンプル コールは次のとおりです。
CNodeNetworkBwGet( ノード、 「ヒッピー」 );
CNodeNetworkBwGet( ノード、 「fddi」 );

サイズ CNodeDiskSpaceTotalGet(CNode ノード、 文字列 名)
によって識別されるディスク上のノードの合計スペースを返します。 コラボレー
は、スケジューラ ライタによって任意に定義されたデバイス名です。
スケジューラ構成ファイル。 未設定値: -1b
例:
CNodeDiskSpaceTotalGet( ノード、 "/scratch2" );

サイズ CNodeDiskSpaceAvailGet(CNode ノード、 文字列 名)
によって識別されるディスク上のノードの使用可能なスペースを返します コラボレー
スケジューラー内のスケジューラー・ライターによって任意に定義されます
構成ファイル。 未設定値: -1b
例:
CNodeDiskSpaceAvailGet( ノード、 "/scratch1" );

サイズ CNodeDiskSpaceReservedGet(CNode ノード、 文字列 名)
によって識別されるディスク上のノードの予約済みスペース (ユーザー クォータ?) を返します。
コラボレー スケジューラの作成者によって任意に定義されます。
スケジューラ構成ファイル。 未設定値: -1b
例:
CNodeDiskSpaceReservedGet( ノード、 "/scratch1" );

int型 CNodeDiskInBwGet( Cノード ノード、 文字列 )
特定されたノードのディスクの書き込み帯域幅 (バイト/秒) を返します
by . 未設定値: -1
例:
CNodeDiskInBwGet( ノード、 "/速い" );

int型 CNodeDiskOutBwGet( Cノード ノード、 文字列 )
によって識別されるノードのディスクの読み取り帯域幅 (バイト/秒) を返します。
. 未設定値: -1
例:
CNodeDiskOutBwGet( ノード、 "/大きい" );

サイズ CNodeSwapSpaceTotalGet( Cノード ノード、 文字列 )
によって識別されるスワップ上のノードの合計スペースを返します コラボレー
スケジューラー内のスケジューラー・ライターによって任意に定義されます
構成ファイル。 未設定値: -1b
例:
CNodeSwapSpaceTotalGet( ノード、 "主要な" );

サイズ CNodeSwapSpaceAvailGet( Cノード ノード、 文字列 )
によって識別されるスワップ上のノードの使用可能なスペースを返します コラボレー
は、スケジューラ ライタによって任意に定義されたデバイス名です。
スケジューラ構成ファイル。 未設定値: -1b
例:
CNodeSwapSpaceAvailGet( ノード、 「二次」 );

int型 CNodeSwapInBwGet( Cノード ノード、 文字列 )
によって識別されるノードのスワップ デバイスの swapin レートを返します。 名前。
例:
CNodeSwapInBwGet(ノード、 "セカンダリ");

int型 CNodeSwapOutBwGet( Cノード ノード、 文字列 )
によって識別されるノードのスワップ デバイスのスワップアウト レートを返します。
名前。 未設定値: -1
例:
CNodeSwapOutBwGet(ノード、 "主要な");

サイズ CNodeTapeSpaceTotalGet( Cノード ノード、 文字列 )
によって識別されるテープ上のノードの合計スペースを返します。 コラボレー
スケジューラー内のスケジューラー・ライターによって任意に定義されます
構成ファイル。 未設定値: -1b
例:
CNodeTapeSpaceTotalGet(ノード、 "4mm");

サイズ CNodeTapeSpaceAvailGet( Cノード ノード、 文字列 )
で識別されるテープ上のノードの使用可能なスペースを返します。 コラボレー
スケジューラー内のスケジューラー・ライターによって任意に定義されます
構成ファイル。 未設定値: -1b
例:
CNodeTapeSpaceAvailGet(node, "8mm");

int型 CNodeTapeInBwGet( Cノード ノード、 文字列 )
特定されたノードのテープの書き込み帯域幅 (バイト/秒) を返します
by . 未設定値: -1
例:
CNodeTapeInBwGet( ノード、 「4ミリ」 );

int型 CNodeTapeOutBwGet( Cノード ノード、 文字列 )
特定されたノードのテープの読み取り帯域幅 (バイト/秒) を返します
by . 未設定値: -1
例:
CNodeTapeOutBwGet( ノード、 「8ミリ」 );

サイズ CNodeSrfsSpaceTotalGet( Cノード ノード、 文字列 )
によって識別される srfs デバイス上のノードの合計スペースを返します。
コラボレー スケジューラの作成者によって任意に定義されます。
スケジューラ構成ファイル。 未設定値: -1b
例:
CNodeSrfsSpaceTotalGet(ノード、 "/速い");

サイズ CNodeSrfsSpaceAvailGet( Cノード ノード、 文字列 )
によって識別される srfs デバイス上のノードの使用可能なスペースを返します
コラボレー 一部のスケジューラ ライターによって任意に定義されます。
構成ファイル。 未設定値: -1b
例:
CNodeSrfsSpaceAvailGet( ノード、 "/大きい" );

サイズ CNodeSrfsSpaceReservedGet(CNode ノード、 文字列 名)
srfs デバイス上のノードの予約済みスペースの合計量を返します
によって識別される コラボレー スケジューラによって任意に定義されます
スケジューラー構成ファイルのライター。 未設定値: -1b
例:
CNodeSrfsSpaceReservedGet( ノード、 "/速い" );

int型 CNodeSrfsInBwGet( Cノード ノード、 文字列 )
ノードの srfs デバイスの書き込み帯域幅 (バイト/秒) を返します
によって識別される . 未設定値: -1
例:
CNodeSrfsInBwGet( node, "/fast" );

int型 CNodeSrfsOutBwGet( Cノード ノード、 文字列 )
ノードの srfs デバイスの読み取り帯域幅 (バイト/秒) を返します
によって識別される . 未設定値: -1
例:
CNodeSrfsOutBwGet( ノード, "/big" );

(5) その他の機能

日付時刻 日時Get()
現在の日付/時刻を取得します。

int型 datetimeToSecs(DateTime dt)
エポックからの秒数を返します (UNIX 時間の開始 -
00 年 00 月 00 日 1:1970:XNUMX) 指定された日時 dt。

int型 ジョブアクション( ジョブ 仕事、 int型 アクション、 文字列 パラメータ )
実行する アクション on ジョブ また、 パラメータ に応じて指定
をご利用ください。 アクション SYNCRUN、ASYNCRUN、DELETE、RERUN、HOLD、
RELEASE、SIGNAL、MODIFYATTR、MODIFYRES ここで:
Action 説明
=============== ==========================
シンクラン 実行   ジョブ 同期的に、
意味   コール 〜へ
ジョブアクション() 意志
return いつ   ジョブ 持っています
開始 ランニング or いつ
an エラー 持っています
遭遇した。
Param 値:
of ホスト 〜へ ラン
ジョブ 下。

非同期 実行   ジョブ 非同期的に、
意味   コール 〜へ
ジョブアクション() 意志 return
直ちに as すぐに as
  ラン 要求 is
検証済み by   PBS サーバ、
& 必ずしも いつ
  ジョブ 持っています 開始
実行。
Param 値:
of ホスト 〜へ ラン
ジョブ 下。

DELETE 削除する   仕事。
Param 値:
"deldelay=<# of 秒>"
- 遅らせる # of
の間に   送信
of シグターム & シグキル
〜へ   ジョブ
受け 削除されました。

再実行 再実行   ランニング 仕事、
which 関与 終了中
  セッション リーダー of  
ジョブ & 返す   ジョブ
〜へ   待ち行列に入れられた でのみ停止させることができます。

ホールド 場所 XNUMXつ or 他には? 保持している
on   仕事。
Param 値:
"あなた"、 "お"、 "s"、 「うお」、 "オス"、
「ウオス」
- type of 保持している 〜へ 場所
on 仕事: ユーザー)、 他の)、
システム)。

RELEASE 除去する or リリース
保持している 配置 on
Param 値:
"あなた"、 "お"、 "s"、 「うお」、 "オス"、
「ウオス」
- type of 保持している 〜へ 削除します
から 仕事: ユーザー)、 他の)、
システム)。

SIGNAL 送る a 信号 〜へ  
実行 仕事。
Param 値:
"ハップ"、 「サイハイ」、...

変更ATTR 修正   指定の
属性を使用する。 of   ジョブ 〜へ
  与えられた 値、 いつ
  属性名 is
!= 「リソース_リスト」 or
"resources_used".
Param 値:
「属性名=値」

修正する 修正   仕事の
リソースリスト
属性を使用する。 与えられた  
レス名 &  
解像度値:
リソースリスト.res_name=
res_value
Param 値:
"res_name=res_val"
パラメータ 値はアクションによって異なります。 値がない場合は NULLSTR を指定します。
このパラメータは必要です。
戻り値: SUCCESS または FAIL。
注: 認識されない アクション 無視されます。
例:
// ラン ジョブ j 同期して
JobAction(j, シンクラン、 NULLSTR);

// ラン ジョブ j 非同期的に on host 「データベース」
JobAction(j, ASYNCRUN、 "デシベル");

// 削除 ジョブ j
JobAction(j, 削除、 NULLSTR);

// 削除 ジョブ j   a 遅らせる of 5 ドライ
// の間に   送信 of シグターム &
// シグキル
JobAction(j, 削除、 "deldelay=5");

// 再実行 ジョブ j
JobAction(j, 再実行、 NULLSTR);

// 場所 a ユーザー) on ジョブ j
JobAction(j, 所有、 "u");

// 場所 an 他の) on ジョブ j
JobAction(j, 所有、 "o");

// 場所 a システム) on ジョブ j
JobAction(j, 所有、 "s");

// 場所 a デフォルト (ウ) on ジョブ j
JobAction(j, 所有、 NULLSTR);

// リリース ユーザー) から ジョブ j
JobAction(j, リリース、 "u");

// リリース 他の) から ジョブ j
JobAction(j, リリース、 "o");

// リリース システム) から ジョブ j
JobAction(j, リリース、 "s");

// リリース デフォルト (ウ) から ジョブ j
JobAction(j, リリース、 NULLSTR);

// 送信 シグアップ 信号 〜へ ジョブ j
JobAction(j, 信号、 "SIGHUP");

// update   コメント 属性を使用する。 of ジョブ
// j 〜へ "a メッセージ"。
//   パラメータ 形式でアーカイブしたプロジェクトを保存します. 次のとおりです。 属性名=新しい値
// 相談する PBS ドキュメント for a リスト of ジョブ
// 属性を使用する。 それ できる be 指定。
JobAction(j, MODIFYATTR、 「コメント=a メッセージ");
// update   Resource_List.cput 属性を使用する。 of ジョブ
// j 〜へ 3600 秒です。
//   パラメータ 形式でアーカイブしたプロジェクトを保存します. 次のとおりです。 リソース名=新しい値
// 見る pbs_resources* man ページ for a リスト of
// リソース名 それ できる be 指定。
JobAction(j, 修正、 "cput=3600");

QueJobFind(キュー que,fun int型 関数、整数 心肺蘇生法、INT 価値);

QueJobFind(キュー que,fun 文字列 関数、整数 cpr,文字列 価値);

QueJobFind(キュー que,fun 日付時刻 関数、整数 cpr,日時 価値);

QueJobFind(キュー que,fun サイズ 関数、整数 cpr、サイズ 価値);

コラボレー CPR OP_EQ、OP_NEQ、OP_LE、OP_LT、OP_GE、OP_GT のいずれかです。 ファンク
唯一の引数が Job タイプの関数です。 ジョブ リターンです
タイプ。

説明: 適用されます ファンク あらゆる仕事に その , そして最初のものを返します
論理比較を満たすジョブ: 機能(ジョブ) CPR

例:

サイズ JobVirtualMemAvailGet(ジョブ ジョブ)
{
サイズ サイズ;

sz = JobSizeResReqGet(ジョブ、 "mem");
戻ります (sz);
}
int型 JobWallTimeReqGet(ジョブ ジョブ)
{
int型 ウォルト;

ウォルト = JobIntResReqGet(ジョブ、 "ウォールタイム");
リターン(ウォール);
}

int型 JobCpuTimeUsedGet(ジョブ ジョブ)
{
int型 コンピューター;

コンピューター = JobIntResUseGet(ジョブ, "cput");
リターン(CPU);
}

その findQueByName(セット その 待ち行列、 文字列 qname)
{
その q;

foreach(q in キュー) {
もし( QueNameGet(q) EQ qname ) {
戻ります(q);
}
}
戻ります (NOQUE);
}
sched_main()
{
サーバー s;
その キュー;
作成セッションプロセスで その 平方;

// 取得する ローカル
s = AllServersLocalHostGet();

// 取得する   of   サーバー s
sq = ServerQueuesGet(s);

// 取得する   キュー 命名 "速い" から  
// ローカル
その = findQueByName( 平方、 "速い" );

// もう完成させ、ワークスペースに掲示しましたか?   1 ジョブ その ウォールタイム 要件
// is == 300:
QueJobFind(que, JobWallTimeReqGet、 OP_EQ、 300);

// もう完成させ、ワークスペースに掲示しましたか?   1 ジョブ その email 住所 〜へ
// 通知する ジョブ アクティビティ != "バユカン":
QueJobFind(que, JobEmailAddrGet、 OP_NEQ、
"バユカン");

// もう完成させ、ワークスペースに掲示しましたか?   1 ジョブ それ ました 作成した After
// or on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet、 OP_GE、
(3|3|1997));

// もう完成させ、ワークスペースに掲示しましたか?   1 ジョブ それ ました 作成した After
// 3:3:44:
QueJobFind(que, JobDateTimeCreatedGet、 OP_GT、
(3:3:44));

// もう完成させ、ワークスペースに掲示しましたか?   1 ジョブ それ ました 作成した After
// 3:3:44 on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet、 OP_GT、
(3|3|1997@3:3:44));

// もう完成させ、ワークスペースに掲示しましたか?   1 ジョブ その CPU 時間 中古 < 1600:
QueJobFind(que, JobCpuTimeUsedGet、 OP_LT、 1600);

// もう完成させ、ワークスペースに掲示しましたか?   1 ジョブ その バーチャル メモリ
// 要件 <= 300MB:
QueJobFind(que, JobVirtualMemAvailGet、 OP_LE、
300MB);
}

ジョブ QueJobFind( その その 楽しいです int型 機能、 int型 心肺蘇生法)

ジョブ QueJobFind( その その 楽しいです 文字列 機能、 int型 心肺蘇生法)

ジョブ QueJobFind( その その 楽しいです 日付時刻 機能、 int型 心肺蘇生法)

ジョブ QueJobFind( その その 楽しいです サイズ 機能、 int型 心肺蘇生法)

コラボレー CPR 次のいずれかになります: OP_MAX、OP_MIN、 ファンク  
唯一の引数が Job 型の関数。

説明: 見つかった最大値または最小値を持つジョブを返します
機能(ジョブ) のあらゆる仕事に適用されるので、 その .

例:
int型 JobCpuTimeReqGet(ジョブ ジョブ)
{
int型 コンピューター;

コンピューター = JobIntResReqGet(ジョブ、 "cput");
リターン(CPU);
}
sched_main()
{
その キュー;
ジョブ 仕事;

// もう完成させ、ワークスペースに掲示しましたか?   ジョブ     最高 CPU 時間
// 要件:
ジョブ = QueJobFind(que, JobCpuTimeReqGet、 OP_MAX);

// もう完成させ、ワークスペースに掲示しましたか?   ジョブ     最小 CPU 時間
// 要件:
ジョブ = QueJobFind(que, JobCpuTimeReqGet、 OP_MIN);
}

その QueFilter(キュー que,fun int型 関数、整数 心肺蘇生法、INT 値)

その QueFilter(キュー que,fun 文字列 関数、整数 cpr,文字列 値)

その QueFilter(キュー que,fun 日付時刻 関数、整数 心肺蘇生、日付 値)

その QueFilter(キュー que,fun サイズ 関数、整数 cpr、サイズ 値)

コラボレー CPR 次のいずれかになります: OP_EQ、OP_NEQ、OP_LE、OP_LT、
OP_GE、OP_GT、 ファンク 唯一の引数が Job 型の関数です。

説明: 適用されます ファンク あらゆる仕事に その , 新しいキューを返します
比較条件を満たすすべてのジョブを含む:
機能(ジョブ) CPR

例:
int型 JobWallTimeReqGet(ジョブ ジョブ)
{
int型 ウォルト;

ウォルト = JobIntResReqGet(ジョブ、 "ウォールタイム");
リターン(ウォール);
}
sched_main()
{
その キュー;
その 新しいq;

// 返品 a 新製品 その 含む jobs in 「クエ」
//   a ウォールタイム 要件 == 300:
新しい = QueFilter(que, JobWallTimeReqGet、 OP_EQ、 300);

// 返品 a 新製品 その 含む jobs in 「クエ」
//   an email 住所 != "バユカン":
新しい = QueFilter(que, JobEmailAddrGet、 OP_NEQ、 "バユカン");

// 返品 a 新製品 その 含む jobs in 「クエ」
// 作成した After or on 3 / 3 / 1997:
新しい = QueFilter(que, JobDateTimeCreatedGet、 OP_GE、
(3|3|1997));

// 返品 a 新製品 その 含む jobs in 「クエ」
// 作成した After 3:3:44:
新しい = QueFilter(que, JobDateTimeCreatedGet、 OP_GT、
(3:3:44));

// 返品 a 新製品 その 含む jobs in 「クエ」
// 作成した After 3:3:44 on 3 / 3 / 1997:
新しい = QueFilter(que, JobDateTimeCreatedGet、 OP_GT、
(3|3|1997@3:3:44));

// 注意:   オリジナル 「クエ」 is 修正されました
// 全く。
}

int型 並べ替え(セット ジョブ s, 楽しいです int型 キー、 int型 注文)

int型 並べ替え(セット ジョブ s, 楽しいです 文字列 キー、 int型 注文)

int型 並べ替え(セット ジョブ s, 楽しいです フロート キー、 int型 注文)

int型 並べ替え(セット ジョブ s, 楽しいです 日付時刻 キー、 int型 注文)

int型 並べ替え(セット ジョブ s, 楽しいです サイズ キー、 int型 注文)

コラボレー s ソートするジョブのセット。 キー はソートキーであり、
唯一の引数が Job 型の関数、 注文 ソートです
順序: ASC、DESC。

説明: の要素をソートします s , ASCending または
DESCによって返された値の順序 キー 機能、
一連のジョブのすべてのメンバーに適用されます。 の s オブジェクトが変更されました
この呼び出しで。 これは、結果に応じて SUCCESS または FAIL を返します。
並べ替え。

例:
サイズ JobMemReqGet(ジョブ ジョブ)
{
サイズ メモリ;

memの = JobSizeResReqGet(ジョブ、 "mem");
return(覚えています);
}

sched_main()
{
サーバー マスター;

作成セッションプロセスで ジョブ 仕事。

int型 注文;

// 取得する ローカル
マスター = AllServersLocalHostGet();

jobs = サーバージョブ取得(主人);
並べ替え(ジョブ、 JobPriorityGet、 ASC);
並べ替え(ジョブ、 JobIdGet、 DESC);
注文 = ASC;
並べ替え(ジョブ、 JobDateTimeCreatedGet、 注文);
注文 = 説明;
並べ替え(ジョブ、 JobMemReqGet、 注文);
}

int型 並べ替え(セット その s, 楽しいです int型 キー、 int型 注文)

int型 並べ替え(セット その s, 楽しいです 文字列 キー、 int型 注文)

int型 並べ替え(セット その s, 楽しいです フロート キー、 int型 注文)

int型 並べ替え(セット その s, 楽しいです 日付時刻 キー、 int型 注文)

int型 並べ替え(セット その s, 楽しいです サイズ キー、 int型 注文)

コラボレー s 並べ替えるキューのセット。 キー はソートキーであり、
唯一の引数が Que 型である関数、 注文 ソートです
順序: ASC、DESC。

説明: の要素をソートします s , ASCending または
DESCによって返された値の順序 キー 機能、
一連のキューのすべてのメンバーに適用されます。 の s オブジェクトは
この呼び出しで変更されました。 これは、状況に応じて SUCCESS または FAIL を返します。
ある種の結果。

例:
サイズ QueMemAvailGet(キュー よりも)
{
サイズ メモリ;

memの = QueSizeResAvailGet(que, "mem");
return(覚えています);
}

sched_main()
{
サーバー マスター;

作成セッションプロセスで その 質問;
int型 注文;

// 取得する ローカル
マスター = AllServersLocalHostGet();

質問 = サーバーキュー取得(主人);
並べ替え(クエリ、 QuePriorityGet、 ASC);
並べ替え(クエリ、 QueNameGet、 ASC);
注文 = 説明;
並べ替え(クエリ、 QueMemAvailGet、 注文);
}

int型 並べ替え(セット サーバー s, 楽しいです int型 キー、 int型 注文)

int型 並べ替え(セット サーバー s, 楽しいです 文字列 キー、 int型 注文)

int型 並べ替え(セット サーバー s, 楽しいです フロート キー、 int型 注文)

int型 並べ替え(セット サーバー s, 楽しいです 日付時刻 キー、 int型 注文)

int型 並べ替え(セット サーバー s, 楽しいです サイズ キー、 int型 注文)

コラボレー s ソートするサーバーのセット。 キー はソートキーです
唯一の引数が Server 型の関数、 注文
ソート順: ASC、DESC。

説明: の要素をソートします s , ASCending または
DESCによって返された値の順序 キー 機能、
サーバー セットのすべてのメンバーに適用されます。 の s オブジェクトは
この呼び出しで変更されました。 これは、状況に応じて SUCCESS または FAIL を返します。
ある種の結果。

例:
サイズ ServerMemAvailGet(サーバー サーブ)
{
サイズ メモリ;

memの = ServerSizeResAvailGet(serv, "mem");
return(覚えています);
}

sched_main()
{
作成セッションプロセスで サーバー サーバー;

int型 注文;

int型 戻る;

サーバー = AllServersGet();

RET = 並べ替え(サーバー、 ServerMaxRunJobsGet、 ASC);
並べ替え(サーバー、 ServerInetAddrGet、 ASC);

注文 = 説明;
並べ替え(サーバー、 ServerMemAvailGet、 注文);
}

int型 並べ替え(セット Cノード s, 楽しいです int型 キー、 int型 注文)

int型 並べ替え(セット Cノード s, 楽しいです 文字列 キー、 int型 注文)

int型 並べ替え(セット Cノード s, 楽しいです フロート キー、 int型 注文)

int型 並べ替え(セット Cノード s, 楽しいです 日付時刻 キー、 int型 注文)

int型 並べ替え(セット Cノード s, 楽しいです サイズ キー、 int型 注文)

コラボレー s ソートするノードのセット。 キー はソートキーであり、
唯一の引数が CNode 型の関数、 注文 ソートです
順序: ASC、DESC。

説明: の要素をソートします s , ASCending または
DESCによって返された値の順序 キー 機能、
ノードのセットのすべてのメンバーに適用されます。 の s オブジェクトは
この呼び出しで変更されました。 これは、状況に応じて SUCCESS または FAIL を返します。
ある種の結果。

例:
サイズ CNodeMyMemAvailGet(CNode CN)
{
サイズ メモリ;

memの = CNodeMemAvailGet(cn, "バーチャル");
return(覚えています);
}

sched_main()
{
作成セッションプロセスで Cノード スクノード;

int型 注文;

スクノード = AllNodesGet();

ソート(scnode、 CNodeIdletimeGet、 ASC);
ソート(scnode、 CNodeNameGet、 ASC);
注文 = 説明;
ソート(scnode、 CNodeMyMemAvailGet、 注文);
}

CNode..Get() 関数


前のセクションで説明した CNode..Get() 関数の戻り値は次のとおりです。
スケジューリングの反復ごとに CNode の MOM にリソース クエリを送信することによって取得されます。
たとえば、 CNodeLoadAveGet(ノード) 一部から取得した値を返します
resource> query (これは文字列「loadave」の可能性があります) をノードの MOM に送信します。 の
" -> CNode..Get()" マッピングは内部で確立されますが、
スケジューラ構成ファイルを介して、変更されたマッピングまたは追加のマッピングを追加できます。 構成
ファイルはで説明されています pbs_sched_basl(8B)。
すでに確立されているマッピングは、次のとおりです。

すべてのアーキテクチャの場合:

CNode..Get() 実際の コール host リソースを追加する。
======================== =============
CNodeOsGet(ノード) アーチ
CNodeLoadAveGet(ノード) ロードエイブ
CNodeIdletimeGet(ノード) アイドルタイム

onworks.net サービスを使用してオンラインで basl2cB を使用する


無料のサーバーとワークステーション

Windows と Linux のアプリをダウンロード

Linuxコマンド

Ad