ພາສາອັງກິດພາສາຝຣັ່ງແອສປາໂຍນ

Ad


OnWorks favicon

basl2cB - ອອນລາຍໃນຄລາວ

ແລ່ນ basl2cB ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີຜ່ານ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ນີ້ແມ່ນຄໍາສັ່ງ basl2cB ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


basl2c - ປ່ຽນລະຫັດ BASL (Batch Scheduling Language) ເປັນລະຫັດຕາຕະລາງ C.

ສະຫຼຸບສັງລວມ


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

ລາຍລະອຽດ


basl2c ແມ່ນ BASL ກັບ C compiler ທີ່ຜະລິດລະຫັດລະດັບປານກາງທີ່ສາມາດປ້ອນເຂົ້າໄປໃນ a
compiler C ປົກກະຕິ, ແລະເຊື່ອມຕໍ່ກັບຫ້ອງສະຫມຸດ PBS ເພື່ອຜະລິດຕາຕະລາງປະຕິບັດໄດ້.
Basl2c ໃຊ້ເປັນການປ້ອນຂໍ້ມູນ a baslFile, ເຊິ່ງເປັນໂຄງການທີ່ຂຽນໄວ້ໃນ Batch Scheduling
ພາສາ, ປະກອບມີລະຫັດການກໍານົດເວລາຕົ້ນຕໍ. Basl2c ຈາກນັ້ນປ່ຽນໂຄງສ້າງ BASL
ໃນໄຟລ໌ເຂົ້າໄປໃນຄໍາຖະແຫຼງ C, ແລະມັນຍັງຕິດລະຫັດເພີ່ມເຕີມເພື່ອຜະລິດ PBS
ລະຫັດແຫຼ່ງຕາຕະລາງ. ໂດຍຄ່າເລີ່ມຕົ້ນ, ລະຫັດ C ທີ່ໄດ້ຮັບຜົນໄດ້ຖືກຂຽນໄວ້ໃນໄຟລ໌
pbs_sche.c.

ຊື່ເສັ້ນທາງເຕັມໄປຫາໄຟລ໌ C ທີ່ໄດ້ຮັບຜົນແມ່ນສິ່ງທີ່ຈໍາເປັນຕ້ອງໄດ້ລະບຸໄວ້ໃນ SCHD_CODE
ຕົວແປໃນ local.mk ກ່ອນທີ່ຈະລວບລວມຕາຕະລາງ BASL ເພື່ອຜະລິດ pbs_sche
ປະຕິບັດໄດ້.

OPTIONS


-d ພິມ​ຂໍ້​ຄວາມ​ແກ້​ໄຂ​ເພີ່ມ​ເຕີມ​ເພື່ອ lexer (ເບິ່ງ -l ທາງ​ເລືອກ​)​, parser (ເບິ່ງ -p
ທາງເລືອກ), ຕາຕະລາງສັນຍາລັກ (ເບິ່ງ -y ທາງເລືອກ), ການວິເຄາະ semantic (ເບິ່ງ -s ທາງເລືອກ), ແລະລະຫັດ
generator (ເບິ່ງ -g ທາງເລືອກ).

-l lexerDebugFile
lexerDebugFile ແມ່ນຊື່ຂອງໄຟລ໌ທີ່ຈະຂຽນໃສ່ຂໍ້ຄວາມແກ້ບັນຫາທີ່ສ້າງຂຶ້ນ
ໃນຂະນະທີ່ສະແກນຫາ tokens.

-p parserDebugFile
parserDebugFile ແມ່ນຊື່ຂອງໄຟລ໌ທີ່ຈະຂຽນໃສ່ຂໍ້ຄວາມແກ້ບັນຫາທີ່ສ້າງຂຶ້ນ
ໃນ​ຂະ​ນະ​ທີ່​ການ​ວາງ tokens ເຂົ້າ​ກັນ​ໃນ​ວິ​ທີ​ການ​ນໍາ​ໃຊ້​ໄດ້​.

-y symtabDebugFile
symtabDebugFile ແມ່ນຊື່ຂອງໄຟລ໌ທີ່ຈະຂຽນເຂົ້າໄປໃນຂໍ້ຄວາມແກ້ບັນຫາທີ່ກ່ຽວຂ້ອງກັບ
ຕາ​ຕະ​ລາງ​ສັນ​ຍາ​ລັກ​.

-s semanticDebugFile
semanticDebugFile ແມ່ນຊື່ຂອງໄຟລ໌ທີ່ຈະຂຽນເຂົ້າໃນຂໍ້ຄວາມແກ້ບັນຫາ
ສ້າງຂຶ້ນໃນຂະນະທີ່ກວດສອບເພື່ອໃຫ້ແນ່ໃຈວ່າຕົວແປແລະຕົວປະຕິບັດການຖືກນໍາໃຊ້ໃນ a
ວິທີການທີ່ສອດຄ່ອງ.

-g codegenDebugFile
codegenDebugFile ແມ່ນຊື່ຂອງໄຟລ໌ທີ່ຈະຂຽນໃສ່ຂໍ້ຄວາມແກ້ບັນຫາທີ່ສ້າງຂຶ້ນ
ໃນຂະນະທີ່ການແປງຖະແຫຼງການ BASL ເປັນຖະແຫຼງການ C.

-c cFile
cFile ແມ່ນ​ຊື່​ຂອງ​ໄຟລ​໌​ທີ່​ລະ​ຫັດ C ທີ່​ຜະ​ລິດ​ໄດ້​ຖືກ​ຂຽນ​ເຂົ້າ​ໄປ​ໃນ​.

HAND STRUCTURE


ໂຄງສ້າງພື້ນຖານຂອງລະຫັດຕາຕະລາງທີ່ຂຽນໃນ BASL ແມ່ນດັ່ງຕໍ່ໄປນີ້:
ສູນ or ເພີ່ມເຕີມ FUNCTIONS ຄໍານິຍາມ
ສູນ or ເພີ່ມເຕີມ ທົ່ວໂລກ ຄວາມເປັນໄປໄດ້ ຄຳ ອະທິບາຍ
ສູນ or ເພີ່ມເຕີມ ການມອບຫມາຍ ບົດລາຍງານ (ເຖິງ ເລີ່ມຕົ້ນ ທົ່ວໂລກ ຕົວແປ)
sche_main()
{
ຫນຶ່ງ or ເພີ່ມເຕີມ ຄວາມເປັນໄປໄດ້ ຄຳ ອະທິບາຍ

ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}

ຍົກ​ຕົວ​ຢ່າງ,
% cat sched.basl
Int ລວມ(Int a, Int b)
{
Int s;
s = a + b;
ກັບຄືນ;
}
Int ໂລກ;
sche_main()
{
Int c;

a = 3;
b = 4;
c = sum(a, b);
ພິມ(c);
ໂລກ = 5;
ພິມ(ໂລກ);
}

sche_main() ແມ່ນຟັງຊັນທີ່ຖືກເອີ້ນຢູ່ໃນທຸກໆການກໍານົດເວລາ iteration.

FUNCTIONS


ເພື່ອກໍານົດຟັງຊັນທີ່ສາມາດຖືກເອີ້ນໃນຫນ້າທີ່ຕໍ່ໄປ, syntax ແມ່ນ:

ປະເພດກັບຄືນ function-name ( DATATYPE1 IDENTIFIER1,
DATATYPE2 IDENTIFIER2, ... )
{
ຫນຶ່ງ or ເພີ່ມເຕີມ ຄວາມເປັນໄປໄດ້ ຄຳ ອະທິບາຍ

ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}

ຍົກ​ຕົວ​ຢ່າງ,
void printStuff(ວັນອາທິດ ດາວ​ໂຫຼດ DateTime t, string str,
ເລືອກຂະຫນາດ ເຊລ, CNode cn)
{
ພິມ(dow);
ພິມ(t);
ພິມ(str);
ພິມ(sz);
ພິມ(cn);
}

ຟັງຊັນທີ່ຖືກຕ້ອງ ປະເພດກັບຄືນ ຄື: Void, Int, Float, Dayofweek, DateTime, String, Size,
ເຊີຟເວີ, Que, ວຽກ, CNode, ກໍານົດເຄື່ອງແມ່ຂ່າຍ, ກໍານົດ Que, ກໍານົດວຽກ, ກໍານົດ CNode.

ປະເພດຂໍ້ມູນທີ່ຖືກຕ້ອງ ( DATATYPE1, DATATYPE2, ... ) ສໍາລັບຕົວກໍານົດພາລາມິເຕີແມ່ນ: int,
Float, Dayofweek, DateTime, String, Size, Server, Que, Job, CNode, Set Server, Set Que,
ຕັ້ງຄ່າວຽກ, ຕັ້ງ CNode, Range Int, Range Float, Range Dayofweek, Range DateTime, Range Size,
Fun Int, Fun Float, Fun Void, Fun Dayofweek, Fun DateTime, Fun String, Fun Size, Fun
Server, Fun Que, Fun Job, Fun CNode, Fun Set Server, Fun Set Que, Fun Set Job, Fun Set
CNode. ປະເພດຂໍ້ມູນເຫຼົ່ານີ້ຈະຖືກປຶກສາຫາລືໃນຫົວຂໍ້ຕໍ່ໄປ.

ຟັງຊັນຖືກເອີ້ນໂດຍຊື່ແລະຂໍ້ໂຕ້ແຍ້ງຂອງພວກມັນຄືກັບໃນ:

ສິ່ງພິມ( ຈັນ, (5|1|1997@14:32:00), "ຕາຕະລາງ ເລີ່ມຕົ້ນ",
30gb, node );

basl2c ຕົວຈິງແລ້ວຈະເພີ່ມຄໍານໍາຫນ້າ "basl_" ໃສ່ຊື່ຟັງຊັນທີ່ກໍານົດເວລາໃຫ້
writer ເພື່ອຫຼຸດຜ່ອນໂອກາດຂອງການ collision ຊື່, ເຊິ່ງສາມາດສົ່ງຜົນໃນເວລາທີ່ລະຫັດ C ຜົນໄດ້ຮັບ
ເຊື່ອມຕໍ່ກັບຫ້ອງສະຫມຸດ PBS, BASL. ຕົວຢ່າງ, ຖ້າທ່ານເບິ່ງລະຫັດ C ທີ່ຜະລິດສໍາລັບ
ສິ່ງພິມ, ເຈົ້າຈະເຫັນ,

basl_printStuff( MON, (5|1|1997@14:32:00),
"sched ເລີ່ມຕົ້ນ", 30gb, node );

ເຊັ່ນດຽວກັບ C, ການເອີ້ນຟັງຊັນທັງໝົດຈະຕ້ອງໄດ້ກຳນົດໄວ້ກ່ອນໜ້ານີ້. ຜູ້ລວບລວມຂໍ້ມູນ BASL ຈະ
ກວດເບິ່ງໃຫ້ແນ່ໃຈວ່າການໂຕ້ຖຽງໃນການໂທຟັງຊັນກົງກັນແທ້ (ໃນຂໍ້ກໍານົດຂອງ
types) ກັບພາລາມິເຕີໃນນິຍາມຟັງຊັນ.

ສອງປະເພດຂອງຟັງຊັນທີ່ມີຢູ່ໃນ BASL: ຫນ້າທີ່ກໍານົດໂດຍຜູ້ໃຊ້ແລະຫນ້າທີ່ກໍານົດໄວ້ລ່ວງຫນ້າ.
ຫນ້າທີ່ກໍານົດໂດຍຜູ້ໃຊ້ແມ່ນຜູ້ທີ່ນັກຂຽນກໍານົດເວລາໃຫ້ຄໍານິຍາມສໍາລັບ,
ໃນ​ຂະ​ນະ​ທີ່​ຫນ້າ​ທີ່​ກໍາ​ນົດ​ໄວ້​ລ່ວງ​ຫນ້າ​ແມ່ນ​ຜູ້​ທີ່​ສາ​ມາດ​ເອີ້ນ​ໄດ້​ທັນ​ທີ​ໂດຍ​ບໍ່​ມີ​ການ​ຈໍາ​ເປັນ​ຕ້ອງ​ໄດ້​
ການກໍານົດມັນ. ສໍາລັບບັນຊີລາຍຊື່ຂອງຫນ້າທີ່ກໍານົດໄວ້ລ່ວງຫນ້າ, ເບິ່ງພາກກ່ຽວກັບ ກຳນົດໄວ້ລ່ວງໜ້າ FUNCTIONS .

ຄວາມເປັນໄປໄດ້ ຄຳ ອະທິບາຍ


ເຊັ່ນດຽວກັນກັບໃນ C, ຕົວແປທັງຫມົດໃນລະຫັດ BASL ຕ້ອງໄດ້ຮັບການປະກາດຢ່າງຈະແຈ້ງກ່ອນທີ່ຈະນໍາໃຊ້. ເຫຼົ່ານັ້ນ
ຕົວແປທີ່ປະກາດຢູ່ນອກຟັງຊັນໃດນຶ່ງແມ່ນເອີ້ນວ່າຕົວແປທົ່ວໂລກ, ໃນຂະນະທີ່
ຕົວແປທີ່ຖືກປະກາດຢູ່ໃນຮ່າງກາຍຂອງຫນ້າທີ່ເອີ້ນວ່າຕົວແປທ້ອງຖິ່ນ. ທົ່ວໂລກ
ຕົວແປແມ່ນສາມາດໃຊ້ໄດ້ທຸກບ່ອນພາຍໃນລະຫັດ BASL, ໃນຂະນະທີ່ຕົວແປທ້ອງຖິ່ນສາມາດອ່ານໄດ້
ພຽງແຕ່ຢູ່ໃນຫນ້າທີ່ທີ່ເຂົາເຈົ້າໄດ້ຖືກປະກາດ.

syntax ຂອງການປະກາດຕົວແປແມ່ນ:

DATATYPE ຕົວລະບຸຕົວຕົນ ;

ບ່ອນທີ່ DATATYPE ສາມາດເປັນ: Int, Float, Dayofweek, DateTime, String, Size, Server, Que, Job,
CNode, ຕັ້ງເຊີບເວີ, ຕັ້ງ Que, ກໍານົດວຽກ, ຕັ້ງ CNode, Range Int, Range Float, Range Dayofweek,
Range DateTime, ຂະໜາດຊ່ວງ.

ຂໍ້ມູນ TYPE


void ໃຊ້ສໍາລັບຟັງຊັນທີ່ບໍ່ສົ່ງຄືນຄ່າ.

Int ລົງລາຍເຊັນ, ຕົວເລກທັງໝົດໃຫ້ຢູ່ໃນຖານ 10.

ຕົວ​ຢ່າງ​ຄົງ​ທີ່​:
5, +1, -3, ຄວາມສຳເລັດ (=1), FAIL (=0), TRUE (=1), FALSE (=0)

float ຕົວເລກທີ່ແທ້ຈິງທີ່ຖືກສະແດງເປັນສອງເທົ່າໃນລະຫັດ C ທີ່ແປແລ້ວ.
ຕົວຢ່າງຄົງທີ່: 4.3, +1.2, -2.6

ມື້ຂອງອາທິດ
ຄ່າຄົງທີ່: SUN, MON, TUE, WED, THU, FRI, SAT, ພາຍໃນເປັນຕົວແທນເປັນ
integer value constant with SUN=0, MON=1, ແລະອື່ນໆ.

DateTime
ລະບຸໃນຮູບແບບໜຶ່ງໃນ 3 ຮູບແບບ:

[1] (m|d|y) ບ່ອນທີ່ 1 <= m <= 12, 1 <= d <= 31, 0 <= y, ex. (4|4|1997);

[2] (hh:mm:ss) where 0 <= hh <= 23, 0 <= mm <= 59, 0 <= ss <= 61, ex.
(12:01:00);

[3] (m|d|y@hh:mm:ss), ex. (4|4|1997@12:01:00)
ໃນ​ລະ​ຫວ່າງ​ການ​ສົມ​ທຽບ​ວັນ​ທີ / ເວ​ລາ​, "ປັດ​ຈຸ​ບັນ​" ທີ່​ໃຊ້​ເວ​ລາ​ແມ່ນ​ການ​ທົດ​ແທນ​ຖ້າ​ຫາກ​ວ່າ​ເວ​ລາ​
ສ່ວນແມ່ນບໍ່ໄດ້ໃຫ້ (ຮູບແບບ [1]); ວັນທີ "ດຽວນີ້" ຖືກປ່ຽນແທນຖ້າ
ສ່ວນວັນທີບໍ່ໄດ້ຖືກມອບໃຫ້ (ຮູບແບບ [2]). ນອກຈາກນີ້, ສ່ວນຫນຶ່ງປີເຕັມຕ້ອງ
ໄດ້ຮັບການມອບໃຫ້ (ie 1997 ແທນທີ່ຈະເປັນ 97) ໃນວັນທີເພື່ອຫຼີກເວັ້ນການບໍ່ແນ່ນອນ.

string ສະຕຣິງຖືກຫຸ້ມຢູ່ໃນວົງຢືມ (") ແລະມັນສາມາດມີສິ່ງໃດແດ່ຍົກເວັ້ນອັນອື່ນ
quote, ແຖວໃຫມ່, ແລະວົງເລັບຊ້າຍແລະຂວາ.
ຕົວຢ່າງຄົງທີ່: "a ຕົວຢ່າງ string", 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.
bytes ໃນເຄື່ອງ 32-bit).

ໃນເວລາທີ່ດໍາເນີນການກ່ຽວກັບ 2 ຂະຫນາດ operands ທີ່ມີ suffixes ທີ່ແຕກຕ່າງກັນ, suffix ຂອງ
"ຕ່ໍາ" ຂອງທັງສອງຈະເປັນ suffix ຜົນໄດ້ຮັບ. ຍົກ​ຕົວ​ຢ່າງ,
10mb + 10gb = 10250mb
ຕົວຢ່າງຄົງທີ່: -1b, 2w, 1kb, 2mw, +3gb, 4tw, 6Pb

ລະດັບ Int

ຮູບແບບ: (ຄ່າ Int ຕໍ່າ, ຄ່າ Int ສູງ)
ບ່ອນທີ່ຄ່າ Int ຕໍ່າ <= ຄ່າ Int ສູງ. ຕົວຢ່າງຄົງທີ່: (1,3)

ລະດັບ float

ຮູບແບບ: (ຄ່າ Float ຕໍ່າ, ຄ່າ Float ສູງ)
ບ່ອນທີ່ມີຄ່າຕໍ່າ <= ຄ່າສູງ. ຕົວຢ່າງຄົງທີ່: (2.3, 4.6)

ລະດັບ ມື້ຂອງອາທິດ

ຮູບແບບ: (ມື້ກ່ອນໜ້າ, ມື້ຕໍ່ມາ)
ບ່ອນທີ່ມື້ກ່ອນຫນ້າ <= ມື້ຕໍ່ມາ. ຕົວຢ່າງຄົງທີ່: (WED, FRI)

ລະດັບ DateTime

ຮູບແບບ: (ວັນທີ/ເວລາກ່ອນໜ້າ, ວັນທີ/ເວລາຕໍ່ມາ)
ບ່ອນທີ່ວັນທີ/ເວລາກ່ອນໜ້າ <= ຕໍ່ມາວັນທີ/ເວລາ.
ຫມາຍ​ເຫດ​: ຖ້າ​ຫາກ​ວ່າ​ໄລ​ຍະ​ທີ່​ມີ​ພຽງ​ແຕ່​ສ່ວນ​ທີ່​ໃຊ້​ເວ​ລາ​, ແລະ​ເວ​ລາ​ກ່ອນ​ຫນ້າ​ນັ້ນ "ປະ​ກົດ​ວ່າ​" ກັບ​
be > ເວລາຕໍ່ມາຄືກັບ "((18:0:0), (6:0:0))", ຈາກນັ້ນໃນລະຫວ່າງວັນທີ/ເວລາ
ການປຽບທຽບ, ເວລາ "ຕໍ່ມາ" ຈະຖືກປັບໂດຍມື້ຫນຶ່ງເພື່ອວ່າມັນຈະ
ຄ້າຍ​ຄື: "( ( @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)

Server ແຜນທີ່ໂດຍກົງກັບວັດຖຸເຊີບເວີ PBS. ກ Server ຈັດການຫນຶ່ງຫຼືຫຼາຍກວ່ານັ້ນ ວ່າ ວັດຖຸ.
ຕົວຢ່າງຄົງທີ່: NOSERVER

CNode ສໍາລັບ node ຄອມພິວເຕີປະກອບດ້ວຍຮູບພາບ OS ດຽວ, ຫນ່ວຍຄວາມຈໍາທີ່ໃຊ້ຮ່ວມກັນ, ແລະຊຸດ
ຂອງ CPU. CNode ແລ່ນ 1 PBS MOM.
ຕົວຢ່າງຄົງທີ່: NOCNODE

ວ່າ ແຜນທີ່ໂດຍກົງໄປຫາວັດຖຸແຖວ PBS. ກ ວ່າ object spools ໜຶ່ງ ຫຼືຫຼາຍກວ່ານັ້ນ ວຽກເຮັດງານທໍາ
ວັດຖຸ.
ຕົວຢ່າງຄົງທີ່: NOQUE

ວຽກເຮັດງານທໍາ ແຜນທີ່ໂດຍກົງກັບວັດຖຸວຽກ PBS. ກ ວຽກເຮັດງານທໍາ ວັດຖຸມີຄຸນລັກສະນະບາງຢ່າງ ແລະ
ຄວາມຕ້ອງການຊັບພະຍາກອນ.
ຕົວຢ່າງຄົງທີ່: NOJOB

ທີ່ກໍານົດໄວ້ Server
ບັນຊີລາຍຊື່ຂອງວັດຖຸຂອງເຄື່ອງແມ່ຂ່າຍ.
ຕົວຢ່າງຄົງທີ່: EMPTYSETSERVER

ທີ່ກໍານົດໄວ້ CNode
ບັນຊີລາຍຊື່ຂອງວັດຖຸ CNode.
ຕົວຢ່າງຄົງທີ່: EMPTYSETCNODE

ທີ່ກໍານົດໄວ້ ວ່າ ບັນຊີລາຍຊື່ຂອງວັດຖຸ Que.
ຕົວຢ່າງຄົງທີ່: EMPTYSETQUE

ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ ບັນຊີລາຍຊື່ຂອງວັດຖຸວຽກເຮັດງານທໍາ.
ຕົວຢ່າງຄົງທີ່: EMPTYSETJOB

BASL-ກໍານົດ ຄົງທີ່


ເຫຼົ່ານີ້ແມ່ນຄ່າຄົງທີ່ທີ່ບໍ່ສາມາດໃຊ້ສໍາລັບການຕັ້ງຊື່ຕົວລະບຸ (ເບິ່ງຫົວຂໍ້ຕໍ່ໄປ). ເຫຼົ່ານີ້
ຢູ່ໃນຕົວພິມໃຫຍ່ສະເໝີ.

ຂໍ້ມູນ TYPE BASL-ກໍານົດ ໝັ້ນ ຄົງ
=================== =============================================
ມື້ຂອງອາທິດ ແດດ, ຈັນ, ອັງຄານ, ພຸດ, Thu, ສຸກ, SAT

Int ຄວາມ​ສໍາ​ເລັດ, ລົ້ມເຫລວ, ຜິດ, ຄວາມຈິງ, SyncRUN, ASYNCRUN,
ລົບລ້າງ, RERUN, ຖື, ປ່ອຍ, ສັນຍາລັກ,
MODIFYATTR, ແກ້ໄຂ, SERVER_ACTIVE,
SERVER_IDLE, SERVER_SCHED, SERVER_TERM,
SERVER_TERMDELAY, QTYPE_E, QTYPE_R,
SCHED_DISABLED, SCHED_ENABLED, ການຂົນສົ່ງ,
ຄິວ, ຖື, ລໍຖ້າ, ແລ່ນ, ອອກໄປ,
CNODE_OFLINE, 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

Server ໂນເຊີເວີ
ທີ່ກໍານົດໄວ້ Server EMPTYSETSERVER

CNode ໂນກໂນດ
ທີ່ກໍານົດໄວ້ CNode EMPTYSETCNODE

ວ່າ NOQUE
ທີ່ກໍານົດໄວ້ ວ່າ EMPTYSETQUE

ວຽກເຮັດງານທໍາ NOJOB
ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ EMPTYSETJOB

string NULLSTR

ຕົວລະບຸຕົວຕົນ


ຕົວລະບຸ (ໃຊ້ສໍາລັບຊື່ຕົວແປ ແລະຊື່ຟັງຊັນ) ຢູ່ໃນຮູບແບບຕົວອັກສອນ ແລະຕົວເລກ, ມີ
ຕົວອັກສອນພິເສດ (_) ອະນຸຍາດໃຫ້. ໃນປັດຈຸບັນ, BASL ສາມາດຈັດການກັບຕົວລະບຸເທົ່ານັ້ນ
ທີ່ມີຄວາມຍາວເຖິງ 80 ຕົວອັກສອນ. ນອກຈາກນີ້, ທ່ານບໍ່ສາມາດໃຊ້ຊື່ຄົງທີ່ທີ່ກໍານົດ BASL ສໍາລັບ
ການຕັ້ງຊື່ຕົວລະບຸ.

ຖະແຫຼງການ


In BASL(2​)​, ທ່ານ​ສາ​ມາດ​ມີ​ຄໍາ​ຖະ​ແຫຼງ​ການ​ດຽວ​ທີ່​ສິ້ນ​ສຸດ​ໂດຍ​ເຄິ່ງ​ຈໍ້າ​ສອງ​ເມັດ​, ຫຼື​ກຸ່ມ​ຂອງ​
ຖະແຫຼງການ (ເອີ້ນວ່າຄຳຖະແຫຼງປະສົມ ຫຼື ບລ໋ອກ) ຈຳກັດໂດຍ '{' ແລະ '}'. ທີ່ແຕກຕ່າງກັນ
ປະເພດຂອງຄໍາຖະແຫຼງທີ່ສາມາດປາກົດຢູ່ໃນລະຫັດ BASL ແມ່ນ:

1. ຄໍາຖະແຫຼງການສະແດງອອກ
ຄໍາຖະແຫຼງການສະແດງອອກແມ່ນຮູບແບບໃດກໍ່ຕາມ:

ຕົວຢ່າງ ;

ບ່ອນທີ່ ຕົວຢ່າງ ສາມາດເປັນ:

a) ການສະແດງອອກທາງເລກເລກ

lexpr + rexpr (ເພີ່ມ)
lexpr - rexpr (ລົບ)
lexpr * rexpr (ຄູນ)
lexpr / rexpr (ແບ່ງ)
lexpr % rexpr (ໂມດູລ or ສ່ວນທີ່ເຫຼືອ)

ໝາຍເຫດ: ການເພີ່ມ, ການຫັກລົບ, ການຄູນ, ການຫານ, ແລະສ່ວນທີ່ເຫຼືອ
ຈະຖືກອະນຸຍາດໃຫ້ພຽງແຕ່ສໍາລັບປະເພດທີ່ເຫມາະສົມແລະຖ້າຊ້າຍແລະຂວາ
ການສະແດງອອກແມ່ນປະເພດທີ່ສອດຄ່ອງກັນ. ຕາຕະລາງຂ້າງລຸ່ມນີ້ສະແດງໃຫ້ເຫັນເຖິງສິ່ງທີ່
ປະເພດແມ່ນສອດຄ່ອງໃນບັນດາຕົວປະຕິບັດການຕ່າງໆ:

ສໍາລັບ +:

lexpr rexpr
============ ============
Int or float Int or float
ເລືອກຂະຫນາດ ເລືອກຂະຫນາດ
string string

ສໍາລັບ -, *, /:

lexpr rexpr
============ ============
Int or float Int or float
ເລືອກຂະຫນາດ ເລືອກຂະຫນາດ

ສໍາລັບ %:

lexpr rexpr
============ ============
Int or float Int or float

ນີ້ແມ່ນຕົວຢ່າງການສະແດງອອກຕົວເລກຕົວເລກ:
Int i1;
Int i2;
float f1;
float f2;
ເລືອກຂະຫນາດ sz1;
ເລືອກຂະຫນາດ sz2;
string str1;
string str2;

i1 + i2;
f1 - i2;
SZ1 * SZ2 * 2b
SZ1 / 1024b

p1 = "basl";
p2 = " ເຢັນ";

// ໄດ້ ດັ່ງຕໍ່ໄປນີ້ is a string ກົງກັນຂ້າມ
// ປະຕິບັດງານ ຜົນໄດ້ຮັບ in ໄດ້ ຊ່ອຍແນ່:
// "ບາສລ ເຢັນ"
p1 + str2;

i1 % 10

b) ການສະແດງອອກ Unary

+ expr // ໃນທາງບວກ - ຄູນ by 1 an
// ການສະແດງອອກ ທີ່ is
// of int, ເລື່ອນ, or
// ເລືອກຂະຫນາດ ປະເພດ

-ຕົວຢ່າງ // ກະທົບທາງລົບ - ຄູນ by -1 an
// ການສະແດງອອກ ທີ່ is
// of int, ເລື່ອນ, or
// ເລືອກຂະຫນາດ ປະເພດ

! expr // ບໍ່ - ປ່ຽນແປງ a ບໍ່ແມ່ນສູນ ຕົວຢ່າງ
// ມູນຄ່າ ເຂົ້າໄປໃນ 0, ແລະ a
// ສູນ ຕົວຢ່າງ ມູນຄ່າ ເຂົ້າໄປໃນ 1
// ບ່ອນທີ່ ຕົວຢ່າງ ປະເພດ ຕ້ອງ be
// of ປະເພດ Int or float

ບາງຕົວຢ່າງການສະແດງອອກ unary:
Int i;

+ 3
-(i + ປີ 4);
!i;

c) ການສະແດງອອກຢ່າງມີເຫດຜົນ

lexpr EQ rexpr
lexpr NEQ rexpr
lexpr LT rexpr
lexpr LE rexpr
lexpr GT rexpr
lexpr GE rexpr
lexpr ແລະ rexpr
lexpr OR rexpr

lexpr ແລະ rexpr ຕ້ອງມີປະເພດທີ່ສອດຄ່ອງກັນຕາມທີ່ສະແດງ
ໃນຕາຕະລາງຕໍ່ໄປນີ້:

terminal-expr rterminal-expr
============== ==============
Int or float Int or float
ມື້ຂອງອາທິດ ມື້ຂອງອາທິດ
DateTime DateTime
string string
ເລືອກຂະຫນາດ ເລືອກຂະຫນາດ
Server Server
ວ່າ ວ່າ
ວຽກເຮັດງານທໍາ ວຽກເຮັດງານທໍາ
CNode CNode
ທີ່ກໍານົດໄວ້ Server ທີ່ກໍານົດໄວ້ Server
ທີ່ກໍານົດໄວ້ ວ່າ ທີ່ກໍານົດໄວ້ ວ່າ
ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ
ທີ່ກໍານົດໄວ້ CNode ທີ່ກໍານົດໄວ້ CNode

ສໍາລັບການ ແລະ, OR ຜູ້ປະກອບການ, ໄດ້ lexpr, rexpr ປະເພດທີ່ສອດຄ່ອງແມ່ນ Int ຫຼື
ລອຍ.

ບາງຕົວຢ່າງຢ່າງມີເຫດຜົນ:

i1 EQ i2;
i1 NEQ f2;
dow1 LE dow2;
d1 LT d2;
p1 GT str2;
SZ1 GE sz2;

d) ການສະແດງອອກຫຼັງການດໍາເນີນການ
ເຫຼົ່ານີ້ແມ່ນການສະແດງອອກທີ່ເປັນພຽງແຕ່ທາງລັດໄປຫາການມອບຫມາຍ
ຖະແຫຼງການ.

IDENTIFIER++; // identifier=ຕົວລະບຸ+1
IDENTIFIER--; // identifier=ຕົວລະບຸ-1

ຕົວລະບຸຕົວຕົນ ຕ້ອງເປັນປະເພດ Int ຫຼື Float.

ຕົວຢ່າງ:
Int i;
float f;

i ++;
f--;

e) ຟັງຊັນໂທ

function-name ( arg1 ,arg2 ... , argN )

ບ່ອນທີ່ arg1, ..., argN ສາມາດຄົງທີ່ ຫຼືຕົວແປໄດ້. ທ່ານບໍ່ສາມາດມີ
ຟັງຊັນອື່ນໂທຫາເປັນການໂຕ້ຖຽງ.
ຕົວຢ່າງ:
void pr(Int a) {
ພິມ(a);
}

pr(5)

ມີຫນ້າທີ່ກໍານົດໄວ້ລ່ວງຫນ້າທີ່ແນ່ນອນທີ່ນັກຂຽນຕາຕະລາງສາມາດເຮັດໄດ້
ໂທອັດຕະໂນມັດໃນລະຫັດ BASL ຂອງລາວໂດຍບໍ່ຈໍາເປັນຕ້ອງກໍານົດມັນ.
ຫນ້າທີ່ເຫຼົ່ານີ້ຖືກເອີ້ນວ່າຫນ້າທີ່ຊ່ວຍ (ຫຼືຜູ້ຊ່ວຍ
functions) ແລະເຂົາເຈົ້າໄດ້ຖືກປຶກສາຫາລືພາຍໃຕ້ ກຳນົດໄວ້ລ່ວງໜ້າ FUNCTIONS ຫົວຂໍ້.

f) ຄົງທີ່
ບາງສຳນວນຄົງທີ່ທີ່ຖືກຕ້ອງແມ່ນໃຫ້ຢູ່ໃນຕໍ່ໄປນີ້:
5;
+ 1.2
Sun;
ມອນ;
TUE;
ພຸດ;
THU;
FRI;
SAT;
(4|4|1997);
(12:01:00);
(4|4|1997@12:01:00);
"ມະຫັດສະຈັນ";
-1b;
SYNCRUN;
ASYNCRUN;
ລົບ;
RERUN;
ຖື;
ປ່ອຍ;
ສັນຍານ;
MODIFYATTR;
MODIFYRES;
(1, 3);
(2.3, 4.6);
(WED, FRI);
((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);
NOSERVER;
NOCNODE;
NOQUE;
NOJOB;
EMPTYSETSERVER;
EMPTYSETCNODE;
EMPTYSETQUE;
EMPTYSETJOB;
NULLSTR;
ຄວາມ​ສໍາ​ເລັດ;
FAIL;
SERVER_ACTIVE;
SERVER_IDLE;
SERVER_SCHED;
SERVER_TERM;
SERVER_TERMDELAY;
QTYPE_E;
QTYPE_R;
SCHED_DISABLED;
SCHED_ENABLED;
ຜິດ;
ຄວາມຈິງ;
ການຂົນສົ່ງ;
ຄິວ;
HELD;
ລໍຖ້າ;
ແລ່ນ;
ອອກ;
CNODE_OFLINE;
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) ຕົວລະບຸ

ຕົວຢ່າງ:
int i;

i;

2. ຖະແຫຼງການມອບໝາຍ

ຕົວລະບຸຕົວຕົນ = ຕົວຢ່າງ ;

ຕົວລະບຸຕົວຕົນ ແລະ ຕົວຢ່າງ ຕ້ອງມີປະເພດທີ່ສອດຄ່ອງກັນ
ສະແດງຢູ່ໃນຕາຕະລາງຕໍ່ໄປນີ້:

ຕົວລະບຸ ຕົວຢ່າງ
=============== ===============
Int int, float
float int, float
ມື້ຂອງອາທິດ ມື້ຂອງອາທິດ
DateTime DateTime
string string
ເລືອກຂະຫນາດ ເລືອກຂະຫນາດ
ວ່າ ວ່າ
ວຽກເຮັດງານທໍາ ວຽກເຮັດງານທໍາ
CNode CNode
Server Server
ມື້ຂອງອາທິດ ມື້ຂອງອາທິດ
DateTime DateTime
ທີ່ກໍານົດໄວ້ Server ທີ່ກໍານົດໄວ້ Server
ທີ່ກໍານົດໄວ້ ວ່າ ທີ່ກໍານົດໄວ້ ວ່າ
ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ
ທີ່ກໍານົດໄວ້ CNode ທີ່ກໍານົດໄວ້ CNode
ລະດັບ Int ລະດັບ Int
ລະດັບ float ລະດັບ float
ລະດັບ ມື້ຂອງອາທິດ ລະດັບ ມື້ຂອງອາທິດ
ລະດັບ DateTime ລະດັບ DateTime
ລະດັບ ເລືອກຂະຫນາດ ລະດັບ ເລືອກຂະຫນາດ

3. ຖ້າ ... ອື່ນ ຄໍາຖະແຫຼງທີ່
ຮູບແບບຂອງຄໍາຖະແຫຼງການ if ແມ່ນຄ້າຍຄືກັນກັບໃນ C ດ້ວຍການກໍານົດຂອບເຂດ
"{" ແລະ "}" ມີຢູ່ສະເໝີ:

ຖ້າ( ຕົວຢ່າງ ) {
ສູນ or ເພີ່ມເຕີມ (ຄວາມຈິງ) ຖະແຫຼງການ
}

ຖ້າ( ຕົວຢ່າງ ) {
ສູນ or ເພີ່ມເຕີມ (ຄວາມຈິງ) ຖະແຫຼງການ
} ອື່ນ {
ສູນ or ເພີ່ມເຕີມ (ຜິດ) ຖະແຫຼງການ
}

ໄດ້ ຕົວຢ່າງ 's ປະເພດຈະຕ້ອງເປັນ Int ຫຼື Float, ແລະຫຼັງຈາກການປະເມີນຜົນຖ້າມັນ
ຄ່າບໍ່ແມ່ນສູນ, ຫຼັງຈາກນັ້ນການຖະແຫຼງທີ່ແທ້ຈິງຈະຖືກປະຕິບັດ. ສຸດທີສອງ
ແບບຟອມ, ຖ້າ ຕົວຢ່າງ ປະເມີນເປັນສູນ, ຫຼັງຈາກນັ້ນການຖະແຫຼງທີ່ບໍ່ຖືກຕ້ອງຈະຖືກປະຕິບັດ.

ບາງຕົວຢ່າງ if ຖະແຫຼງການແມ່ນໃຫ້ຢູ່ຂ້າງລຸ່ມນີ້:

if (2 * x )
{
y = y + 3;
ພິມ(y);
}

if (2 * x ) {
y = y + 3;
} ອື່ນ {
ຖ້າ( 3 * x ) {
y = 4;
} ອື່ນ {
y = 5;
}
}

4. ສໍາລັບການ loop ຄໍາຖະແຫຼງທີ່
ຮູບແບບຂອງຄໍາຖະແຫຼງການມີດັ່ງນີ້:

ສໍາລັບ( ເລີ່ມຕົ້ນ; ທົດສອບ ການປະຕິບັດ ) {
ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}

ຄືກັນກັບໃນ C, ສໍາລັບການ ທໍາ​ອິດ​ປະ​ຕິ​ບັດ​ ການເລີ່ມຕົ້ນ , ຫຼັງ​ຈາກ​ນັ້ນ​, ການ​ປະ​ເມີນ​ຜົນ​ ການທົດສອບ ສະພາບ
ເພື່ອເບິ່ງວ່າມັນຈະສົ່ງຄ່າທີ່ບໍ່ແມ່ນສູນ. ຖ້າຫາກວ່າມັນເຮັດ, ໄດ້ ສໍາລັບການ ຖະແຫຼງການແມ່ນ
ປະ​ຕິ​ບັດ​. ຫຼັງຈາກ ສໍາລັບການ ຖະແຫຼງການໄດ້ຖືກປະຕິບັດ, ຫຼັງຈາກນັ້ນ ການປະຕິບັດ ຖືກ​ປະ​ເມີນ​ຜົນ​,
ແລະຫຼັງຈາກນັ້ນມັນກວດເບິ່ງ ການທົດສອບ ສະ​ພາບ​ການ​ອີກ​ເທື່ອ​ຫນຶ່ງ​ໃນ​ລັກ​ສະ​ນະ​ດຽວ​ກັນ​ກັບ​ທີ່​ຜ່ານ​ມາ​.
ການເລີ່ມຕົ້ນ ແລະ ການປະຕິບັດ ສາ​ມາດ​ເປັນ​ການ​ສະ​ແດງ​ອອກ​ການ​ມອບ​ຫມາຍ​ທີ່​ງ່າຍ​ດາຍ​ຫຼື​ຫຼັງ​ການ​ປະ​ຕິ​ບັດ​ການ​
ການສະແດງອອກ. ການທົດສອບ ແມ່ນການສະແດງອອກຢ່າງມີເຫດຜົນ/ຄວາມສຳພັນ. ບາງຕົວຢ່າງສໍາລັບ
ຖະແຫຼງການແມ່ນໃຫ້ຢູ່ໃນຕໍ່ໄປນີ້:

ສໍາລັບການ (i = 0; i LT 3 ; i = i + 1)
{
ພິມ(i);
}

ສໍາລັບການ (i = 0; i LT 2 * x; i++)
{
if (x GT 3)
{
y = 99
} ອື່ນ
{
x = 73
}
}

5. foreach loop ຄໍາຖະແຫຼງທີ່
ຄໍາຖະແຫຼງການນີ້ຕົ້ນຕໍແມ່ນໃຊ້ສໍາລັບການສືບຕໍ່ດຶງຂໍ້ມູນແຕ່ລະອົງປະກອບຂອງ
a Set data type: Set Server, Set CNode, Set Job, Set Que. syntax ແມ່ນ:

foreach ( IDENTIFIER1 in IDENTIFIER2 ) {
ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}

ບ່ອນທີ່ການຈັບຄູ່ປະເພດຕໍ່ໄປນີ້ສໍາລັບຕົວລະບຸແມ່ນອະນຸຍາດໃຫ້:

IDENTIFIER1 IDENTIFIER2
=========== ===========
Server ທີ່ກໍານົດໄວ້ Server
ວ່າ ທີ່ກໍານົດໄວ້ ວ່າ
ວຽກເຮັດງານທໍາ ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ
CNode ທີ່ກໍານົດໄວ້ CNode

ຕົວຢ່າງ:
Server s;
ວ່າ q;
ວຽກເຮັດງານທໍາ j;
CNode c;

ທີ່ກໍານົດໄວ້ Server ss;
ທີ່ກໍານົດໄວ້ ວ່າ sq;
ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ sj ;
ທີ່ກໍານົດໄວ້ CNode sc;

foreach(s in ss){
ພິມ
}
foreach(ກ in sq){
ພິມ(q);
}
foreach(j in sj){
ພິມ(j);
}
foreach(ຄ in sc){
ພິມ(c);
}

6. ໃນຂະນະທີ່ loop ຄໍາຖະແຫຼງທີ່
syntax ຂອງ while loop ແມ່ນ:

ໃນຂະນະທີ່ ( ຕົວຢ່າງ ) {
ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}

ບ່ອນທີ່ ຕົວຢ່າງ ຕ້ອງເປັນປະເພດ Int ຫຼື Float. ຖ້າ ຕົວຢ່າງ ບໍ່ແມ່ນສູນ, ຈາກນັ້ນສູນ
ຫຼື​ຫຼາຍ​ກວ່າ ຖະແຫຼງການ ຖືກ​ປະ​ຕິ​ບັດ​ແລະ​ ຕົວຢ່າງ ໄດ້ຖືກປະເມີນຄືນໃຫມ່.

ຕົວຢ່າງ:
Int i;
i = 3;
ໃນຂະນະທີ່ (i) {
ຖ້າ( i EQ 0 ) {
ພິມ("ແຕກ on i = 1");
ທໍາລາຍ;
}
i--;
}

7. ສະຫຼັບ ຄໍາຖະແຫຼງທີ່
ຄໍາຖະແຫຼງການສະຫຼັບແມ່ນການຕັດສິນໃຈຫຼາຍວິທີທີ່ຈະທົດສອບບໍ່ວ່າຈະເປັນ
ຄ່າຂອງຕົວລະບຸກົງກັບໜຶ່ງໃນຈຳນວນຂອງຄ່າ, ແລະສາຂາເປັນ a
ກຸ່ມຂອງຖະແຫຼງການຕາມຄວາມເຫມາະສົມ.
syntax ສໍາລັບຄໍາສັ່ງສະຫຼັບແມ່ນ:

ປ່ຽນ ( ຕົວລະບຸຕົວຕົນ ) {
ກໍລະນີ ຄົງທີ່-expr :
{
ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}
ກໍລະນີ ຄົງທີ່-expr :
{
ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}
...
ກໍລະນີ in constant-rangeOrSet-expr :
{
ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}
ກໍລະນີ in IDENTIFIER-rangeOrSettype :
{
ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}
Default :
{
ສູນ or ເພີ່ມເຕີມ ຖະແຫຼງການ
}
}

ບ່ອນທີ່ ຄົງທີ່-expr ເປັນ ຕົວຢ່າງ ປະເພດ Int, Float, Dayofweek, DateTime,
ຂະໜາດ, String, Server, Que, Job, ຫຼື CNode. constant-rangeOrSet-expr ແລະ
IDENTIFIER-rangeOrSettype ສາມາດເປັນປະເພດ Set Server, Set CNode, Set Que, Set
ວຽກ, Range Int, Range Float, Range Dayofweek, Range DateTime, ຫຼື Range Size.

ຕົວລະບຸຕົວຕົນ ບໍ່ສາມາດເປັນປະເພດ Void. ຕົວລະບຸຕົວຕົນ 's ປະເພດຕ້ອງສອດຄ່ອງ
ກັບ ຄົງທີ່-expr ຂອງ, constant-rangeOrSet-expr ຂອງ, ແລະ ຕົວລະບຸຕົວຕົນ-
rangeOrSettype 's ພິມດັ່ງທີ່ສະແດງຢູ່ໃນຕາຕະລາງຕໍ່ໄປນີ້:
ຕົວລະບຸຕົວຕົນ constant-range-expr, IDENTIFIER-rangetype
=========== =========================================
Server ທີ່ກໍານົດໄວ້ Server
ວ່າ ທີ່ກໍານົດໄວ້ ວ່າ
ວຽກເຮັດງານທໍາ ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ
CNode ທີ່ກໍານົດໄວ້ CNode
Int ລະດັບ Int
float ລະດັບ float
ມື້ຂອງອາທິດ ລະດັບ ມື້ຂອງອາທິດ
DateTime ລະດັບ DateTime
ເລືອກຂະຫນາດ ລະດັບ ເລືອກຂະຫນາດ

ຖ້າການສະແດງອອກຂອງກໍລະນີກົງກັບ ຕົວລະບຸຕົວຕົນ 's ຄ່າ, ຫຼັງຈາກນັ້ນ, ທີ່ສອດຄ້ອງກັນ
ຕັນຂອງຄໍາຖະແຫຼງທີ່ໄດ້ຖືກປະຕິບັດ. ບໍ່ເຫມືອນກັບໃນ C, ການປະຕິບັດບໍ່ໄດ້ຫຼຸດລົງ
ໂດຍຜ່ານການຖະແຫຼງການກໍລະນີຕໍ່ໄປ. ເຫດຜົນສໍາລັບການນີ້ແມ່ນວ່າ basl2c ຈະ
ແປນີ້ ສະຫຼັບ ຖະແຫຼງການໃນການກໍ່ສ້າງ if-elseif-else. ກໍລະນີ
labeled default ຈະຖືກປະຕິບັດຖ້າຫາກວ່າບໍ່ມີກໍລະນີອື່ນໆທີ່ພໍໃຈ. ໄດ້
Default ເປັນທາງເລືອກ; ຖ້າມັນບໍ່ມີ, ແລະຖ້າບໍ່ມີກໍລະນີໃດກົງກັນ, ບໍ່ແມ່ນ
ການ​ປະ​ຕິ​ບັດ​ເກີດ​ຂຶ້ນ​.

ຕົວຢ່າງ:
ມື້ຂອງອາທິດ dow;

ສະຫຼັບ(dow)
{
ກໍລະນີ ຂ້ອຍ:
{
ພິມ("ກໍລະນີ ມອນ");
}
ກໍລະນີ ອັງຄານ:
{
ພິມ("ກໍລະນີ TUE");
}
ກໍລະນີ ພຸດ:
{
ພິມ("ກໍລະນີ WED");
}
ກໍລະນີ ການລວບລວມ:
{
ພິມ("ກໍລະນີ THU");
}
ກໍລະນີ ຟຣີ:
{
ພິມ("ກໍລະນີ FRI");
}
ກໍລະນີ ບ່ອນນັ່ງ:
{
ພິມ("ກໍລະນີ SAT");
}
ກໍລະນີ ຕາເວັນ:
{
ພິມ("ກໍລະນີ Sun");
}
default:
{
ພິມ("ກໍລະນີ defaulted");
}
}

Int a;
ລະດັບ Int ri ;
ri = (10, ປີ 12);
ສະຫຼັບ(a)
{
ກໍລະນີ in (1,5):
{
ພິມ("ກໍລະນີ 1,5");
}
ກໍລະນີ in (6,9):
{
ພິມ("ກໍລະນີ 6,9");
}
ກໍລະນີ in ri:
{
ພິມ("ກໍລະນີ ri");
}
}

8. ພິມ ຄໍາຖະແຫຼງທີ່
ຖະແຫຼງການການພິມແມ່ນສາມາດພິມເພື່ອ stdout ມູນຄ່າຂອງໃດໆ ຕົວລະບຸ
or ຄົງທີ່ ປະເພດ Int, Float, Dayofweek, DateTime, String, Size, Que, Job,
CNode, Server, Range Int, Range Float, Range Dayofweek, Range DateTime,
ຂອບເຂດຂະຫນາດ.
syntax ແມ່ນດັ່ງຕໍ່ໄປນີ້:

ພິມ ( ຕົວລະບຸຕົວຕົນ );
ພິມ ( ຄົງທີ່ );

ຕົວຢ່າງ:
DateTime dt ;
CNode cn;

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

ພິມ(dt);
ພິມ(cn);

ສໍາລັບຊຸດປະເພດ, ໃຊ້ foreach ເພື່ອຜ່ານແຕ່ລະອົງປະກອບແລະພິມໃນ:

Server s;
ທີ່ກໍານົດໄວ້ Server ss;

ss = AllServersGet();

foreach(s in ss) {
ພິມ
}

9. ສືບຕໍ່ຖະແຫຼງການ

ດໍາເນີນການຕໍ່ ;

ໄດ້ ດໍາເນີນການຕໍ່ ຖະແຫຼງການຕ້ອງໄດ້ຮັບການຮຽກຮ້ອງພາຍໃນ ສຳ ລັບ, foreach, ແລະ
ໃນຂະນະທີ່ ວົງ. ມັນເຮັດໃຫ້ການ iteration ຕໍ່ໄປຂອງ loop enclosing ເລີ່ມຕົ້ນ.

10. break statement

ພັກຜ່ອນ ;

ໄດ້ ພັກຜ່ອນ ຖະແຫຼງການຕ້ອງໄດ້ຮັບການຮຽກຮ້ອງພາຍໃນ ສຳ ລັບ, foreach, ແລະ ໃນຂະນະທີ່
ວົງ. ມັນສະຫນອງການອອກຕົ້ນຈາກ loop enclosing.

11. ຖະແຫຼງການກັບຄືນ

ກັບຄືນ(IDENTIFIER) ;
ກັບຄືນ(ຄົງທີ່) ;
ກັບຄືນ() ;

ຄໍາຖະແຫຼງການກັບຄືນສະຫນອງມູນຄ່າ (ຖ້າມີ) ທີ່ຈະສົ່ງຄືນໂດຍ a
ຫນ້າທີ່. ປະເພດທີ່ສົ່ງຄືນໂດຍ ຕົວລະບຸຕົວຕົນ ແລະ ຄົງທີ່ ຕ້ອງກົງກັບ
ປະເພດຂອງການກັບຄືນຂອງຫນ້າທີ່ເອີ້ນ. ຄົງທີ່ ປະເພດທີ່ອະນຸຍາດແມ່ນສິ່ງໃດກໍ່ຕາມຍົກເວັ້ນ
ກໍານົດແລະໄລຍະປະເພດ. ຮູບ​ແບບ​ສຸດ​ທ້າຍ​, ກັບຄືນ() ປົກກະຕິແລ້ວແມ່ນເອີ້ນວ່າພາຍໃນ a
ຟັງຊັນທີ່ບໍ່ສົ່ງຄືນຄ່າໃດໆ (ເຊັ່ນ: sche_main() ).

12. ອອກຖະແຫຼງການ

ອອກ(ຄົງທີ່);

ບ່ອນທີ່ ຄົງທີ່ ແມ່ນປະເພດ Int. ການໂທນີ້ຈະຢຸດການກຳນົດເວລາ.

13. ຖະແຫຼງການ
ເຫຼົ່ານີ້ແມ່ນຄໍາຖະແຫຼງທີ່ນໍາຫນ້າໂດຍ "//" ແລະພວກມັນຖືກລະເລີຍໂດຍ BASL
ນັກຂຽນ.

// ນີ້ ອອນໄລນ໌ is ບໍ່ສົນໃຈ
Int i; // string ດັ່ງຕໍ່ໄປນີ້ ໄດ້ ຖາງ is ບໍ່ສົນໃຈ

ຜູ້ ດຳ ເນີນການ PRECEDENCE ແລະ ສະມາຄົມ


ຕາຕະລາງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນລະດັບຄວາມສຳຄັນຂອງຕົວປະຕິບັດການຕ່າງໆ ແລະ ສະມາຄົມທີ່ກຳນົດໄວ້
ໃນ​ພາ​ສາ BASL​. ຜູ້ປະກອບການຖືກລະບຸໄວ້ໃນລໍາດັບຂອງການຫຼຸດລົງກ່ອນຫນ້າ. ໄດ້
ສູງກວ່າຕົວປະຕິບັດການ, ມັນຈະຖືກປະຕິບັດກ່ອນໜ້ານັ້ນ. ຄໍາສັ່ງທີ່
ຜູ້ປະຕິບັດການໃນລະດັບດຽວກັນໄດ້ຖືກປະຕິບັດແມ່ນຂຶ້ນກັບການເຊື່ອມໂຍງ: ຊ້າຍຫມາຍຄວາມວ່າ
ຕົວປະຕິບັດການແມ່ນເຫັນໄດ້ຈາກຊ້າຍໄປຂວາ, ໃນຂະນະທີ່ຂວາຫມາຍຄວາມວ່າພວກເຂົາຖືກເບິ່ງຈາກຂວາຫາຊ້າຍ.

Operator ສະມາຄົມ
======================================= =============
! ++ -- + (unary ບວກ) - (unary ລົບ) ສິດ
* / % ໄວ້
+ - ໄວ້
LT LE GT GE ໄວ້
EQ NEQ ໄວ້
ແລະ ໄວ້
OR ໄວ້
= ສິດ

ກຳນົດໄວ້ລ່ວງໜ້າ FUNCTIONS


In BASL(2), ເຖິງ Server ແຜນທີ່ປະເພດຂໍ້ມູນໂດຍກົງກັບວັດຖຸເຊີບເວີ batch. ເຊັ່ນດຽວກັນ, CNode
ແມ່ນ​ເພື່ອ​ແມ່ / remom​, ວຽກເຮັດງານທໍາ ແມ່ນເພື່ອ batch ວຽກ, ແລະ ວ່າ ແມ່ນເພື່ອ batch ແຖວ. ຢ່າງໃດກໍຕາມ, ບໍ່ແມ່ນທັງຫມົດ
ຄຸນລັກສະນະຂອງວັດຖຸ PBS ສາມາດເຂົ້າເຖິງໄດ້ຈາກ BASL. ພຽງ​ແຕ່​ຊຸດ​ຍ່ອຍ​ຂອງ​ຄຸນ​ສົມ​ບັດ​,
ສິ່ງ​ທີ່​ເບິ່ງ​ຄື​ວ່າ​ຈະ​ເຮັດ​ໃຫ້​ຄວາມ​ຮູ້​ສຶກ​ໃນ​ສະ​ພາບ​ຂອງ​ການ​ກໍາ​ນົດ​ເວ​ລາ​, ແມ່ນ​ມີ​ຢູ່​, ແລະ​
ຄຸນ​ຄ່າ​ຂອງ​ຄຸນ​ສົມ​ບັດ​ເຫຼົ່າ​ນີ້​ສາ​ມາດ​ໄດ້​ຮັບ​ການ​ເຂົ້າ​ເຖິງ​ໂດຍ​ການ​ເອີ້ນ​ຫນ້າ​ທີ່​ທີ່​ກໍາ​ນົດ​ໄວ້​ລ່ວງ​ຫນ້າ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​,
ເອີ້ນກັນວ່າ ໜ້າທີ່ຊ່ວຍເຫຼືອ/ຜູ້ຊ່ວຍ.

(1) ຫນ້າທີ່ທີ່ກ່ຽວຂ້ອງກັບເຄື່ອງແມ່ຂ່າຍ

ທີ່ກໍານົດໄວ້ Server AllServersGet(void)
ສົ່ງຄືນລາຍຊື່ເຊີບເວີທີ່ລະບຸໄວ້ໃນໄຟລ໌ການຕັ້ງຄ່າສຳລັບ
ທີ່ນັກຂຽນຕາຕະລາງຕ້ອງການໃຫ້ລະບົບກວດສອບແຕ່ລະໄລຍະ
ສະຖານະ, ຄິວ ແລະຂໍ້ມູນວຽກ. ເບິ່ງ pbs__sched__basl(8 ບ) ສໍາ​ລັບ
ການສົນທະນາກ່ຽວກັບຮູບແບບຂອງໄຟລ໌ການຕັ້ງຄ່າ.
ຂໍ້ຄວນລະວັງ: ຟັງຊັນນີ້ຕ້ອງຖືກເອີ້ນຈາກພາຍໃນ sche_main() so
ວ່າໃນທຸກໆ iteration ການກໍານົດເວລາ, ຫຼາຍທີ່ສຸດເຖິງວັນທີ ທີ່ກໍານົດໄວ້ Server
ໂຄງສ້າງຖືກສົ່ງຄືນ.

Server AllServersLocalHostGet(void)
ສົ່ງຄືນວັດຖຸເຊີບເວີທີ່ເປັນຕົວແທນຂອງໂຮດທ້ອງຖິ່ນ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ:
ໂນເຊີເວີ. ນີ້ແມ່ນຫນ້າທີ່ງ່າຍດາຍທີ່ຈະໂທຫາສະພາບແວດລ້ອມທີ່ບໍ່ແມ່ນກຸ່ມ
ບ່ອນທີ່ມີເຄື່ອງແມ່ຂ່າຍຂອງເຄື່ອງແມ່ຂ່າຍດຽວເທົ່ານັ້ນ.
ຂໍ້ຄວນລະວັງ: ຟັງຊັນນີ້ຕ້ອງຖືກເອີ້ນຈາກພາຍໃນ sche_main() (ຫຼືຈາກ
ພາຍໃນຫນ້າທີ່ເອີ້ນວ່າໂດຍ sched_main) ດັ່ງນັ້ນໃນທຸກໆການກໍານົດເວລາ
ຊ້ຳ​ບໍ່​ໜຳ, ​ເປັນ​ທີ່​ສຸດ Server ໂຄງສ້າງຖືກສົ່ງຄືນ.

string ServerInetAddrGet(ເຊີບເວີ s)
ສົ່ງຄືນຊື່ຂອງເຊີບເວີ s. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

string ServerDefQueGet(ເຊີບເວີ s)
ສົ່ງຄ່າ default_queue attribute ຂອງເຊີບເວີ s. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

Int ServerStateGet(ເຊີບເວີ s)
ສົ່ງຄືນຄຸນລັກສະນະ server_state ຂອງ Server s.

ຄ່າຕອບແທນ:
SERVER_ACTIVE, SERVER_IDLE, SERVER_SCHED, SERVER_TERM,
SERVER_TERMDELAY, -1 (ຄ່າບໍ່ໄດ້ຕັ້ງ)

Int ServerMaxRunJobsGet(ເຊີບເວີ s)
ສົ່ງຄ່າ max_running attribute ຂອງເຊີບເວີ s. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: 0

Int ServerMaxRunJobsPerUserGet(ເຊີບເວີ s)
ສົ່ງຄືນຄຸນສົມບັດ max_user_run ຂອງເຊີບເວີ s. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: 0

Int ServerMaxRunJobsPerGroupGet(ເຊີບເວີ s)
ສົ່ງຄືນຄຸນສົມບັດ max_group_run ຂອງເຊີບເວີ s. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: 0

ທີ່ກໍານົດໄວ້ ວ່າ ServerQueuesGet(ເຊີບເວີ s)
ສົ່ງຄືນລາຍຊື່ຄິວທີ່ຄຸ້ມຄອງໂດຍເຊີບເວີ s.

ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ ServerJobsGet(ເຊີບເວີ s)
ສົ່ງຄືນລາຍຊື່ວຽກທີ່ຄຸ້ມຄອງໂດຍ Server s. ສໍາລັບການໄດ້ຮັບຊຸດຍ່ອຍນີ້
ບັນຊີລາຍຊື່, ເບິ່ງ QueJobsGet().

Int ServerIntResAvailGet(ເຊີບເວີ s, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ສາມາດໃຊ້ໄດ້ກັບວຽກ
ດໍາເນີນການໂດຍເຄື່ອງແມ່ຂ່າຍນີ້ (ເຄື່ອງແມ່ຂ່າຍ resources_available.name ຄຸນ​ລັກ​ສະ​ນະ). ໂທຫານີ້
ຟັງຊັນສໍາລັບຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດ 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(7 ຂ).

ຕົວຢ່າງ:
Int cpuAvail;
// ການກັບຄືນມາ ໄດ້ # of CPU ປະຈຸບັນ ມີ in
// ໄດ້ ເຄື່ອງແມ່ຂ່າຍ
cpuAvail = ServerIntResAvailGet(ເຊີບເວີ, "ncpus");

ເລືອກຂະຫນາດ ServerSizeResAvailGet(ເຊີບເວີ s, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ສາມາດໃຊ້ໄດ້ກັບວຽກ
ດໍາເນີນການໂດຍເຄື່ອງແມ່ຂ່າຍນີ້ (ເຄື່ອງແມ່ຂ່າຍ resources_available.name ຄຸນ​ລັກ​ສະ​ນະ). ໂທຫານີ້
ຟັງຊັນສໍາລັບຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດຂະຫນາດ. ຊັບພະຍາກອນຕົວຢ່າງ
ຊື່ຄື: ໄຟລ໌, mem, pmem, workset, 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(7 ຂ).

ຕົວຢ່າງ:
ເລືອກຂະຫນາດ memAvail;
// ການກັບຄືນມາ ໄດ້ ຈໍານວນເງິນ of ມີ ຫນ່ວຍຄວາມຈໍາ in
// ໄດ້ ເຄື່ອງແມ່ຂ່າຍ
memAvail = ServerSizeResAvailGet(ເຊີບເວີ, "ເມັມ");

string ServerStringResAvailGet(ເຊີບເວີ s, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ສາມາດໃຊ້ໄດ້ກັບວຽກ
ດໍາເນີນການໂດຍເຄື່ອງແມ່ຂ່າຍນີ້ (ເຄື່ອງແມ່ຂ່າຍ resources_available.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(7 ຂ).

ຕົວຢ່າງ:
string ປະເພດ;
// ການກັບຄືນມາ ໄດ້ ຖາປັດຕະຍະ (ຫຼື os ປະເພດ) of
// ໄດ້ ເຄື່ອງແມ່ຂ່າຍ
ປະເພດ = ServerStringResAvailGet(ເຊີບເວີ, "ໂຄ້ງ");

Int ServerIntResAssignGet(ເຊີບເວີ s, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ຖືກຈັດສັນໃຫ້
ແລ່ນວຽກ (ເຊີບເວີ resources_assigned.name ຄຸນ​ລັກ​ສະ​ນະ). ໂທຫານີ້
ຟັງຊັນສໍາລັບຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດ 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(7 ຂ).

ຕົວຢ່າງ:
Int cpuAssn;
// ການກັບຄືນມາ ໄດ້ # of CPU ປະຈຸບັນ ມອບ ໝາຍ in
// ໄດ້ ເຄື່ອງແມ່ຂ່າຍ
cpuAssn = ServerIntResAssignGet(ເຊີບເວີ, "ncpus");

ເລືອກຂະຫນາດ ServerSizeResAssignGet(ເຊີບເວີ s, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ຖືກຈັດສັນໃຫ້
ແລ່ນວຽກ (ເຊີບເວີ resources_assigned.name ຄຸນ​ລັກ​ສະ​ນະ). ໂທຫານີ້
ຟັງຊັນສໍາລັບຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດຂະຫນາດ. ຊັບພະຍາກອນຕົວຢ່າງ
ຊື່ຄື: ໄຟລ໌, mem, pmem, workset, 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(7 ຂ).

ຕົວຢ່າງ:
ເລືອກຂະຫນາດ sdsAssn;
// ການກັບຄືນມາ ໄດ້ ຈໍານວນເງິນ of sds ຊ່ອງ ປະຈຸບັນ ມອບ ໝາຍ
// in ໄດ້ ເຄື່ອງແມ່ຂ່າຍ
sdsAssn = ServerSizeResAssignGet(ເຊີບເວີ, "sds");

string ServerStringResAssignGet(ເຊີບເວີ s, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ຖືກຈັດສັນໃຫ້
ແລ່ນວຽກ (ເຊີບເວີ resources_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(7 ຂ).

ທີ່ກໍານົດໄວ້ CNode ServerNodesGet(ເຊີບເວີ s)
ສົ່ງຄືນຊຸດຂອງ nodes ທີ່ຄຸ້ມຄອງໂດຍເຊີບເວີ s. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: EMPTYSETCNODE.
ຫມາຍ​ເຫດ​: ໂດຍ​ປົກ​ກະ​ຕິ​ທ່ານ​ສາ​ມາດ​ໂທ​ຫາ​ຫນ້າ​ທີ່​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​ສໍາ​ລັບ​ຂໍ້​ສົ່ງ​ກັບ​ຄືນ​
ໂດຍການໂທນີ້: CNodeStateGet(), CNodePropertiesGet(), ແລະ CNodeTypeGet().

Int ServerNodesQuery(ເຊີບເວີ s, string spec)
ອອກ​ຄໍາ​ຮ້ອງ​ສະ​ຫມັກ​ກັບ​ເຄື່ອງ​ແມ່​ຂ່າຍ​ທີ່​ກໍາ​ນົດ​ໄວ້​ເພື່ອ​ສອບ​ຖາມ​ການ​ມີ​ຂອງ​
ຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ສະເປັກ. ໃນປັດຈຸບັນ, ຊັບພະຍາກອນພຽງແຕ່
ຂໍ້ກໍານົດທີ່ອະນຸຍາດແມ່ນຫນຶ່ງທີ່ກ່ຽວຂ້ອງກັບ "nodes" ແລະມັນສາມາດເປັນຂອງ
format "nodes", "nodes=", ຫຼື "nodes= ". ຜົນການຄົ້ນຫາສາມາດເປັນ
ເຂົ້າເຖິງໂດຍການເອີ້ນຟັງຊັນຕໍ່ໄປນີ້: ServerNodesNumAvailGet(),
ServerNodesNumAllocGet(), ServerNodesNumRsvdGet(),
ServerNodesNumDownGet().
ຫມາຍເຫດ: ນີ້ແມ່ນ wrapper ກັບ pbs_rescquery(3B) ການທໍາງານຂອງເຄື່ອງແມ່ຂ່າຍ.

ຄ່າຕອບແທນ:
ຄວາມສຳເລັດ, ລົ້ມເຫລວ

Int ServerNodesNumAvailGet(ເຊີບເວີ s)
ສົ່ງຄືນຈຳນວນຂອງ nodes ທີ່ມີໃຫ້ກັບຜູ້ບໍລິຫານໂດຍທີ່ລະບຸໄວ້
ເຊີບເວີ, ຫຼືສະທ້ອນໃຫ້ເຫັນໂດຍການສອບຖາມຫຼ້າສຸດທີ່ລະບຸໄວ້ໂດຍ
ServerNodesQuery(). ຖ້າຄ່າກັບຄືນແມ່ນສູນ, ນີ້ຫມາຍຄວາມວ່າ
ຈໍາ​ນວນ​ຂອງ​ຂໍ້​ຄວາມ​ຈໍາ​ເປັນ​ໃນ​ປັດ​ຈຸ​ບັນ​ເພື່ອ​ຕອບ​ສະ​ຫນອງ​ສະ​ເພາະ​ຂອງ​
ServerNodesQuery() ບໍ່ສາມາດໃຊ້ໄດ້ໃນຂະນະນີ້. ການຮ້ອງຂໍອາດຈະພໍໃຈ
ໃນເວລາຕໍ່ມາ. ຖ້າຜົນໄດ້ຮັບແມ່ນທາງລົບ, ບໍ່ມີການປະສົມປະສານທີ່ຮູ້ຈັກ
nodes ສາມາດຕອບສະຫນອງສະເພາະ.

Int ServerNodesNumAllocGet(ເຊີບເວີ s)
ສົ່ງຄືນຈຳນວນຂອງ nodes ທີ່ຖືກຈັດສັນໃຫ້ກັບຜູ້ທີ່ຄຸ້ມຄອງໂດຍທີ່ລະບຸໄວ້
ເຊີບເວີ, ຫຼືສະທ້ອນໃຫ້ເຫັນໂດຍການສອບຖາມຫຼ້າສຸດທີ່ລະບຸໄວ້ໂດຍ
ServerNodesQuery().

Int ServerNodesNumRsvdGet(ເຊີບເວີ s)
ສົ່ງຄືນຈຳນວນຂອງໂນດທີ່ສະຫງວນໄວ້ໃຫ້ກັບຜູ້ທີ່ຄຸ້ມຄອງໂດຍທີ່ລະບຸໄວ້
ເຊີບເວີ, ຫຼືສະທ້ອນໃຫ້ເຫັນໂດຍການສອບຖາມຫຼ້າສຸດທີ່ລະບຸໄວ້ໂດຍ
ServerNodesQuery().

Int ServerNodesNumDownGet(ເຊີບເວີ s)
ສົ່ງຄືນຈຳນວນຂອງ nodes ລົງສຳລັບທີ່ຈັດການໂດຍທີ່ລະບຸໄວ້
ເຊີບເວີ, ຫຼືສະທ້ອນໃຫ້ເຫັນໂດຍການສອບຖາມຫຼ້າສຸດທີ່ລະບຸໄວ້ໂດຍ
ServerNodesQuery().

Int ServerNodesReserve(ເຊີບເວີ s, ສາຍ spec, int resId)
ອອກຄໍາຮ້ອງຂໍໃຫ້ເຄື່ອງແມ່ຂ່າຍທີ່ລະບຸໄວ້ເພື່ອສະຫງວນຊັບພະຍາກອນ
ລະບຸໄວ້ໃນ ສະເປັກ. ຄ່າຂອງ 0 ສໍາລັບ resId ຫມາຍຄວາມວ່ານີ້ແມ່ນສໍາລັບການເຮັດ
ການຈອງໃຫມ່. ຖ້າບໍ່ດັ່ງນັ້ນ, ຕົວເລກຈະເປັນຕົວແທນທີ່ມີຢູ່ແລ້ວ
(ບາງສ່ວນ) ການຈອງ. ຊັບພະຍາກອນທີ່ສະຫງວນໄວ້ໃນປັດຈຸບັນສໍາລັບການນີ້ resId ຈະ
ຖືກປ່ອຍອອກມາແລະການຈອງເຕັມຈະຖືກພະຍາຍາມອີກເທື່ອຫນຶ່ງ. ຢູ່​ທີ່
ປະຈຸບັນ, ຊັບພະຍາກອນອັນດຽວທີ່ອາດຈະຖືກກໍານົດແມ່ນ
"ຂໍ້". ມັນຄວນຈະຖືກກໍານົດເປັນ nodes=ສະເພາະ ບ່ອນທີ່
specification ແມ່ນສິ່ງທີ່ຜູ້ໃຊ້ລະບຸໄວ້ໃນລາຍການ argument ທາງເລືອກ -l
ສໍາລັບ nodes, ເບິ່ງ qsub (1B).
ຫມາຍເຫດ: ນີ້ແມ່ນ wrapper ກັບ pbs_rescreserve(3B) ການທໍາງານຂອງເຄື່ອງແມ່ຂ່າຍ.

ຄ່າຕອບແທນ:
ຕົວເລກອ້າງອີງເຖິງຜູ້ປະສົບຜົນສໍາເລັດ ຫຼືບາງສ່ວນ
ການຈອງ, ຫຼື FAIL

Int ServerNodesRelease(ເຊີບເວີ s, Int resId)
ນີ້ປ່ອຍ ຫຼືປົດປ່ອຍຊັບພະຍາກອນທີ່ສະຫງວນໄວ້ດ້ວຍໝາຍເລກອ້າງອີງ
ລະບຸໄວ້ໃນ resId.
ຫມາຍເຫດ: ນີ້ແມ່ນ wrapper ກັບ pbs_rescrelease(3B) ການທໍາງານຂອງເຄື່ອງແມ່ຂ່າຍ.

ຄ່າຕອບແທນ:
ຄວາມສຳເລັດ ຫຼື ລົ້ມເຫລວ

(2​) ຫນ້າ​ທີ່​ກ່ຽວ​ຂ້ອງ​ກັບ Que​:

string QueNameGet( ວ່າ que )
ຕອບຊື່ຂອງ Que que. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

Int QueTypeGet( ວ່າ que )
ສົ່ງຄືນຄຸນສົມບັດ queue_type ຂອງ Que que.
ຄ່າກັບຄືນ: QTYPE_E (Execution), QTYPE_R (Routing), -1 (ບໍ່ໄດ້ຕັ້ງ
ມູນຄ່າ)

Int QueNumJobsGet( ວ່າ que )
ສົ່ງຄືນຈໍານວນວຽກທີ່ອາໄສຢູ່ໃນ Que que. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: 0

Int QueMaxRunJobsGet( ວ່າ que )
ສົ່ງຄືນຄຸນສົມບັດ max_running ຂອງ Que que. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: 0

Int QueMaxRunJobsPerUserGet( ວ່າ que )
ສົ່ງຄືນຄຸນສົມບັດ max_user_run ຂອງ Que que. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: 0

Int QueMaxRunJobsPerGroupGet( ວ່າ que )
ຕອບຄຸນລັກສະນະ max_group_run ຂອງ Que que. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: 0

Int QuePriorityGet( ວ່າ que )
ສົ່ງຄືນຄຸນສົມບັດບູລິມະສິດຂອງ Que que. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: 0

Int QueStateGet( ວ່າ que )
Returns start attribute of Que que - the job execution selection
ສະຖານະຂອງ que: SCHED_DISABLED, SCHED_ENABLED. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ:
SCHED_DISABLED

ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ QueJobsGet( ວ່າ que )
ສົ່ງຄືນລາຍຊື່ວຽກທີ່ອາໄສຢູ່ໃນ que.

Int QueIntResAvailGet(Que q, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ມີໃຫ້
ວຽກທີ່ເຮັດວຽກຈາກ q ​​ນີ້ (Que resources_available.name ຄຸນ​ລັກ​ສະ​ນະ).
ເອີ້ນຟັງຊັນນີ້ສໍາລັບຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດ 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(7 ຂ).

ເລືອກຂະຫນາດ QueSizeResAvailGet(Que q, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ມີໃຫ້
ວຽກທີ່ເຮັດວຽກຈາກ q ​​ນີ້ (Que resources_available.name ຄຸນ​ລັກ​ສະ​ນະ).
ເອີ້ນຟັງຊັນນີ້ສຳລັບຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດຂະໜາດ.
ຊື່ຊັບພະຍາກອນຕົວຢ່າງ: ໄຟລ໌, mem, pmem, workset, 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(7 ຂ).

string QueStringResAvailGet(Que q, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ມີໃຫ້
ວຽກທີ່ເຮັດວຽກຈາກ q ​​ນີ້ (Que resources_available.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(7 ຂ).

Int QueIntResAssignGet(Que q, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ຖືກຈັດສັນໃຫ້
ວຽກທີ່ແລ່ນຈາກແຖວນີ້ (Que resources_assigned.name ຄຸນ​ລັກ​ສະ​ນະ).
ເອີ້ນຟັງຊັນນີ້ສໍາລັບຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດ 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(7 ຂ).

ເລືອກຂະຫນາດ QueSizeResAssignGet(Que q, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ຖືກຈັດສັນໃຫ້
ວຽກທີ່ເຮັດວຽກຈາກ q ​​ນີ້ (Que resources_assigned.name ຄຸນ​ລັກ​ສະ​ນະ).
ເອີ້ນຟັງຊັນນີ້ສຳລັບຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດຂະໜາດ.
ຊື່ຊັບພະຍາກອນຕົວຢ່າງ: ໄຟລ໌, mem, pmem, workset, 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(7 ຂ).

string QueStringResAssignGet(Que q, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ທີ່ຖືກຈັດສັນໃຫ້
ວຽກທີ່ເຮັດວຽກຈາກ q ​​ນີ້ (Que resources_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(7 ຂ).

(3) ໜ້າທີ່ທີ່ກ່ຽວຂ້ອງກັບວຽກງານ

string JobIdGet( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຕົວລະບຸວຽກຂອງວຽກວຽກ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

string JobNameGet( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຄຸນລັກສະນະ Job_Name ຂອງວຽກວຽກ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

string JobOwnerNameGet( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຄຸນລັກສະນະ Job_Owner ຂອງວຽກວຽກ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

string JobEffectiveUserNameGet( ວຽກເຮັດງານທໍາ ວຽກ)
ສົ່ງຄືນຄຸນລັກສະນະ euser ຂອງວຽກ Job.

string JobEffectiveGroupNameGet(ວຽກ ວຽກ)
ສົ່ງຄືນຄຸນລັກສະນະກຸ່ມຂອງວຽກວຽກ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

Int JobStateGet ( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຄຸນລັກສະນະ job_state ຂອງວຽກວຽກ.

ຄ່າຕອບແທນ:
ການຂົນສົ່ງ, ຄິວ, ຖື, ລໍຖ້າ, ແລ່ນ, ອອກ, -1 (ບໍ່ໄດ້ຕັ້ງ
ມູນຄ່າ)

Int JobPriorityGet( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຄຸນສົມບັດບູລິມະສິດຂອງວຽກວຽກ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: 0

Int JobRerunFlagGet( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຄຸນລັກສະນະ Rerunable ຂອງວຽກວຽກ.
ຄ່າກັບຄືນ: FALSE, TRUE, -1 (ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ)

Int JobInteractiveFlagGet( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຄຸນສົມບັດແບບໂຕ້ຕອບຂອງວຽກວຽກ.
ຄ່າກັບຄືນ: FALSE, TRUE. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: FALSE

DateTime JobDateTimeCreatedGet(ວຽກ ວຽກ)
ຕອບຄຸນລັກສະນະ ctime ຂອງວຽກ Job. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ:
(0|0|0@-1:-1:-1)

string JobEmailAddrGet( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຄຸນສົມບັດ Mail_Users ຂອງວຽກ Job. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

string JobStageinFilesGet( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຄຸນສົມບັດ stagein ຂອງວຽກ Job. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

string JobStageoutFilesGet( ວຽກເຮັດງານທໍາ ວຽກ​ເຮັດ​ງານ​ທໍາ )
ສົ່ງຄືນຄຸນສົມບັດ stageout ຂອງວຽກວຽກ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

Int JobIntResReqGet(ວຽກ ວຽກ, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ຕາມ​ທີ່​ຕ້ອງ​ການ​ໂດຍ​
ວຽກ (ວຽກ Resource_List.name ຄຸນ​ລັກ​ສະ​ນະ). ໂທຫາຫນ້າທີ່ນີ້ສໍາລັບ
ຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດ 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(7 ຂ).

ຕົວຢ່າງ:
Int cputReq;
// ກັບຄືນມາ ໄດ້ ຂໍ້ມູນ ຄວາມຕ້ອງການ of ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ
cputReq = JobIntResReqGet(ວຽກ, "cput");

ເລືອກຂະຫນາດ JobSizeResReqGet(ວຽກ ວຽກ, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ຕາມ​ທີ່​ຕ້ອງ​ການ​ໂດຍ​
ວຽກ (ວຽກ Resource_List.name ຄຸນ​ລັກ​ສະ​ນະ). ໂທຫາຫນ້າທີ່ນີ້ສໍາລັບ
ຊັບພະຍາກອນທີ່ມີຄ່າທີ່ເປັນປະເພດຂະຫນາດ. ຕົວຢ່າງຊື່ຊັບພະຍາກອນ
ແມ່ນ: file, mem, pmem, workset, 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(7 ຂ).

ຕົວຢ່າງ:
ເລືອກຂະຫນາດ memReq;
// ກັບຄືນມາ ໄດ້ ຫນ່ວຍຄວາມຈໍາ ຄວາມຕ້ອງການ of ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ
memReq = JobSizeResReqGet(ວຽກ, "ເມັມ");

string JobStringResReqGet(ວຽກ ວຽກ, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ຕາມ​ທີ່​ຕ້ອງ​ການ​ໂດຍ​
ວຽກ (ວຽກ Resource_List.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(7 ຂ).

ຕົວຢ່າງ:
string nodes;
// ກັບຄືນມາ ໄດ້ nodes ຄວາມຕ້ອງການ ຄຸນສົມບັດ of
// ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ
nodes = JobStringResReqGet(ວຽກ, "ຂໍ້");

Int JobIntResUseGet(ວຽກ ວຽກ, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ໃຊ້ໃນວຽກ (ໂຢບ
resources_used.name ຄຸນ​ລັກ​ສະ​ນະ). ໂທຫາຫນ້າທີ່ນີ້ສໍາລັບຊັບພະຍາກອນທີ່ມີ
ຄ່າທີ່ເປັນປະເພດ 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(7 ຂ).

ຕົວຢ່າງ:
Int walltUse;
// ກັບຄືນມາ ໄດ້ ຈໍານວນເງິນ of ຝາ ໃຫມ່ by
// ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ
wallt ໃຊ້ = JobIntResUseGet(ວຽກ, "walltime");

ເລືອກຂະຫນາດ JobSizeResUseGet(ວຽກ ວຽກ, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ໃຊ້ໃນວຽກ (ໂຢບ
resources_used.name ຄຸນ​ລັກ​ສະ​ນະ). ໂທຫາຫນ້າທີ່ນີ້ສໍາລັບຊັບພະຍາກອນທີ່ມີ
ຄ່າທີ່ເປັນປະເພດຂະໜາດ. ຊື່ຊັບພະຍາກອນຕົວຢ່າງ: ໄຟລ໌, 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(7 ຂ).

ຕົວຢ່າງ:
ເລືອກຂະຫນາດ srfsUse;
// ກັບຄືນມາ ໄດ້ ຈໍານວນເງິນ of srfs_fast ໃຫມ່ by
// ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ
srfs ໃຊ້ = JobSizeResUseGet(ວຽກ, "srfs_fast");

string JobStringResUseGet(ວຽກ ວຽກ, string ຊື່)
ສົ່ງຄ່າໃຫ້ກັບຊັບພະຍາກອນທີ່ລະບຸໄວ້ໃນ ຊື່ ໃຊ້ໃນວຽກ (ໂຢບ
resources_used.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(7 ຂ).

(4) ຟັງຊັນທີ່ກ່ຽວຂ້ອງກັບ CNode

ທີ່ກໍານົດໄວ້ CNode AllNodesGet(void)
ສົ່ງຄືນລາຍຊື່ຂອງ nodes ທີ່ຖືກຈັດການໂດຍເຊີບເວີທີ່ເຮັດວຽກຢູ່ໃນ
ເຈົ້າພາບທ້ອງຖິ່ນ. ອັນນີ້ຍັງສາມາດລວມເຖິງຂໍ້ທີ່ລະບຸໄວ້
ໃນໄຟລ໌ການຕັ້ງຄ່າຕົວກໍານົດເວລາທີ່ຜູ້ຂຽນກໍານົດເວລາ
ຕ້ອງການໃຫ້ລະບົບກວດສອບຂໍ້ມູນເປັນໄລຍະໆເຊັ່ນ: ລັດ,
ຊັບສິນ, ແລະອື່ນໆ. ເບິ່ງ pbs_sched_basl(8 ບ) ສໍາລັບການສົນທະນາຂອງ
ຮູບແບບໄຟລ໌ການຕັ້ງຄ່າ.
ຂໍ້ຄວນລະວັງ: ຟັງຊັນນີ້ຕ້ອງຖືກເອີ້ນຈາກພາຍໃນ sche_main() so
ວ່າໃນທຸກໆ iteration ການກໍານົດເວລາ, ຫຼາຍທີ່ສຸດເຖິງວັນທີ ທີ່ກໍານົດໄວ້ CNode
ໂຄງສ້າງຖືກສົ່ງຄືນ. ຢ່າໂທຫານີ້ຈາກຄໍາຖະແຫຼງການມອບຫມາຍ
ມີ​ຈຸດ​ປະ​ສົງ​ເພື່ອ​ເລີ່ມ​ຕົ້ນ​ຕົວ​ປ່ຽນ​ແປງ​ທົ່ວ​ໂລກ​, ເປັນ​ຄໍາ​ຖະ​ແຫຼງ​ການ​ພຽງ​ແຕ່​
ຖືກເອີ້ນຄັ້ງດຽວ.

CNode AllNodesLocalHostGet(void)
ສົ່ງຄືນວັດຖຸ CNode ທີ່ເປັນຕົວແທນຂອງໂຮດທ້ອງຖິ່ນ. ນີ້​ແມ່ນ
ຟັງຊັນງ່າຍໆເພື່ອໂທຫາລະບົບທີ່ບໍ່ແມ່ນກຸ່ມທີ່ມີພຽງແຕ່ 1 CNode
ມີຢູ່. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NOCNODE
ຂໍ້ຄວນລະວັງ: ຟັງຊັນນີ້ຕ້ອງຖືກເອີ້ນຈາກພາຍໃນ sche_main() (ຫຼື
ຈາກພາຍໃນຫນ້າທີ່ເອີ້ນວ່າໂດຍ sched_main) ດັ່ງນັ້ນທຸກໆ
ການຈັດຕາຕະລາງ iteration, ຫຼາຍທີ່ສຸດເຖິງວັນທີ CNode ໂຄງສ້າງແມ່ນ
ກັບຄືນ. ຢ່າໂທຫານີ້ຈາກຄໍາຖະແຫຼງການມອບຫມາຍທີ່ມີຈຸດປະສົງ
ເລີ່ມຕົ້ນຕົວແປທົ່ວໂລກ, ຍ້ອນວ່າຄໍາຖະແຫຼງທີ່ຈະຖືກເອີ້ນເທົ່ານັ້ນ
ຄັ້ງຫນຶ່ງ.

string CNodeNameGet(CNode node)
ສົ່ງຄືນຊື່ທີ່ບໍ່ຊໍ້າກັນ (ຢ່າງເປັນທາງການ) ຂອງ node (ເຊັ່ນ ResMom hostname
ໃນ 1 ຕົວແບບແມ່ / node). ອັນນີ້ສົ່ງຄືນສະຕຣິງດຽວກັນກັບທີ່ເຄີຍເປັນ
ລະບຸໄວ້ໃນໄຟລ໌ການຕັ້ງຄ່າ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

string CNodeOsGet(CNode node)
ຕອບສະຖາປັດຕະຍະກໍາ os ຂອງ node (ie "irix5", "sp2"). ບໍ່ໄດ້ຕັ້ງ
ຄ່າ: NULLSTR

Int CNodeStateGet( CNode node )
ສົ່ງຄືນສະຖານະຂອງໂນດ.

ຄ່າຕອບແທນ:
CNODE_OFFLINE, CNODE_DOWN, CNODE_FREE, CNODE_RESERVE,
CNODE_INUSE_EXCLUSIVE, CNODE_INUSE_SHARED, CNODE_UNKNOWN

Int CNodeTypeGet( CNode node )
ຕອບປະເພດຂອງ node.

ຄ່າຕອບແທນ:
CNODE_TIMESHARED, CNODE_CLUSTER, CNODE_UNKNOWN

string CNodePropertiesGet(CNode node)
ສົ່ງຄືນລາຍຊື່ທີ່ຂັ້ນດ້ວຍເຄື່ອງໝາຍຈຸດຂອງຊື່ອື່ນທີ່ node ຮູ້ຈັກໂດຍ
(ຄຸນສົມບັດ, ຊື່ເຄືອຂ່າຍອື່ນ). ຍົກ​ຕົວ​ຢ່າງ,
"babbage.OpenPBS.org" ບາງທີຊື່ຂອງ node, ແຕ່ມັນຍັງສາມາດເປັນທີ່ຮູ້ຈັກ
ຜ່ານ "babbage1, babbage2". ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

string CNodeVendorGet(CNode node)
ສົ່ງຄືນຊື່ຂອງຜູ້ຂາຍສຳລັບຮາດແວຂອງເຄື່ອງຈັກ (ເຊັ່ນ
"sgi", "ibm"). ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: NULLSTR

Int CNodeNumCpusGet(CNode node)
ສົ່ງຄືນຈຳນວນຂອງໂປເຊດເຊີທີ່ຕິດກັບ node. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ:
-1

ເລືອກຂະຫນາດ CNodeMemTotalGet( CNode node, string ປະເພດ )
ສົ່ງຄືນຄວາມຊົງຈຳທັງໝົດຂອງ ປະເພດ ສໍາລັບ node. ປະເພດ ແມ່ນ arbitrary
string ທີ່ນັກຂຽນກຳນົດເວລາກຳນົດໄວ້ໃນຕົວກຳນົດເວລາ
ໄຟລ​໌​ການ​ຕັ້ງ​ຄ່າ​. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
// ໄດ້ຮັບ ຈໍານວນທັງຫມົດ ທາງດ້ານຮ່າງກາຍ ຫນ່ວຍຄວາມຈໍາ
CNodeMemTotalGet(node, "ຈິງ")
// ໄດ້ຮັບ ຈໍານວນທັງຫມົດ virtual ຫນ່ວຍຄວາມຈໍາ
CNodeMemTotalGet(node, "virtual")

ເລືອກຂະຫນາດ CNodeMemAvailGet( CNode node, string ປະເພດ )
ສົ່ງຄືນຄວາມຊົງຈຳທີ່ມີໃຫ້ ປະເພດ ສໍາລັບ node. ປະເພດ ແມ່ນ arbitrary
string ທີ່ນັກຂຽນກຳນົດເວລາກຳນົດໄວ້ໃນຕົວກຳນົດເວລາ
ໄຟລ​໌​ການ​ຕັ້ງ​ຄ່າ​. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ດັ່ງນັ້ນການໂທຕົວຢ່າງຈະເປັນ:
// ໄດ້ຮັບ ມີ ທາງດ້ານຮ່າງກາຍ ຫນ່ວຍຄວາມຈໍາ
CNodeMemAvailGet(node, "ຈິງ")
// ໄດ້ຮັບ ມີ virtual ຫນ່ວຍຄວາມຈໍາ
CNodeMemAvailGet(node, "virtual")

Int CNodeIdletimeGet( CNode node )
ຕອບຈໍານວນວິນາທີທີ່ບໍ່ມີການກົດແປ້ນພິມ ຫຼືການເຄື່ອນໄຫວຂອງເມົາສ໌
ເກີດຂຶ້ນຢູ່ໃນ terminal ໃດທີ່ເຊື່ອມຕໍ່ກັບ node ໄດ້. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1

float CNodeLoadAveGet( CNode node )
ຕອບຄ່າສະເລ່ຍການໂຫຼດຂອງໂນດສຳລັບ CPU ທັງໝົດ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1.0

Int CNodeCpuPercentIdleGet( CNode node )
ສົ່ງຄືນເປີເຊັນຂອງເວລາຫວ່າງທີ່ໂປເຊດເຊີທັງໝົດຂອງ node
ມີປະສົບການ.

Int CNodeCpuPercentSysGet( CNode node )
ສົ່ງຄືນເປີເຊັນຂອງເວລາທີ່ໂປເຊດເຊີທັງໝົດຂອງ node ມີ
ໃຊ້ເວລາແລ່ນລະຫັດ kernel.

Int CNodeCpuPercentUserGet( CNode node )
ສົ່ງຄືນເປີເຊັນຂອງເວລາທີ່ໂປເຊດເຊີທັງໝົດຂອງ node ມີ
ໃຊ້ເວລາແລ່ນລະຫັດຜູ້ໃຊ້.

Int CNodeCpuPercentGuestGet( CNode node )
ສົ່ງຄືນເປີເຊັນຂອງເວລາທີ່ໂປເຊດເຊີທັງໝົດຂອງ node ມີ
ໃຊ້ເວລາແລ່ນລະບົບປະຕິບັດການແຂກ.

Int CNodeNetworkBwGet( CNode node, string ປະເພດ )
ສົ່ງຄືນແບນວິດຂອງເຄືອຂ່າຍຂອງ node ຂອງ ປະເພດ ໃນ bytes/ວິນາທີ.
ປະເພດ ຖືກກໍານົດໂດຍນັກຂຽນຕາຕະລາງໃນຕົວກໍານົດເວລາ
ໄຟລ​໌​ການ​ຕັ້ງ​ຄ່າ​. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1
ບາງຕົວຢ່າງການໂທແມ່ນ:
CNodeNetworkBwGet( node, "ຮິບປິ" );
CNodeNetworkBwGet( node, "fddi" );

ເລືອກຂະຫນາດ CNodeDiskSpaceTotalGet(CNode node, string ຊື່)
ສົ່ງຄືນພື້ນທີ່ທັງໝົດຂອງ node ໃນ disk ທີ່ລະບຸໂດຍ ຊື່ ບ່ອນທີ່ ຊື່
ແມ່ນ​ຊື່​ອຸ​ປະ​ກອນ​ທີ່​ກໍາ​ນົດ​ໂດຍ​ຕົນ​ເອງ​ໂດຍ​ຜູ້​ຂຽນ​ກໍາ​ນົດ​ເວ​ລາ​ໃນ​
ໄຟລ໌ການຕັ້ງຄ່າຕົວກໍານົດເວລາ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeDiskSpaceTotalGet( node, "/scratch2" );

ເລືອກຂະຫນາດ CNodeDiskSpaceAvailGet(CNode node, string ຊື່)
ສົ່ງຄືນພື້ນທີ່ຫວ່າງຂອງໂນດໃນແຜ່ນທີ່ລະບຸໂດຍ ຊື່ ບ່ອນທີ່
ຊື່ ຖືກກໍານົດໂດຍ arbitrarily ໂດຍ writer writer ໃນຕາຕະລາງ
ໄຟລ​໌​ການ​ຕັ້ງ​ຄ່າ​. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeDiskSpaceAvailGet( node, "/scratch1" );

ເລືອກຂະຫນາດ CNodeDiskSpaceReservedGet(CNode node, string ຊື່)
ສົ່ງຄືນພື້ນທີ່ສະຫງວນຂອງໂນດໃນດິສກ໌ (ໂຄຕ້າຜູ້ໃຊ້ບໍ?) ລະບຸໂດຍ
ຊື່ ບ່ອນທີ່ ຊື່ ຖືກກໍານົດໂດຍ arbitrarily ໂດຍນັກຂຽນຕາຕະລາງໃນ
ໄຟລ໌ການຕັ້ງຄ່າຕົວກໍານົດເວລາ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeDiskSpaceReservedGet( node, "/scratch1" );

Int CNodeDiskInBwGet( CNode node, string ຊື່ )
ສົ່ງຄືນແບນວິດການຂຽນ (ໄບຕ໌/ວິນາທີ) ຂອງດິສກ໌ຂອງໂນດທີ່ລະບຸໄວ້
by ຊື່ . ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1
ຕົວຢ່າງ:
CNodeDiskInBwGet( node, "/ໄວ" );

Int CNodeDiskOutBwGet( CNode node, string ຊື່ )
ກັບຄືນການອ່ານແບນວິດ (bytes/sec) ຂອງດິສກ໌ຂອງ node ທີ່ລະບຸໂດຍ
ຊື່ . ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1
ຕົວຢ່າງ:
CNodeDiskOutBwGet( node, "/ໃຫຍ່" );

ເລືອກຂະຫນາດ CNodeSwapSpaceTotalGet( CNode node, string ຊື່ )
ສົ່ງຄືນພື້ນທີ່ທັງໝົດຂອງ node ໃນ swap ທີ່ລະບຸໂດຍ ຊື່ ບ່ອນທີ່ ຊື່
ຖືກກໍານົດໂດຍ arbitrarily ໂດຍ writer writer ໃນຕາຕະລາງ
ໄຟລ​໌​ການ​ຕັ້ງ​ຄ່າ​. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeSwapSpaceTotalGet( node, "ປະຖົມ" );

ເລືອກຂະຫນາດ CNodeSwapSpaceAvailGet( CNode node, string ຊື່ )
ສົ່ງຄືນພື້ນທີ່ຫວ່າງຂອງ node ໃນ swap ທີ່ລະບຸໂດຍ ຊື່ ບ່ອນທີ່ ຊື່
ແມ່ນ​ຊື່​ອຸ​ປະ​ກອນ​ທີ່​ກໍາ​ນົດ​ໂດຍ​ຕົນ​ເອງ​ໂດຍ​ຜູ້​ຂຽນ​ກໍາ​ນົດ​ເວ​ລາ​ໃນ​
ໄຟລ໌ການຕັ້ງຄ່າຕົວກໍານົດເວລາ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeSwapSpaceAvailGet( node, "ຮອງ" );

Int CNodeSwapInBwGet( CNode node, string ຊື່ )
ສົ່ງຄືນອັດຕາ swap ຂອງອຸປະກອນ swap ຂອງ node ທີ່ລະບຸໂດຍ ຊື່
ຕົວຢ່າງ:
CNodeSwapInBwGet(node, "ຮອງ");

Int CNodeSwapOutBwGet( CNode node, string ຊື່ )
ສົ່ງຄືນອັດຕາ swapout ຂອງອຸປະກອນ swap ຂອງ node ທີ່ລະບຸໂດຍ
ຊື່ ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1
ຕົວຢ່າງ:
CNodeSwapOutBwGet(node, "ປະຖົມ");

ເລືອກຂະຫນາດ CNodeTapeSpaceTotalGet( CNode node, string ຊື່ )
ສົ່ງຄືນພື້ນທີ່ທັງໝົດຂອງ node ໃນເທບທີ່ລະບຸໂດຍ ຊື່ ບ່ອນທີ່ ຊື່
ຖືກກໍານົດໂດຍ arbitrarily ໂດຍ writer writer ໃນຕາຕະລາງ
ໄຟລ​໌​ການ​ຕັ້ງ​ຄ່າ​. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeTapeSpaceTotalGet(node, "4mm");

ເລືອກຂະຫນາດ CNodeTapeSpaceAvailGet( CNode node, string ຊື່ )
ສົ່ງຄືນພື້ນທີ່ຫວ່າງຂອງໂນດໃນເທບທີ່ລະບຸໂດຍ ຊື່ ບ່ອນທີ່
ຊື່ ຖືກກໍານົດໂດຍ arbitrarily ໂດຍ writer writer ໃນຕາຕະລາງ
ໄຟລ​໌​ການ​ຕັ້ງ​ຄ່າ​. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeTapeSpaceAvailGet(node, "8mm");

Int CNodeTapeInBwGet( CNode node, string ຊື່ )
ສົ່ງຄືນແບນວິດການຂຽນ (ໄບຕ໌/ວິນາທີ) ຂອງເທບຂອງໂນດທີ່ລະບຸໄວ້
by ຊື່ . ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1
ຕົວຢ່າງ:
CNodeTapeInBwGet( node, "4 ມມ" );

Int CNodeTapeOutBwGet( CNode node, string ຊື່ )
ສົ່ງຄືນແບນວິດທີ່ອ່ານ (ໄບຕ໌/ວິນາທີ) ຂອງເທບຂອງໂນດທີ່ລະບຸໄວ້
by ຊື່ . ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1
ຕົວຢ່າງ:
CNodeTapeOutBwGet( node, "8 ມມ" );

ເລືອກຂະຫນາດ CNodeSrfsSpaceTotalGet( CNode node, string ຊື່ )
ສົ່ງຄືນພື້ນທີ່ທັງໝົດຂອງ node ໃນອຸປະກອນ srfs ທີ່ລະບຸໂດຍ ຊື່
ບ່ອນທີ່ ຊື່ ຖືກກໍານົດໂດຍ arbitrarily ໂດຍນັກຂຽນຕາຕະລາງໃນ
ໄຟລ໌ການຕັ້ງຄ່າຕົວກໍານົດເວລາ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeSrfsSpaceTotalGet(node, "/ໄວ");

ເລືອກຂະຫນາດ CNodeSrfsSpaceAvailGet( CNode node, string ຊື່ )
ສົ່ງຄືນພື້ນທີ່ຫວ່າງຂອງ node ໃນອຸປະກອນ srfs ທີ່ລະບຸໂດຍ ຊື່
ບ່ອນທີ່ ຊື່ ຖືກກໍານົດໂດຍ arbitrarily ໂດຍນັກຂຽນຕາຕະລາງໃນບາງ
ໄຟລ​໌​ການ​ຕັ້ງ​ຄ່າ​. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeSrfsSpaceAvailGet( node, "/ໃຫຍ່" );

ເລືອກຂະຫນາດ CNodeSrfsSpaceReservedGet(CNode node, string ຊື່)
ສົ່ງຄືນຈຳນວນທັງໝົດຂອງ node ຂອງພື້ນທີ່ສະຫງວນໃນອຸປະກອນ srfs
ລະບຸໂດຍ ຊື່ ບ່ອນທີ່ ຊື່ ຖືກກໍານົດໂດຍຜູ້ກໍານົດເວລາ
writer ໃນໄຟລ໌ການຕັ້ງຄ່າຕາຕະລາງ. ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1b
ຕົວຢ່າງ:
CNodeSrfsSpaceReservedGet( node, "/ໄວ" );

Int CNodeSrfsInBwGet( CNode node, string ຊື່ )
ສົ່ງຄືນແບນວິດການຂຽນ (bytes/sec) ຂອງອຸປະກອນ srfs ຂອງ node
ລະບຸໂດຍ ຊື່ . ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1
ຕົວຢ່າງ:
CNodeSrfsInBwGet( node, "/fast" );

Int CNodeSrfsOutBwGet( CNode node, string ຊື່ )
ສົ່ງຄືນແບນວິດທີ່ອ່ານ (bytes/sec) ຂອງອຸປະກອນ srfs ຂອງ node
ລະບຸໂດຍ ຊື່ . ຄ່າທີ່ບໍ່ໄດ້ຕັ້ງ: -1
ຕົວຢ່າງ:
CNodeSrfsOutBwGet( node, "/big" );

(5) ຫນ້າທີ່ອື່ນໆ

DateTime datetimeGet()
ໄດ້​ຮັບ​ວັນ​ທີ / ເວ​ລາ​ປະ​ຈຸ​ບັນ​.

Int datetimeToSec(DateTime dt)
ສົ່ງຄືນ # ຂອງວິນາທີນັບຕັ້ງແຕ່ຍຸກ (ເວລາເລີ່ມຕົ້ນຂອງ UNIX -
00:00:00, 1 ມັງກອນ 1970) ສໍາລັບວັນທີ/ເວລາທີ່ໃຫ້ ດທ.

Int ວຽກເຮັດງານທຳ( ວຽກເຮັດງານທໍາ ວຽກ, Int ການປະຕິບັດ, string ຕົວກໍານົດການ )
ປະຕິບັດ ການປະຕິບັດ on ວຽກ​ເຮັດ​ງານ​ທໍາ ມີ ຕົວກໍານົດການ ລະບຸໄວ້ຂຶ້ນກັບ
ການປະຕິບັດ. ການປະຕິບັດ ສາມາດເປັນ: SYNCRUN, ASYNCRUN, DELETE, RERUN, ຖື,
ປ່ອຍ, ສັນຍານ, MODIFYATTR, MODIFYRES ບ່ອນທີ່:
ການປະຕິບັດ ລາຍລະອຽດ
=============== ==========================
SyncRUN ແລ່ນ ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ synchronously,
ຊຶ່ງຫມາຍຄວາມວ່າ ໄດ້ ໂທ to
ວຽກເຮັດ() ຈະ ພຽງແຕ່
ການກັບຄືນມາ ໃນເວລາທີ່ ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ ມີ
ເລີ່ມຕົ້ນ ການເຮັດວຽກ or ໃນເວລາທີ່
an ຄວາມຜິດພາດ ມີ ໄດ້
ພົບ.
Param ມູນຄ່າ:
ຊື່ of ເຈົ້າພາບ to ແລ່ນ
ວຽກ​ເຮັດ​ງານ​ທໍາ ພາຍໃຕ້.

ASYNCRUN ແລ່ນ ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ asynchronously,
ຊຶ່ງຫມາຍຄວາມວ່າ ໄດ້ ໂທ to
ວຽກເຮັດ() ຈະ ການກັບຄືນມາ
ທັນທີ as ທັນທີ as
ໄດ້ ແລ່ນ ຮ້ອງຂໍ is
validated by ໄດ້ PBS ເຊີບເວີ,
ແລະ ບໍ່ ຈໍາເປັນ ໃນເວລາທີ່
ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ ມີ ເລີ່ມຕົ້ນ
ການປະຫານຊີວິດ.
Param ມູນຄ່າ:
ຊື່ of ເຈົ້າພາບ to ແລ່ນ
ວຽກ​ເຮັດ​ງານ​ທໍາ ພາຍໃຕ້.

DELETE ລຶບ ໄດ້ ວຽກງານ.
Param ມູນຄ່າ:
"deldelay=<# of ວິນາທີ>"
- ຊັກຊ້າ # of ວິນາທີ
ລະຫວ່າງ ໄດ້ ການສົ່ງ
of ໄລຍະເປົ້າໝາຍ ແລະ SIGKILL
to ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ ກ່ອນທີ່ຈະ
ໄດ້ຮັບ ລຶບແລ້ວ.

RERUN ກັບຄືນມາ ໄດ້ ການເຮັດວຽກ ວຽກ,
ທີ່ ກ່ຽວຂ້ອງ ສິ້ນສຸດ
ໄດ້ ກອງປະຊຸມ ຜູ້ນໍາ of ໄດ້
ວຽກ​ເຮັດ​ງານ​ທໍາ ແລະ ກັບຄືນ ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ
to ໄດ້ ຄິວ ລັດ.

ຊະນິດ ສະຖານທີ່ ຫນຶ່ງ or ເພີ່ມເຕີມ ຖື
on ໄດ້ ວຽກງານ.
Param ມູນຄ່າ:
"u", "o", "s", "uo", "os",
"uos"
- ປະເພດ of ຖື to ສະຖານທີ່
on ວຽກ: u(ser), o(ອື່ນໆ),
s(ລະບົບ).

ການປ່ອຍ ເອົາອອກ or ປ່ອຍອອກມາ
ຖື ຖືກຈັດໃສ່ on ວຽກ.
Param ມູນຄ່າ:
"u", "o", "s", "uo", "os",
"uos"
- ປະເພດ of ຖື to ເອົາ
ຈາກ ວຽກ: u(ser), o(ອື່ນໆ),
s(ລະບົບ).

ລາຍເຊັນ ສົ່ງ a signal to ໄດ້
ການປະຕິບັດ ວຽກງານ.
Param ມູນຄ່າ:
"HUP", "SIGHUP",...

MODIFYATTR ດັດແປງ ໄດ້ ລະບຸ
ຄຸນລັກສະນະ of ໄດ້ ວຽກ​ເຮັດ​ງານ​ທໍາ to
ໄດ້ ໄດ້ຮັບ ມູນຄ່າ, ໃນເວລາທີ່
ໄດ້ attrib_name is
!= "ລາຍການຊັບພະຍາກອນ" or
"resources_used".
Param ມູນຄ່າ:
"attrib_name=value"

ແກ້ໄຂ ດັດແປງ ໄດ້ ວຽກ
ລາຍຊື່ຊັບພະຍາກອນ
ຄຸນລັກສະນະ ໄດ້ຮັບ ໄດ້
res_name ແລະ ໄດ້
res_value:
Resource_List.res_name=
res_value
Param ມູນຄ່າ:
"res_name=res_val"
ຕົວກໍານົດການ ມູນຄ່າແມ່ນຂຶ້ນກັບການປະຕິບັດ. ລະບຸ NULLSTR ຖ້າບໍ່ມີຄ່າ
ຕົວກໍານົດການນີ້ແມ່ນຕ້ອງການ.
ມູນຄ່າກັບຄືນ: ຄວາມສຳເລັດ ຫຼື FAIL.
ໝາຍເຫດ: ບໍ່ຮູ້ຈັກໃດໆ ການປະຕິບັດ ຖືກລະເລີຍ.
ຕົວຢ່າງ:
// ແລ່ນ ວຽກເຮັດງານທໍາ j synchronously
JobAction(j, SyncRUN, NULLSTR);

// ແລ່ນ ວຽກເຮັດງານທໍາ j asynchronously on ເຈົ້າພາບ "db"
JobAction(j, ASYNCRUN, "db");

// ລຶບ ວຽກເຮັດງານທໍາ j
JobAction(j, ລົບລ້າງ, NULLSTR);

// ລຶບ ວຽກເຮັດງານທໍາ j ກັບ a ຊັກຊ້າ of 5 ແຫ້ງ
// ລະຫວ່າງ ໄດ້ ການສົ່ງ of ໄລຍະເປົ້າໝາຍ ແລະ
// SIGKILL
JobAction(j, ລົບລ້າງ, "deldelay=5");

// ແລ່ນຄືນ ວຽກເຮັດງານທໍາ j
JobAction(j, RERUN, NULLSTR);

// ສະຖານທີ່ a u(ser) ຖື on ວຽກເຮັດງານທໍາ j
JobAction(j, ຖື, "u");

// ສະຖານທີ່ an o(ອື່ນໆ) ຖື on ວຽກເຮັດງານທໍາ j
JobAction(j, ຖື, "o");

// ສະຖານທີ່ a s(ລະບົບ) ຖື on ວຽກເຮັດງານທໍາ j
JobAction(j, ຖື, "s");

// ສະຖານທີ່ a Default ຖື (ຫຼື) on ວຽກເຮັດງານທໍາ j
JobAction(j, ຖື, NULLSTR);

// ປ່ອຍ u(ser) ຖື ຈາກ ວຽກເຮັດງານທໍາ j
JobAction(j, ປ່ອຍ, "u");

// ປ່ອຍ o(ອື່ນໆ) ຖື ຈາກ ວຽກເຮັດງານທໍາ j
JobAction(j, ປ່ອຍ, "o");

// ປ່ອຍ s(ລະບົບ) ຖື ຈາກ ວຽກເຮັດງານທໍາ j
JobAction(j, ປ່ອຍ, "s");

// ປ່ອຍ Default ຖື (ຫຼື) ຈາກ ວຽກເຮັດງານທໍາ j
JobAction(j, ປ່ອຍ, NULLSTR);

// ສົ່ງ ຕິດຕາມ signal to ວຽກເຮັດງານທໍາ j
JobAction(j, ສັນຍາລັກ, "SIGHUP");

// ການປັບປຸງ ໄດ້ ຄວາມຄິດເຫັນ ຄຸນລັກສະນະ of ວຽກເຮັດງານທໍາ
// j to "a ຂໍ້ຄວາມ".
// ໄດ້ ຕົວກໍານົດການ ຮູບແບບ ແມ່ນ: attribute_name=new_value
// ປຶກສາຫາລື PBS ເອກະສານ ສໍາລັບການ a ບັນຊີລາຍຊື່ of ວຽກ​ເຮັດ​ງານ​ທໍາ
// ຄຸນລັກສະນະ ຊື່ ທີ່ ສາມາດເຮັດໄດ້ be ລະບຸ.
JobAction(j, MODIFYATTR, "comment=a ຂໍ້ຄວາມ");
// ການປັບປຸງ ໄດ້ Resource_List.cput ຄຸນລັກສະນະ of ວຽກເຮັດງານທໍາ
// j to 3600 ວິນາທີ.
// ໄດ້ ຕົວກໍານົດການ ຮູບແບບ ແມ່ນ: resource_name=new_value
// ເບິ່ງ pbs_resources* ຜູ້ຊາຍ Page ສໍາລັບການ a ບັນຊີລາຍຊື່ of
// resource_names ທີ່ ສາມາດເຮັດໄດ້ be ລະບຸ.
JobAction(j, ແກ້ໄຂ, "cput=3600");

QueJobFind(Que que, ມ່ວນ Int func, int cpr, int ມູນຄ່າ);

QueJobFind(Que que, ມ່ວນ string func, int cpr, ສາຍ ມູນຄ່າ);

QueJobFind(Que que, ມ່ວນ DateTime func, int cpr,DateTime ມູນຄ່າ);

QueJobFind(Que que, ມ່ວນ ເລືອກຂະຫນາດ func, int cpr, ຂະຫນາດ ມູນຄ່າ);

ບ່ອນທີ່ cpr ແມ່ນໜຶ່ງໃນ: OP_EQ, OP_NEQ, OP_LE, OP_LT, OP_GE, OP_GT. ມ່ວນ
ແມ່ນຫນ້າທີ່ທີ່ມີການໂຕ້ຖຽງເທົ່ານັ້ນທີ່ເປັນປະເພດວຽກ. ວຽກເຮັດງານທໍາ ແມ່ນການກັບຄືນ
ປະເພດ

ລາຍລະອຽດ: ນຳໃຊ້ ມ່ວນ ກັບທຸກໆວຽກໃນ que , ແລະກັບຄືນທໍາອິດ
ວຽກທີ່ພໍໃຈກັບການປຽບທຽບຢ່າງມີເຫດຜົນ: Func(ວຽກ) cpr ມູນຄ່າ

ຕົວຢ່າງ:

ເລືອກຂະຫນາດ JobVirtualMemAvailGet(ວຽກ ວຽກ)
{
ເລືອກຂະຫນາດ sz ;

sz = JobSizeResReqGet(ວຽກ, "ເມັມ");
ກັບຄືນ(sz);
}
Int JobWallTimeReqGet(ວຽກ ວຽກ)
{
Int wallt;

ຝາ = JobIntResReqGet(ວຽກ, "walltime");
ກັບຄືນ(wallt);
}

Int JobCpuTimeUsedGet(ວຽກ ວຽກ)
{
Int ຄອມພິວເຕີ;

ຂໍ້ມູນ = JobIntResUseGet(ວຽກ, "cput");
return(cput);
}

ວ່າ findQueByName(ຊຸດ ວ່າ ຄິວ, string qname)
{
ວ່າ q;

foreach(ກ in ຄິວ) {
ຖ້າ( QueNameGet(q) EQ qname ) {
ກັບຄືນ(q);
}
}
ກັບຄືນ(NOQUE);
}
sche_main()
{
Server s;
ວ່າ que;
ທີ່ກໍານົດໄວ້ ວ່າ sq;

// ໄດ້ຮັບ ທ້ອງຖິ່ນ ເຄື່ອງແມ່ຂ່າຍ
s = AllServersLocalHostGet();

// ໄດ້ຮັບ ໄດ້ ແຖວ of ໄດ້ Server s
sq = ServerQueuesGet(s);

// ໄດ້ຮັບ ໄດ້ ຄິວ ຊື່ວ່າ "ໄວ" ຈາກ ໄດ້
// ທ້ອງຖິ່ນ ເຄື່ອງແມ່ຂ່າຍ
que = findQueByName( sq, "ໄວ" );

// ຄົ້ນຫາ ໄດ້ 1st ວຽກ​ເຮັດ​ງານ​ທໍາ ທີ່ ຝາ ຄວາມຕ້ອງການ
// is == 300s:
QueJobFind(que, JobWallTimeReqGet, OP_EQ, ປີ 300);

// ຄົ້ນຫາ ໄດ້ 1st ວຽກ​ເຮັດ​ງານ​ທໍາ ທີ່ ອີ​ເມວ ທີ່ຢູ່ to
// ແຈ້ງ ກ່ຽວກັບ ວຽກ​ເຮັດ​ງານ​ທໍາ ກິດຈະກໍາ != "bayucan":
QueJobFind(que, JobEmailAddrGet, OP_NEQ,
"bayucan");

// ຄົ້ນຫາ ໄດ້ 1st ວຽກ​ເຮັດ​ງານ​ທໍາ ທີ່ ແມ່ນ ສ້າງ ຫຼັງຈາກ
// or on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// ຄົ້ນຫາ ໄດ້ 1st ວຽກ​ເຮັດ​ງານ​ທໍາ ທີ່ ແມ່ນ ສ້າງ ຫຼັງຈາກ
// 3:3:44:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44) );

// ຄົ້ນຫາ ໄດ້ 1st ວຽກ​ເຮັດ​ງານ​ທໍາ ທີ່ ແມ່ນ ສ້າງ ຫຼັງຈາກ
// 3:3:44 on 3 / 3 / 1997:
QueJobFind(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// ຄົ້ນຫາ ໄດ້ 1st ວຽກ​ເຮັດ​ງານ​ທໍາ ທີ່ cpu ທີ່ໃຊ້ເວລາ ໃຫມ່ < 1600s:
QueJobFind(que, JobCpuTimeUsedGet, OP_LT, ປີ 1600);

// ຄົ້ນຫາ ໄດ້ 1st ວຽກ​ເຮັດ​ງານ​ທໍາ ທີ່ virtual ຫນ່ວຍຄວາມຈໍາ
// ຄວາມຕ້ອງການ <= 300mb:
QueJobFind(que, JobVirtualMemAvailGet, OP_LE,
300mb);
}

ວຽກເຮັດງານທໍາ QueJobFind( ວ່າ ວ່າ, ສະຫນຸກສະຫນານ Int ມ່ວນ, Int cpr)

ວຽກເຮັດງານທໍາ QueJobFind( ວ່າ ວ່າ, ສະຫນຸກສະຫນານ string ມ່ວນ, Int cpr)

ວຽກເຮັດງານທໍາ QueJobFind( ວ່າ ວ່າ, ສະຫນຸກສະຫນານ DateTime ມ່ວນ, Int cpr)

ວຽກເຮັດງານທໍາ QueJobFind( ວ່າ ວ່າ, ສະຫນຸກສະຫນານ ເລືອກຂະຫນາດ ມ່ວນ, Int cpr)

ບ່ອນທີ່ cpr ສາມາດເປັນຫນຶ່ງໃນຕໍ່ໄປນີ້: OP_MAX, OP_MIN, ມ່ວນ ເປັນ
ຟັງຊັນທີ່ມີການໂຕ້ຖຽງເທົ່ານັ້ນທີ່ເປັນປະເພດວຽກ.

ລາຍ​ລະ​ອຽດ: ສົ່ງຄືນວຽກດ້ວຍຄ່າສູງສຸດ ຫຼື ຕ່ຳສຸດທີ່ພົບ
Func(ວຽກ) ຍ້ອນວ່າມັນຖືກນໍາໃຊ້ກັບທຸກໆວຽກໃນ que .

ຕົວຢ່າງ:
Int JobCpuTimeReqGet(ວຽກ ວຽກ)
{
Int ຄອມພິວເຕີ;

ຂໍ້ມູນ = JobIntResReqGet(ວຽກ, "cput");
return(cput);
}
sche_main()
{
ວ່າ que;
ວຽກເຮັດງານທໍາ ວຽກ;

// ຄົ້ນຫາ ໄດ້ ວຽກເຮັດງານທໍາ ກັບ ໄດ້ ທີ່ສູງທີ່ສຸດ cpu ທີ່ໃຊ້ເວລາ
// ຄວາມຕ້ອງການ:
ວຽກ​ເຮັດ​ງານ​ທໍາ = QueJobFind(que, JobCpuTimeReqGet, OP_MAX);

// ຄົ້ນຫາ ໄດ້ ວຽກເຮັດງານທໍາ ກັບ ໄດ້ ຕໍາ່ສຸດທີ່ cpu ທີ່ໃຊ້ເວລາ
// ຄວາມຕ້ອງການ:
ວຽກ​ເຮັດ​ງານ​ທໍາ = QueJobFind(que, JobCpuTimeReqGet, OP_MIN);
}

ວ່າ QueFilter(Que que, ມ່ວນ Int func, int cpr, int ມູນຄ່າ)

ວ່າ QueFilter(Que que, ມ່ວນ string func, int cpr, ສາຍ ມູນຄ່າ)

ວ່າ QueFilter(Que que, ມ່ວນ DateTime func, int cpr, ວັນທີ ມູນຄ່າ)

ວ່າ QueFilter(Que que, ມ່ວນ ເລືອກຂະຫນາດ func, int cpr, ຂະຫນາດ ມູນຄ່າ)

ບ່ອນທີ່ cpr ສາມາດເປັນຫນຶ່ງໃນຕໍ່ໄປນີ້: OP_EQ, OP_NEQ, OP_LE, OP_LT,
OP_GE, OP_GT, ມ່ວນ ແມ່ນຫນ້າທີ່ທີ່ມີການໂຕ້ຖຽງເທົ່ານັ້ນທີ່ເປັນປະເພດວຽກ.

ລາຍລະອຽດ: ນຳໃຊ້ ມ່ວນ ກັບທຸກໆວຽກໃນ que , ແລະກັບຄືນ que ໃຫມ່
ມີວຽກທັງໝົດທີ່ຕອບສະໜອງເງື່ອນໄຂການປຽບທຽບ:
Func(ວຽກ) cpr ມູນຄ່າ

ຕົວຢ່າງ:
Int JobWallTimeReqGet(ວຽກ ວຽກ)
{
Int wallt;

ຝາ = JobIntResReqGet(ວຽກ, "walltime");
ກັບຄືນ(wallt);
}
sche_main()
{
ວ່າ que;
ວ່າ newq;

// ຜົນຕອບແທນ a ໃຫມ່ que ບັນຈຸມີ ທັງຫມົດ ວຽກເຮັດງານທໍາ in "que"
// ກັບ a ຝາ ຄວາມຕ້ອງການ == 300s:
newq = QueFilter(que, JobWallTimeReqGet, OP_EQ, ປີ 300);

// ຜົນຕອບແທນ a ໃຫມ່ que ບັນຈຸມີ ທັງຫມົດ ວຽກເຮັດງານທໍາ in "que"
// ກັບ an ອີ​ເມວ ທີ່ຢູ່ != "bayucan":
newq = QueFilter(que, JobEmailAddrGet, OP_NEQ, "bayucan");

// ຜົນຕອບແທນ a ໃຫມ່ que ບັນຈຸມີ ທັງຫມົດ ວຽກເຮັດງານທໍາ in "que"
// ສ້າງ ຫຼັງຈາກ or on 3 / 3 / 1997:
newq = QueFilter(que, JobDateTimeCreatedGet, OP_GE,
(3|3|1997));

// ຜົນຕອບແທນ a ໃຫມ່ que ບັນຈຸມີ ທັງຫມົດ ວຽກເຮັດງານທໍາ in "que"
// ສ້າງ ຫຼັງຈາກ 3:3:44:
newq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3:3:44) );

// ຜົນຕອບແທນ a ໃຫມ່ que ບັນຈຸມີ ທັງຫມົດ ວຽກເຮັດງານທໍາ in "que"
// ສ້າງ ຫຼັງຈາກ 3:3:44 on 3 / 3 / 1997:
newq = QueFilter(que, JobDateTimeCreatedGet, OP_GT,
(3|3|1997@3:3:44));

// ຫມາຍ​ເຫດ​: ໄດ້ ຕົ້ນສະບັບ "que" is ບໍ່ ແກ້ໄຂ
// ຢ່າງໃດກໍ່ຕາມ.
}

Int ຄັດ (ຊຸດ ວຽກເຮັດງານທໍາ s, ສະຫນຸກສະຫນານ Int key, Int order)

Int ຄັດ (ຊຸດ ວຽກເຮັດງານທໍາ s, ສະຫນຸກສະຫນານ string key, Int order)

Int ຄັດ (ຊຸດ ວຽກເຮັດງານທໍາ s, ສະຫນຸກສະຫນານ float key, Int order)

Int ຄັດ (ຊຸດ ວຽກເຮັດງານທໍາ s, ສະຫນຸກສະຫນານ DateTime key, Int order)

Int ຄັດ (ຊຸດ ວຽກເຮັດງານທໍາ s, ສະຫນຸກສະຫນານ ເລືອກຂະຫນາດ key, Int order)

ບ່ອນທີ່ s ຊຸດວຽກເພື່ອຈັດຮຽງ. ທີ່ສໍາຄັນ ແມ່ນ​ລະ​ດັບ​ທີ່​ສໍາ​ຄັນ​ທີ່​ເປັນ​
ຟັງຊັນທີ່ມີການໂຕ້ຖຽງດຽວຂອງປະເພດວຽກ, ຄໍາສັ່ງ ແມ່ນ​ການ​ຄັດ​ເລືອກ​
ຄໍາສັ່ງ: ASC, DESC.

ລາຍ​ລະ​ອຽດ​: ຈັດ​ລຽງ​ລໍາ​ດັບ​ອົງ​ປະ​ກອບ​ຂອງ​ s , ໃນ ASCending ຫຼື
DESCending ຄໍາສັ່ງຂອງມູນຄ່າທີ່ຖືກສົ່ງຄືນໂດຍ ທີ່ສໍາຄັນ ຫນ້າທີ່, ເປັນ
ນຳໃຊ້ກັບສະມາຊິກທຸກຊຸດຂອງວຽກ. ໄດ້ s ວັດຖຸຖືກດັດແກ້
ດ້ວຍການໂທນີ້. ນີ້ຈະສົ່ງຄືນຄວາມສຳເລັດ ຫຼື FAIL ຂຶ້ນກັບຜົນຂອງ
ການຈັດລຽງ.

ຕົວຢ່າງ:
ເລືອກຂະຫນາດ JobMemReqGet(ວຽກ ວຽກ)
{
ເລືອກຂະຫນາດ mem;

mem = JobSizeResReqGet(ວຽກ, "ເມັມ");
ການກັບຄືນມາ(mem);
}

sche_main()
{
Server ແມ່ບົດ;

ທີ່ກໍານົດໄວ້ ວຽກເຮັດງານທໍາ ວຽກ;

Int ສັ່ງ;

// ໄດ້ຮັບ ທ້ອງຖິ່ນ ເຄື່ອງແມ່ຂ່າຍ
ຕົ້ນສະບັບ = AllServersLocalHostGet();

ວຽກເຮັດງານທໍາ = ServerJobsGet(ແມ່ບົດ);
ຄັດ (ວຽກ, JobPriorityGet, ASC);
ຄັດ (ວຽກ, JobIdGet, DESC);
ຄໍາສັ່ງ = ASC;
ຄັດ (ວຽກ, JobDateTimeCreatedGet, ຄໍາສັ່ງ);
ຄໍາສັ່ງ = DESC;
ຄັດ (ວຽກ, JobMemReqGet, ຄໍາສັ່ງ);
}

Int ຄັດ (ຊຸດ ວ່າ s, ສະຫນຸກສະຫນານ Int key, Int order)

Int ຄັດ (ຊຸດ ວ່າ s, ສະຫນຸກສະຫນານ string key, Int order)

Int ຄັດ (ຊຸດ ວ່າ s, ສະຫນຸກສະຫນານ float key, Int order)

Int ຄັດ (ຊຸດ ວ່າ s, ສະຫນຸກສະຫນານ DateTime key, Int order)

Int ຄັດ (ຊຸດ ວ່າ s, ສະຫນຸກສະຫນານ ເລືອກຂະຫນາດ key, Int order)

ບ່ອນທີ່ s ຊຸດຂອງແຖວເພື່ອຈັດຮຽງ. ທີ່ສໍາຄັນ ແມ່ນ​ລະ​ດັບ​ທີ່​ສໍາ​ຄັນ​ທີ່​ເປັນ​
ຟັງຊັນທີ່ມີພຽງແຕ່ການໂຕ້ຖຽງຂອງປະເພດ Que, ຄໍາສັ່ງ ແມ່ນ​ການ​ຄັດ​ເລືອກ​
ຄໍາສັ່ງ: ASC, DESC.

ລາຍ​ລະ​ອຽດ​: ຈັດ​ລຽງ​ລໍາ​ດັບ​ອົງ​ປະ​ກອບ​ຂອງ​ s , ໃນ ASCending ຫຼື
DESCending ຄໍາສັ່ງຂອງມູນຄ່າທີ່ຖືກສົ່ງຄືນໂດຍ ທີ່ສໍາຄັນ ຫນ້າທີ່, ເປັນ
ນຳໃຊ້ກັບສະມາຊິກທຸກຊຸດຂອງແຖວ. ໄດ້ s ວັດຖຸແມ່ນ
ແກ້ໄຂດ້ວຍການໂທນີ້. ອັນນີ້ໃຫ້ຜົນຕອບແທນ SUCCESS ຫຼື FAIL ຂຶ້ນກັບ
ຜົນໄດ້ຮັບຂອງການຈັດລຽງ.

ຕົວຢ່າງ:
ເລືອກຂະຫນາດ QueMemAvailGet(Que ກວ່າ)
{
ເລືອກຂະຫນາດ mem;

mem = QueSizeResAvailGet(que, "ເມັມ");
ການກັບຄືນມາ(mem);
}

sche_main()
{
Server ແມ່ບົດ;

ທີ່ກໍານົດໄວ້ ວ່າ ques;
Int ສັ່ງ;

// ໄດ້ຮັບ ທ້ອງຖິ່ນ ເຄື່ອງແມ່ຂ່າຍ
ຕົ້ນສະບັບ = AllServersLocalHostGet();

ແມ່ນ​ຫຍັງ = ServerQueuesGet(ແມ່ບົດ);
ຄັດ (ques, QuePriorityGet, ASC);
ຄັດ (ques, QueNameGet, ASC);
ຄໍາສັ່ງ = DESC;
ຄັດ (ques, QueMemAvailGet, ຄໍາສັ່ງ);
}

Int ຄັດ (ຊຸດ Server s, ສະຫນຸກສະຫນານ Int key, Int order)

Int ຄັດ (ຊຸດ Server s, ສະຫນຸກສະຫນານ string key, Int order)

Int ຄັດ (ຊຸດ Server s, ສະຫນຸກສະຫນານ float key, Int order)

Int ຄັດ (ຊຸດ Server s, ສະຫນຸກສະຫນານ DateTime key, Int order)

Int ຄັດ (ຊຸດ Server s, ສະຫນຸກສະຫນານ ເລືອກຂະຫນາດ key, Int order)

ບ່ອນທີ່ s ຊຸດຂອງເຄື່ອງແມ່ຂ່າຍເພື່ອຈັດຮຽງ. ທີ່ສໍາຄັນ ແມ່ນ​ລະ​ດັບ​ທີ່​ສໍາ​ຄັນ​ແມ່ນ​
ຟັງຊັນທີ່ argument ສະເພາະແມ່ນປະເພດເຊີບເວີ, ຄໍາສັ່ງ ເປັນ
ການຈັດລຽງລຳດັບ: ASC, DESC.

ລາຍ​ລະ​ອຽດ​: ຈັດ​ລຽງ​ລໍາ​ດັບ​ອົງ​ປະ​ກອບ​ຂອງ​ s , ໃນ ASCending ຫຼື
DESCending ຄໍາສັ່ງຂອງມູນຄ່າທີ່ຖືກສົ່ງຄືນໂດຍ ທີ່ສໍາຄັນ ຫນ້າທີ່, ເປັນ
ນຳໃຊ້ກັບສະມາຊິກທຸກຊຸດຂອງເຊີບເວີ. ໄດ້ s ວັດຖຸແມ່ນ
ແກ້ໄຂດ້ວຍການໂທນີ້. ອັນນີ້ໃຫ້ຜົນຕອບແທນ SUCCESS ຫຼື FAIL ຂຶ້ນກັບ
ຜົນໄດ້ຮັບຂອງການຈັດລຽງ.

ຕົວຢ່າງ:
ເລືອກຂະຫນາດ ServerMemAvailGet(ເຊີບເວີ ຮັບໃຊ້)
{
ເລືອກຂະຫນາດ mem;

mem = ServerSizeResAvailGet(ໃຫ້ບໍລິການ, "ເມັມ");
ການກັບຄືນມາ(mem);
}

sche_main()
{
ທີ່ກໍານົດໄວ້ Server ເຊີບເວີ;

Int ສັ່ງ;

Int ret;

ເຊີບເວີ = AllServersGet();

ການປະຕິເສດ = ຈັດຮຽງ(ເຊີບເວີ, ServerMaxRunJobsGet, ASC);
ຈັດຮຽງ(ເຊີບເວີ, ServerInetAddrGet, ASC);

ຄໍາສັ່ງ = DESC;
ຈັດຮຽງ(ເຊີບເວີ, ServerMemAvailGet, ຄໍາສັ່ງ);
}

Int ຄັດ (ຊຸດ CNode s, ສະຫນຸກສະຫນານ Int key, Int order)

Int ຄັດ (ຊຸດ CNode s, ສະຫນຸກສະຫນານ string key, Int order)

Int ຄັດ (ຊຸດ CNode s, ສະຫນຸກສະຫນານ float key, Int order)

Int ຄັດ (ຊຸດ CNode s, ສະຫນຸກສະຫນານ DateTime key, Int order)

Int ຄັດ (ຊຸດ CNode s, ສະຫນຸກສະຫນານ ເລືອກຂະຫນາດ key, Int order)

ບ່ອນທີ່ s ຊຸດຂອງ nodes ເພື່ອຈັດຮຽງ. ທີ່ສໍາຄັນ ແມ່ນ​ລະ​ດັບ​ທີ່​ສໍາ​ຄັນ​ທີ່​ເປັນ​
ຟັງຊັນທີ່ມີພຽງແຕ່ການໂຕ້ຖຽງຂອງປະເພດ CNode, ຄໍາສັ່ງ ແມ່ນ​ການ​ຄັດ​ເລືອກ​
ຄໍາສັ່ງ: ASC, DESC.

ລາຍ​ລະ​ອຽດ​: ຈັດ​ລຽງ​ລໍາ​ດັບ​ອົງ​ປະ​ກອບ​ຂອງ​ s , ໃນ ASCending ຫຼື
DESCending ຄໍາສັ່ງຂອງມູນຄ່າທີ່ຖືກສົ່ງຄືນໂດຍ ທີ່ສໍາຄັນ ຫນ້າທີ່, ເປັນ
ນຳໃຊ້ກັບທຸກໆສະມາຊິກຂອງຊຸດຂອງ nodes. ໄດ້ s ວັດຖຸແມ່ນ
ແກ້ໄຂດ້ວຍການໂທນີ້. ອັນນີ້ໃຫ້ຜົນຕອບແທນ SUCCESS ຫຼື FAIL ຂຶ້ນກັບ
ຜົນໄດ້ຮັບຂອງການຈັດລຽງ.

ຕົວຢ່າງ:
ເລືອກຂະຫນາດ CNodeMyMemAvailGet(CNode cn)
{
ເລືອກຂະຫນາດ mem;

mem = CNodeMemAvailGet(cn, "virtual");
ການກັບຄືນມາ(mem);
}

sche_main()
{
ທີ່ກໍານົດໄວ້ CNode scnode;

Int ສັ່ງ;

ສະໂນດ = AllNodesGet();

ຄັດ (scnode, CNodeIdletimeGet, ASC);
ຄັດ (scnode, CNodeNameGet, ASC);
ຄໍາສັ່ງ = DESC;
ຄັດ (scnode, CNodeMyMemAvailGet, ຄໍາສັ່ງ);
}

CNode..Get() FUNCTIONS


ຄ່າກັບຄືນຂອງຟັງຊັນ CNode..Get() ທີ່ສົນທະນາໃນພາກກ່ອນໜ້າແມ່ນ
ໄດ້ຮັບໂດຍການສົ່ງຄໍາຖາມຊັບພະຍາກອນໄປຫາ MOM ຂອງ CNode ໃນທຸກໆການກໍານົດເວລາຊ້ໍາກັນ.
ຍົກ​ຕົວ​ຢ່າງ, CNodeLoadAveGet(node) ຈະສົ່ງຄືນຄ່າທີ່ໄດ້ຮັບຈາກບາງອັນ
resource> query (ນີ້ອາດຈະເປັນ string "loadave") ທີ່ຖືກສົ່ງໄປຫາ MOM ຂອງ node. ໄດ້
" -> CNode..Get()" ການສ້າງແຜນທີ່ພາຍໃນ, ແຕ່ພວກເຂົາສາມາດເປັນ
ສາມາດເພີ່ມແຜນທີ່ທີ່ດັດແກ້ ຫຼືເພີ່ມເຕີມໄດ້ຜ່ານໄຟລ໌ການຕັ້ງຄ່າຕົວກໍານົດເວລາ. ການຕັ້ງຄ່າ
ເອກະສານໄດ້ຖືກປຶກສາຫາລືໃນ pbs_sched_basl(8 ຂ).
ແຜນ​ທີ່​ທີ່​ໄດ້​ສ້າງ​ຕັ້ງ​ຂຶ້ນ​ແລ້ວ​ແມ່ນ​ໄດ້​ຮັບ​ໃຫ້​ຢູ່​ໃນ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​:

ສໍາລັບສະຖາປັດຕະຍະກໍາທັງຫມົດ:

CNode..Get() ຈິງ ໂທ ເຈົ້າພາບ ຊັບພະຍາກອນ
======================== =============
CNodeOsGet(node) ໂຄ້ງ
CNodeLoadAveGet(node) loadave
CNodeIdletimeGet(node) ເວລາຫວ່າງ

ໃຊ້ basl2cB ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net


ເຊີບເວີ ແລະສະຖານີເຮັດວຽກຟຣີ

ດາວໂຫຼດແອັບ Windows ແລະ Linux

Linux ຄຳ ສັ່ງ

Ad