Fortran ¥é¥¤¥Ö¥é¥ê¡¦¥ê¥Õ¥¡¥ì¥ó¥¹ ¥Û¡¼¥àÌܼ¡Á°¥Ú¡¼¥¸¤Ø¼¡¥Ú¡¼¥¸¤Øº÷°ú


Fortran ¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó

¤³¤Î¾Ï¤Ç¤Ï¡¢Fortran ¤Î¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤ò¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤ËÀâÌÀ¤·¤Þ¤¹¡£VMS ¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ØFORTRAN 77 ¸À¸ì¥ê¥Õ¥¡¥ì¥ó¥¹¡Ù¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ËܾϤÇÀâÌÀ¤¹¤ë¥ë¡¼¥Á¥ó¤Ë¤Ï¤¹¤Ù¤Æ¡¢Âбþ¤¹¤ë¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤¬¥Þ¥Ë¥å¥¢¥ë¥é¥¤¥Ö¥é¥ê¤Î¥»¥¯¥·¥ç¥ó 3F ¤ËÍѰդµ¤ì¤Æ¤¤¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢man -s 3F access ¤ò¼Â¹Ô¤¹¤ë¤È¡¢access ¤È¤¤¤¦¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤Ë´Ø¤¹¤ë¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ÎÆâÍÆ¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

Fortran ¤ä C ¤«¤é¸Æ¤Ó½Ð¤·¤¬²Äǽ¤Ê¾åµ­°Ê³°¤Î¿ô³Ø¥ë¡¼¥Á¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ø¿ôÃÍ·×»»¥¬¥¤¥É¡Ù¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¸Æ¤Ó½Ð¤·²Äǽ¤Ê¿ô³Ø¥ë¡¼¥Á¥ó¤Ë¤Ï¡¢libm ¤ä libsunmath ¤Îɸ½à¿ô³Ø¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó (Intro(3M)»²¾È)¡¢¤³¤ì¤é¤Î¥é¥¤¥Ö¥é¥ê¤ÎºÇŬ²½¥Ð¡¼¥¸¥ç¥ó¡¢SPARC ¥Ù¥¯¥¿¿ô³Ø¥é¥¤¥Ö¥é¥ê libmvec ¤Ê¤É¤¬¤¢¤ê¤Þ¤¹¡£

¥Ç¡¼¥¿·¿¤Ë¤Ä¤¤¤Æ

ÆÃ¤Ë»Ø¼¨¤¬¤Ê¤¤¸Â¤ê¡¢ËܾϤ˵­ºÜ¤¹¤ë´Ø¿ô¥ë¡¼¥Á¥ó¤Ï¡¢ÁȤ߹þ¤ß¥ë¡¼¥Á¥ó¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

¤·¤¿¤¬¤Ã¤Æ¡¢´Ø¿ô¤«¤éÊÖ¤µ¤ì¤ë¥Ç¡¼¥¿·¿¤¬¡¢´Ø¿ô̾¤À¤±¤ò»ØÄꤷ¤¿¾ì¹ç¤Ë²¾Äꤵ¤ì¤ë¥Ç¡¼¥¿·¿¤È¿©¤¤°ã¤¦²ÄǽÀ­¤¬¤¢¤ë¾ì¹ç¤Ï¡¢¥æ¡¼¥¶¡¼¤¬ÌÀ¼¨Åª¤Ë¥Ç¡¼¥¿·¿¤òÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤¿¤È¤¨¤Ð¡¢getpid() ¤Ç INTEGER*4 ¤òÌ᤹¾ì¹ç¤Ï¡¢INTEGER*4 getpid ¤ÈÀë¸À¤·¤Ê¤¤¤È¡¢·ë²Ì¤ÎÀµ¤·¤¤½èÍý¤¬Êݾڤµ¤ì¤Þ¤»¤ó (¥Ç¡¼¥¿·¿¤òÌÀ¼¨Åª¤Ë»ØÄꤷ¤Ê¤¤¤È¡¢´Ø¿ô̾¤¬ g ¤Ç³«»Ï¤¹¤ë¤¿¤á¡¢REAL (¼Â¿ô) ·¿¤Î·ë²Ì¤¬²¾Äꤵ¤ì¤ë)¡£¤Ê¤ª¡¢¤³¤¦¤¤¤Ã¤¿¥ë¡¼¥Á¥ó¤Ë¤Ä¤¤¤Æ¤Ï¡¢¤½¤Îµ¡Ç½Í×Ìó¤ÇÌÀ¼¨Åª¤Ê·¿Àë¸Àʸ¤¬³Ð¤¨½ñ¤­¤ÎÌÜŪ¤Çµ­ºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

°ú¿ô¤ª¤è¤ÓÌá¤êÃͤΥǡ¼¥¿»ØÄê¤Ï¡¢IMPLICIT ʸ¤ª¤è¤Ó -r8¡¢-i2¡¢-dbl¡¢-xtypemap ¤È¤¤¤Ã¤¿³Æ¥³¥ó¥Ñ¥¤¥é¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¤âÊѹ¹¤µ¤ì¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤Î¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹ºÝ¤Ë¡¢´üÂÔ¤¹¤ë¥Ç¡¼¥¿·¿¤È¼ÂºÝ¤Î¥Ç¡¼¥¿·¿¤¬°ìÃפ·¤Æ¤¤¤Ê¤¤¤È¡¢¥×¥í¥°¥é¥à¤Ïͽ´ü¤·¤Ê¤¤Æ°¤­¤ò¤·¤Þ¤¹¡£ ¥³¥ó¥Ñ¥¤¥é¥ª¥×¥·¥ç¥ó -r8¡¢-dbl ¤ò»ØÄꤹ¤ë¤È¡¢INTEGER ´Ø¿ô¤Î¥Ç¡¼¥¿·¿¤Ï INTEGER*8 ¤Ë¡¢REAL ´Ø¿ô¤Ï REAL*8 ¤Ë¡¢DOUBLE ´Ø¿ô¤Ï DOUBLE*16 ¤Ë¤½¤ì¤¾¤ìÊѹ¹¤µ¤ì¤Þ¤¹¡£¤³¤¦¤¤¤Ã¤¿ÌäÂê¤ò²óÈò¤¹¤ë¤Ë¤Ï¡¢¥é¥¤¥Ö¥é¥ê¸Æ¤Ó½Ð¤·¤Ç»ØÄꤹ¤ë´Ø¿ô̾¤ÈÊÑ¿ô¤Ë¤Ä¤¤¤Æ¡¢´üÂÔ¤¹¤ë¤½¤ì¤é¤Î¥µ¥¤¥º¤òÌÀ¼¨Åª¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¼¡¤ÎÎã¤ò»²¹Í¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

	integer*4 seed, getuid
	real*4 ran 
	...
	seed = 70198
	val = getuid() + ran(seed)
	...

¾åµ­¤ÎÎã¤Î¤è¤¦¤Ë¥µ¥¤¥º¤òÌÀ¼¨Åª¤Ë»ØÄꤷ¤Æ¤ª¤¯¤È¡¢¥³¥ó¥Ñ¥¤¥é¥ª¥×¥·¥ç¥ó¤È¤·¤Æ -r8 ¤È -dbl ¤ò»ØÄꤷ¤Æ¤â¡¢¥é¥¤¥Ö¥é¥ê¸Æ¤Ó½Ð¤·¤ÎºÝ¤Ë¥Ç¡¼¥¿·¿¤ÎÊѹ¹¤¬¹Ô¤ï¤ì¤Þ¤»¤ó¡£ÌÀ¼¨Åª¤Ê»ØÄ꤬¹Ô¤ï¤ì¤Ê¤¤¾ì¹ç¤Ï¡¢¤³¤ì¤é¤Î¥³¥ó¥Ñ¥¤¥é¥ª¥×¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¡¢Í½´ü¤·¤Ê¤¤·ë²Ì¤ò¾·¤¯²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥ª¥×¥·¥ç¥ó¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ØFortran ¥æ¡¼¥¶¡¼¥º¥¬¥¤¥É¡Ù¤ª¤è¤Ó f77(1) ¤È f95(1) ¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

µì¥ª¥×¥·¥ç¥ó¤Î -i2¡¢-r8¡¢-dbl ¤ÎÂå¤ï¤ê¤Ë¡¢¤è¤ê½ÀÆð¤Ê -xtypemap ¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£

Fortran ¥³¥ó¥Ñ¥¤¥é¤Î¹­°è¥×¥í¥°¥é¥à¥Á¥§¥Ã¥¯¥ª¥×¥·¥ç¥ó -Xlist ¤ò»ÈÍѤ¹¤ë¤È¡¢¥é¥¤¥Ö¥é¥ê¥³¡¼¥ëÁ´ÂΤΥǡ¼¥¿·¿¤Î¥ß¥¹¥Þ¥Ã¥Á¤Ë´ØÏ¢¤·¤¿Â¿¿ô¤ÎÌäÂê¤òÇİ®¤Ç¤­¤Þ¤¹¡£f77 ¤ª¤è¤Ó f95 ¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤ë¹­°è¥×¥í¥°¥é¥à¥Á¥§¥Ã¥¯¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ØFortran ¥æ¡¼¥¶¡¼¥º¥¬¥¤¥É¡Ù¡¢¡ØFortran ¥×¥í¥°¥é¥ß¥ó¥°¥¬¥¤¥É¡Ù¡¢¤ª¤è¤Ó¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Î f77(1) ¤È f95(1) ¤ÇÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡£

64 ¥Ó¥Ã¥È´Ä¶­

¥×¥í¥°¥é¥à¤ò 64 ¥Ó¥Ã¥È¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°´Ä¶­¤Çưºî¤¹¤ë¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È
(¤Ä¤Þ¤ê¡¢-xarch=v9 ¤Þ¤¿¤Ï v9a ¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤·¡¢64 ¥Ó¥Ã¥È Solaris 7 ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°´Ä¶­¤ò¼Â¹Ô¤¹¤ë SPARC ¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¾å¤Ç¼Â¹Ô²Äǽ¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤³¤È)¡¢ÆÃÄê¤Î´Ø¿ô¤ÎÌá¤êÃͤ¬Êѹ¹¤µ¤ì¤Þ¤¹¡£¤³¤ÎÆÃÄê¤Î´Ø¿ô¤Ï¡¢Ä̾malloc(3F) (74¥Ú¡¼¥¸»²¾È) ¤Ê¤É¤Îɸ½à¥·¥¹¥Æ¥à¥ì¥Ù¥ë¤Î¥ë¡¼¥Á¥ó¤È¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤È¤Ê¤ê¡¢¤½¤Î´Ä¶­¤Ë±þ¤¸¤Æ 32 ¥Ó¥Ã¥ÈÃͤޤ¿¤Ï 64 ¥Ó¥Ã¥ÈÃͤò¤È¤Ã¤¿¤ê¡¢Ìᤷ¤¿¤ê¤Ç¤­¤Þ¤¹¡£32 ¥Ó¥Ã¥È¤È 64 ¥Ó¥Ã¥È´Ä¶­´Ö¤Ç¥³¡¼¥É¤Ë¸ß´¹À­¤ò»ý¤¿¤»¤ë¤¿¤á¤Ë¡¢¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤Î 64 ¥Ó¥Ã¥È¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢É¬¤º 64 ¥Ó¥Ã¥ÈÃͤò¤È¤ë¤Þ¤¿¤ÏÌ᤹ (¤¢¤ë¤¤¤Ï¤³¤ÎξÊý¤ò¹Ô¤¦) ¤è¤¦¤Ëµ¬Äꤵ¤ì¤Æ¤¤¤Þ¤¹¡£¼¡¤Îɽ¤Ë¡¢64 ¥Ó¥Ã¥È´Ä¶­¤Ç»ÈÍѤ¹¤ë¤¿¤á¤ËÄ󶡤µ¤ì¤¿¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤òɽ¼¨¤·¤Þ¤¹¡£

ɽ 1   64 ¥Ó¥Ã¥È´Ä¶­¸þ¤±¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó
¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó
malloc64 ¥á¥â¥ê¡¼¤ò³ä¤êÅö¤Æ¡¢¥Ý¥¤¥ó¥¿¤òÌ᤹ 74 ¥Ú¡¼¥¸
fseeko64 Â絬ÌÏ¥Õ¥¡¥¤¥ë¤ÎºÆ°ÌÃÖÉÕ¤± 34 ¥Ú¡¼¥¸
ftello64 Â絬ÌÏ¥Õ¥¡¥¤¥ë¤Î°ÌÃÖÉÕ¤± 34 ¥Ú¡¼¥¸
stat64, ¥Õ¥¡¥¤¥ë¤Î¾õÂÖ¤ò·èÄꤹ¤ë 95 ¥Ú¡¼¥¸
fstat64,

lstat64

time64, ¥·¥¹¥Æ¥à»þ´Ö¤ò¼èÆÀ¤·¡¢Ê¸»ú¤ËÊÑ´¹¤¹¤ë¤« 97 ¥Ú¡¼¥¸
ctime64, ·î¡¢Æü¤Ê¤É¤Ëʬ²ò¤¹¤ë
gmtine64,

ltime64

qsort64 ÇÛÎó¤ÎÍ×ÁǤò¥½¡¼¥È¤¹¤ë 81 ¥Ú¡¼¥¸


Fortran ¿ô³Ø´Ø¿ô

¼¡¤Î´Ø¿ô¤È¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢Fortran ¿ô³Ø¥é¥¤¥Ö¥é¥ê¤Î°ìÉô¤Ç¤¹¡£¤³¤ì¤é¤Î´Ø¿ô¤È¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢f77 ¤ä f95 ¤Ç¥³¥ó¥Ñ¥¤¥ë¤·¤¿¤¹¤Ù¤Æ¤Î¥×¥í¥°¥é¥à¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥ë¡¼¥Á¥ó¤Ë¤Ï¡¢¤½¤Î°ú¿ô¤ÈƱ¤¸¥Ç¡¼¥¿·¿ (ñÀºÅÙ¡¢ÇÜÀºÅÙ¡¢¤Þ¤¿¤Ï 4 ÇÜÀºÅÙ)¤òÌ᤹ÁȤ߹þ¤ß´Ø¿ô¤È¡¢°ú¿ô¤È¤·¤ÆÆÃÄê¤Î¥Ç¡¼¥¿·¿¤ò¤È¤ê¡¢¤½¤ì¤ÈƱ¤¸¥Ç¡¼¥¿·¿¤òÌ᤹ÈóÁȤ߹þ¤ß´Ø¿ô¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ÎÈóÁȤ߹þ¤ß´Ø¿ô¤Ï¡¢¤³¤ì¤ò»²¾È¤¹¤ë¥ë¡¼¥Á¥óÆâ¤ÇÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¤³¤¦¤·¤¿¥ë¡¼¥Á¥ó¤ÎÂçȾ¤Ï¡¢C ¸À¸ì¥é¥¤¥Ö¥é¥ê¤Î¥ë¡¼¥Á¥ó¤ËÂФ¹¤ë Fortran ¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ç¤¢¤ë¡Ö¥é¥Ã¥Ñ¡¼¡×¤Ç¤¢¤ê¡¢¤·¤¿¤¬¤Ã¤Æ¡¢É¸½à¤Î Fortran ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤³¤ÎÃæ¤Ë¤Ï¡¢IEEE ¿ä¾©¤Î¥µ¥Ý¡¼¥È´Ø¿ô¤äÆÃ¼ì¤ÊÍð¿ôȯÀ¸´Ø¿ô¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤é¤Î¥é¥¤¥Ö¥é¥ê¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ø¿ôÃÍ·×»»¥¬¥¤¥É¡Ù¤ä¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸ libm_single(3F)¡¢libm_double(3F)¡¢libm_quadruple(3F) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¿ô³Ø´Ø¿ô

°Ê²¼¤Ë¡¢¿ô³Ø´Ø¿ô¤ò¥ê¥¹¥È¤·¤Þ¤¹¡£¤³¤ì¤é¤Ï¡¢·¿Àë¸ÀʸÆâ¤ËÆþ¤ì¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£°Ê²¼¤Î´Ø¿ô¤Ï¡¢°ú¿ô¤È¤·¤ÆÃ±ÀºÅÙ¡¢ÇÜÀºÅÙ¡¢¤Þ¤¿¤Ï 4 ÇÜÀºÅ٥ǡ¼¥¿¤ò¤È¤ê¡¢Æ±¤¸¤â¤Î¤òÌᤷ¤Þ¤¹¡£

sqrt(x)
asin(x)
cosd(x)
log(x)
acos(x)
asind(x)
log10(x)
atan(x)
acosd(x)
exp(x)
atan2(x,y)
atand(x)
x**y
sinh(x)
atan2d(x,y)
sin(x)
cosh(x)
aint(x)
cos(x)
tanh(x)
anint(x)
tan(x)
sind(x)
nint(x)


´Ø¿ô sind(x)¡¢cosd(x)¡¢asind(x)¡¢acosd(x)¡¢atand(x)¡¢atan2d(x,y) ¤Ï¡¢Fortran ɸ½à¤Î°ìÉô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

ñÀºÅٴؿô

¤³¤ì¤é¤ÎÉû¥×¥í¥°¥é¥à¤Ï¡¢Ã±ÀºÅ٤οô³Ø´Ø¿ô¤ª¤è¤Ó¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç¤¹¡£

Ä̾°Ê²¼¤Î¿ô³ØÃ±ÀºÅٴؿô¤Ë¥¢¥¯¥»¥¹¤¹¤ë´Ø¿ô¤Ï¡¢Fortran µ¬³Ê¤ÎÁí¾ÎÁȤ߹þ¤ß´Ø¿ô¤È¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£¥Ç¡¼¥¿·¿¤ÏÄ̾ï¤Î·¿·èÄ구§¤Ë¤è¤Ã¤Æ·èÄꤵ¤ì¤Þ¤¹¡£

¥Ç¥Õ¥©¥ë¥È¤Î·¿·èÄê¤òÊÝ»ý¤·¤Æ¤¤¤ë¸Â¤ê¡¢REAL ʸ¤Ç¤³¤ì¤é¤Î´Ø¿ô¤Î·¿¤òÌÀ¼¨Åª¤Ë»ØÄꤹ¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó¡£("r" ¤Ç»Ï¤Þ¤ëÊÑ¿ô¤Ï REAL ·¿¡¢"i" ¤Ç»Ï¤Þ¤ëÊÑ¿ô¤Ï INTEGER ·¿¤Ë¤Ê¤ê¤Þ¤¹)

¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢C ¿ô³Ø¥é¥¤¥Ö¥é¥ê¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸ (3M) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£¤¿¤È¤¨¤Ð¡¢r_acos(x) ¤Î¾ì¹ç¤Ï¡¢¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Î acos(3M) ¤ò»²¾È¤·¤Þ¤¹¡£

ɽ 2   ¿ô³ØÃ±ÀºÅٴؿô 
r_acos( x )
r_acosd( x )
r_acosh( x )
r_acosp( x )
r_acospi( x )
REAL
REAL
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
µÕ;¸¹
--
µÕÁжÊ;¸¹
--
--
r_atan( x )
r_atand( x )
r_atanh( x )
r_atanp( x )
r_atanpi( x )
REAL
REAL
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
µÕÀµÀÜ 
--
µÕÁжÊÀµÀÜ
--
--
r_asin( x )
r_asind( x )
r_asinh( x )
r_asinp( x )
r_asinpi( x )
REAL
REAL
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
µÕÀµ¸¹ 
--
µÕÁжÊÀµ¸¹
--
--
r_atan2( y, x )
r_atan2d( y, x )
r_atan2pi( y, x )
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
µÕÀµÀÜ
--
--
r_cbrt( x )
r_ceil( x )
r_copysign( x, y )
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
ΩÊýº¬
¾®¿ôÅÀ°Ê²¼ÀÚ¤ê¾å¤²
--
r_cos( x )
r_cosd( x )
r_cosh( x )
r_cosp( x )
r_cospi( x )
REAL
REAL
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
;¸¹
--
ÁжÊ;¸¹
--
--
r_erf( x ) 
r_erfc( x )
REAL
REAL
´Ø¿ô
´Ø¿ô
¸íº¹´Ø¿ô
--
r_expm1( x ) 
r_floor( x ) 
r_hypot( x, y )
r_infinity( )
REAL
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
(e**x)-1
¾®¿ôÅÀ°Ê²¼ÀÚ¤ê¼Î¤Æ
¼ÐÊÕ
--
r_j0( x ) 
r_j1( x )
r_jn( x )
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
¥Ù¥Ã¥»¥ë´Ø¿ô
--
--
ir_finite( x )
ir_fp_class( x )
ir_ilogb( x ) 
ir_irint( x ) 
ir_isinf( x ) 
ir_isnan( x ) 
ir_isnormal( x ) 
ir_issubnormal( x ) 
ir_iszero( x )
ir_signbit( x  ) 
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
r_addran()
r_addrans( x, p, l, u )
r_lcran()
r_lcrans( x, p, l, u )
r_shufrans(x, p, l, u)
REAL
n/a
REAL
n/a
n/a
´Ø¿ô
¥µ¥Ö¥ë¡¼¥Á¥ó
´Ø¿ô
¥µ¥Ö¥ë¡¼¥Á¥ó
¥µ¥Ö¥ë¡¼¥Á¥ó
Íð¿ôȯÀ¸´Ø¿ô
--
--
--
--
r_lgamma( x ) 
r_logb( x ) 
r_log1p( x ) 
r_log2( x ) 
REAL
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
¥¬¥ó¥Þ´Ø¿ô¤ÎÂпô
--
--
--
r_max_normal() 
r_max_subnormal() 
r_min_normal() 
r_min_subnormal() 
r_nextafter( x, y ) 
r_quiet_nan( n ) 
r_remainder( x, y ) 
r_rint( x ) 
r_scalb( x, y ) 
r_scalbn( x, n ) 
r_signaling_nan( n ) 
r_significand( x )
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
r_sin( x )
r_sind( x )
r_sinh( x )
r_sinp( x )
r_sinpi( x )
REAL
REAL
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
Àµ¸¹
--
ÁжÊÀµ¸¹
--
--
r_sincos( x, s, c )
r_sincosd( x, s, c ) 
r_sincosp( x, s, c )
r_sincospi( x, s, c )
n/a
n/a
n/a
n/a
¥µ¥Ö¥ë¡¼¥Á¥ó
¥µ¥Ö¥ë¡¼¥Á¥ó
¥µ¥Ö¥ë¡¼¥Á¥ó
¥µ¥Ö¥ë¡¼¥Á¥ó
Àµ¸¹¤È;¸¹
--
--
--
r_tan( x )
r_tand( x )
r_tanh( x )
r_tanp( x )
r_tanpi( x )
REAL
REAL
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
˵ˆ
--
ÁжÊÀµÀÜ
--
--
r_y0( x ) 
r_y1( x ) 
r_yn( n, x ) 
REAL
REAL
REAL
´Ø¿ô
´Ø¿ô
´Ø¿ô
¥Ù¥Ã¥»¥ë´Ø¿ô
--
--


»²¾È: intro(3M)¡¢¡Ø¿ôÃÍ·×»»¥¬¥¤¥É¡Ù

libm_double : ÇÜÀºÅٴؿô

¼¡¤ÎÉû¥×¥í¥°¥é¥à¤Ï¡¢ÇÜÀºÅ٤οô³Ø´Ø¿ô¤ª¤è¤Ó¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç¤¹¡£

Ä̾¤³¤ì¤é¤Î´Ø¿ô¤Ï Fortran µ¬³Ê¤ÎÁí¾ÎŪ¤ÊÁȤ߹þ¤ß´Ø¿ô¤È¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£¥Ç¡¼¥¿·¿¤Ï¡¢Ä̾ï¤Î¥Ç¡¼¥¿·¿·èÄ구§¤Ë¤è¤Ã¤Æ·èÄꤵ¤ì¤Þ¤¹¡£

¤³¤ì¤é¤Î DOUBLE PRECISION ´Ø¿ô¤Ï DOUBLE PRECISION ʸ¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢C ¥é¥¤¥Ö¥é¥ê¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
d_acos(x) ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ï acos(3M) ¤Ç¤¹¡£

ɽ 3   ¿ô³ØÇÜÀºÅٴؿô 
d_acos( x )
d_acosd( x )
d_acosh( x )
d_acosp( x )
d_acospi( x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
µÕ;¸¹
--
µÕÁжÊ;¸¹
--
--
d_atan( x )
d_atand( x )
d_atanh( x )
d_atanp( x ) 
d_atanpi( x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
µÕÀµÀÜ
--
µÕÁжÊÀµÀÜ
--
--
d_asin( x )
d_asind( x )
d_asinh( x ) 
d_asinp( x )
d_asinpi( x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
µÕÀµ¸¹
--
µÕÁжÊÀµ¸¹
--
--
d_atan2( y, x )
d_atan2d( y, x )
d_atan2pi( y, x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
µÕÀµÀÜ
--
--
d_cbrt( x ) 
d_ceil( x ) 
d_copysign( x, x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
ΩÊýº¬
¾®¿ôÅÀ°Ê²¼ÀÚ¤ê¾å¤²
--
d_cos( x )
d_cosd( x )
d_cosh( x )
d_cosp( x )
d_cospi( x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
;¸¹
--
ÁжÊ;¸¹
--
--
d_erf( x ) 
d_erfc( x )
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
¸íº¹´Ø¿ô
--
d_expm1( x ) 
d_floor( x ) 
d_hypot( x, y )
d_infinity( )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
(e**x)-1
¾®¿ôÅÀ°Ê²¼ÀÚ¤ê¼Î¤Æ 
¼ÐÊÕ
--
d_j0( x ) 
d_j1( x )
d_jn( x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
¥Ù¥Ã¥»¥ë´Ø¿ô
--
--
id_finite( x )
id_fp_class( x )
id_ilogb( x ) 
id_irint( x ) 
id_isinf( x ) 
id_isnan( x ) 
id_isnormal( x ) 
id_issubnormal( x ) 
id_iszero( x )
id_signbit( x ) 
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
d_addran()
d_addrans( x, p, l, u 
)
d_lcran()
d_lcrans( x, p, l, u )
d_shufrans(x, p, l, u)
DOUBLE PRECISION 
n/a
DOUBLE PRECISION
n/a
n/a
´Ø¿ô
¥µ¥Ö¥ë¡¼¥Á¥ó
´Ø¿ô
¥µ¥Ö¥ë¡¼¥Á¥ó
¥µ¥Ö¥ë¡¼¥Á¥ó
Íð¿ô
--
--
--
--
d_lgamma( x ) 
d_logb( x ) 
d_log1p( x ) 
d_log2( x ) 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
¥¬¥ó¥Þ´Ø¿ô¤ÎÂпô
--
--
--
d_max_normal() 
d_max_subnormal() 
d_min_normal() 
d_min_subnormal() 
d_nextafter( x, y ) 
d_quiet_nan( n ) 
d_remainder( x, y ) 
d_rint( x ) 
d_scalb( x, y ) 
d_scalbn( x, n ) 
d_signaling_nan( n ) 
d_significand( x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
d_sin( x )
d_sind( x )
d_sinh( x )
d_sinp( x )
d_sinpi( x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
Àµ¸¹
--
ÁжÊÀµ¸¹
--
--
d_sincos( x, s, c )
d_sincosd( x, s, c ) 
d_sincosp( x, s, c )
d_sincospi( x, s, c )
n/a
n/a
n/a
n/a
¥µ¥Ö¥ë¡¼¥Á¥ó
¥µ¥Ö¥ë¡¼¥Á¥ó
¥µ¥Ö¥ë¡¼¥Á¥ó
¥µ¥Ö¥ë¡¼¥Á¥ó
Àµ¸¹¤È;¸¹
--
--
--
d_tan( x )
d_tand( x )
d_tanh( x )
d_tanp( x )
d_tanpi( x )
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
˵ˆ
--
ÁжÊÀµÀÜ
--
--
d_y0( x )
d_y1( x )
d_yn( n,x ) 
DOUBLE PRECISION 
DOUBLE PRECISION 
DOUBLE PRECISION 
´Ø¿ô
´Ø¿ô
´Ø¿ô
¥Ù¥Ã¥»¥ë´Ø¿ô
--
--


»²¾È : intro(3M)¡¢¡Ø¿ôÃÍ·×»»¥¬¥¤¥É¡Ù

4 ÇÜÀºÅٴؿô

¤³¤ì¤é¤ÎÉû¥×¥í¥°¥é¥à¤Ï¡¢4 ÇÜÀºÅÙ (REAL*16) ¤Î¿ô³Ø´Ø¿ô¤ª¤è¤Ó¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç¤¹ (SPARC ¤Î¤ß)¡£

Ä̾¤³¤ì¤é¤Î´Ø¿ô¤Ï Fortran µ¬³Ê¤ÎÁí¾ÎÁȤ߹þ¤ß´Ø¿ô¤È¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó¡£¥Ç¡¼¥¿·¿¤ÏÄ̾ï¤Î·¿·èÄ구§¤Ë¤è¤Ã¤Æ·èÄꤵ¤ì¤Þ¤¹¡£

4 ÇÜÀºÅٴؿô¤Ï REAL*16 ʸ¤Ë»ØÄꤷ¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¡¡

ɽ 4   ¿ô³ØÇÜÀºÅٴؿô 
q_copysign( x, y )
q_fabs( x ) 
q_fmod( x ) 
q_infinity( )
REAL*16
REAL*16
REAL*16
REAL*16
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
iq_finite( x )
iq_fp_class( x )
iq_ilogb( x ) 
iq_isinf( x ) 
iq_isnan( x ) 
iq_isnormal( x ) 
iq_issubnormal( x ) 
iq_iszero( x )
iq_signbit( x  ) 
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
INTEGER
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
q_max_normal() 
q_max_subnormal() 
q_min_normal() 
q_min_subnormal() 
q_nextafter( x, y ) 
q_quiet_nan( n ) 
q_remainder( x, y ) 
q_scalbn( x, n ) 
q_signaling_nan( n ) 
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
REAL*16
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô
´Ø¿ô


¤½¤Î¾¤Î 4 ÇÜÀºÅÙ libm ´Ø¿ô¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ë¾ì¹ç¡¢¤½¤Î¸Æ¤Ó½Ð¤·¤ÎÁ°¤Ë
$PRAGMA C <´Ø¿ô̾> ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ØFortran ¥×¥í¥°¥é¥ß¥ó¥°¥¬¥¤¥É¡Ù¤Î Âè 11 ¾Ï¡ÖC ¤È Fortran ¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

abort : ½ªÎ»¤È¥³¥¢¥Õ¥¡¥¤¥ë¤Ø¤Î½ñ¤­¹þ¤ß

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call abort


abort ¤Ï¡¢Æþ½ÐÎϥХåե¡¤ò¥Õ¥é¥Ã¥·¥å (¥Ð¥Ã¥Õ¥¡Æâ¤Î¥Ç¡¼¥¿¤ò¼ÂºÝ¤Ë¥Õ¥¡¥¤¥ë¤Ë½ñ¤­¹þ¤à¤³¤È) ¤·¡¢¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë¥³¥¢¥Õ¥¡¥¤¥ë¤Î¥á¥â¥ê¡¼¥À¥ó¥×¤òºîÀ®¤·¤Æ¡¢½èÍý¤ò°Û¾ï½ªÎ»¤µ¤»¤Þ¤¹¡£¥³¥¢¥À¥ó¥×¤òÀ©¸Â¡¢¤Þ¤¿¤Ï¹Ô¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢limit(1) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

access : ¥Õ¥¡¥¤¥ë¤Î¥¢¥¯¥»¥¹¸¢¤Þ¤¿¤Ï̵ͭ¤Î¸¡ºº

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 access status = access ( name, mode )
name CHARACTER ÆþÎÏ ¥Õ¥¡¥¤¥ë̾
mode CHARACTER ÆþÎÏ ¥¢¥¯¥»¥¹¸¢
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=0: Àµ¾ï
status
>0: ¥¨¥é¡¼¥³¡¼¥É


access ¤Ï¡¢name ¤Ç»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤Ë mode ¤Ç»ØÄꤷ¤¿¥¢¥¯¥»¥¹¸¢¤Ç¥¢¥¯¥»¥¹¤Ç¤­¤ë¤«¤É¤¦¤«¤ò·èÄꤷ¤Þ¤¹¡£mode ¤Ç»ØÄꤷ¤¿¥¢¥¯¥»¥¹¤¬Àµ¾ï½ªÎ»¤·¤¿¾ì¹ç¤Ï¡¢¥¼¥í¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£

¥¨¥é¡¼¥³¡¼¥É¤ò²ò¼á¤¹¤ë¾ì¹ç¤Ï¡¢gerror(3F) ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

mode ¤Ë¤Ï¡¢r¡¢w¡¢x ¤òñÆÈ¤Ç»ØÄꤹ¤ë¤³¤È¤â¡¢Ç¤°Õ¤Î½ç½ø¤Ç 2 ¤Ä°Ê¾åÁȤ߹ç¤ï¤»¤Æ»ØÄꤹ¤ë¤³¤È¤â¡¢¤¢¤ë¤¤¤Ï¶õÇò¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ r¡¢w¡¢x ¤Î°ÕÌ£¤Ï¤½¤ì¤¾¤ì°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£

`r'

ÆÉ¤ß¼è¤ê¥¢¥¯¥»¥¹¸¢¤ò¥Æ¥¹¥È¤¹¤ë

`w'

½ñ¤­¹þ¤ß¥¢¥¯¥»¥¹¸¢¤ò¥Æ¥¹¥È¤¹¤ë

`x'

¼Â¹Ô¥¢¥¯¥»¥¹¸¢¤ò¥Æ¥¹¥È¤¹¤ë

`¶õÇò'

¥Õ¥¡¥¤¥ë¤Î̵ͭ¤ò¥Æ¥¹¥È¤¹¤ë


Îã 1¡§ÆÉ¤ß¼è¤ê¤ª¤è¤Ó½ñ¤­¹þ¤ß¤Ë´Ø¤¹¤ë¥¢¥¯¥»¥¹¸¢¤Î¥Æ¥¹¥È

	INTEGER*4  access, status
	status = access ( 'taccess.data', 'rw' )
	if ( status .eq. 0 ) write(*,*) "ok"
	if ( status .ne. 0 ) write(*,*) 'ÆÉ¤ß/½ñ¤­ÉÔ²Ä', status

Îã 2¡§¥Õ¥¡¥¤¥ë¤Î̵ͭ¤Î¥Æ¥¹¥È

	INTEGER*4  access, status
	status = access ( 'taccess.data', ' ' )	! ¶õÇò¥â¡¼¥É
	if ( status .eq. 0 ) write(*,*) "¥Õ¥¡¥¤¥ë¸ºß"
	if ( status .ne. 0 ) write(*,*) '¥Õ¥¡¥¤¥ë¤Ï¤Ê¤¤', status

alarm : »ØÄê»þ´Ö¸å¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤Î¸Æ¤Ó½Ð¤·

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 alarm n = alarm ( time, sbrtn )
time INTEGER*4 ÆþÎÏ ÂÔ¤Á»þ´Ö¤ÎÉÿô (0 ¤Î¾ì¹ç¤Ï¸Æ¤Ó½Ð¤µ¤Ê¤¤)
sbrtn ¥ë¡¼¥Á¥ó̾ ÆþÎÏ ¼Â¹Ô¤¹¤ëÉû¥×¥í¥°¥é¥à¤Ï EXTERNAL ʸ¤ÇÀë¸À¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ Á°²ó¸Æ¤Ó½Ð¤·¤¿ alarm ¤Î»Ä¤ê»þ´Ö

alarm ¤Î»ÈÍÑÎã: 9 ÉÃÂÔµ¡¤·¤Æ¤«¤é sbrtn ¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

	integer*4 alarm, time / 1 /
	common / alarmcom / i
	external sbrtn
	i = 9
	write(*,*) i
	nseconds =  alarm ( time, sbrtn )
	do n = 1,100000	     ! alarm ¤¬ sbrtn ¤ò¥¢¥¯¥Æ¥£¥Ö¤Ë¤¹¤ë¤Þ¤ÇÂÔµ¡
		r = n	     ! (»þ´Ö¤Ë;͵¤Î¤¢¤ë·×»»)
		x=sqrt(r)
	end do
	write(*,*) i
	end
	subroutine sbrtn
	common / alarmcom / i
	i = 3			! ¤³¤Î¥ë¡¼¥Á¥ó¤Ç¤Ï I/O ¤ò¹Ô¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤
	return
	end

»²¾È : alarm(3C)¡¢sleep(3F)¡¢signal(3F) °Ê²¼¤ÎÀ©¸Â»ö¹à¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

bit : ¥Ó¥Ã¥È´Ø¿ô

ÄêµÁ

and(word1, word2) °ú¿ô¤Î¥Ó¥Ã¥Èñ°Ì¤ÎÏÀÍýÀѤò·×»»¤¹¤ë
or(word1, word2) °ú¿ô¤Î¥Ó¥Ã¥Èñ°Ì¤ÎÏÀÍýϤò·×»»¤¹¤ë
xor(word1, word2) °ú¿ô¤Î¥Ó¥Ã¥Èñ°Ì¤ÎÇÓ¾ŪÏÀÍýϤò·×»»¤¹¤ë
not(word) °ú¿ô¤Î¥Ó¥Ã¥Èñ°Ì¤ÎÊä¿ô¤òÌ᤹
lshift(word, nbits) ½Û´Ä·å¾å¤²¤Ê¤·¤Çº¸¤ØÏÀÍý¥·¥Õ¥È¤¹¤ë
rshift(word, nbits) É乿³ÈÄ¥¤ò¹Ô¤¤±¦¤Ø»»½Ñ¥·¥Õ¥È¤¹¤ë
call bis(bitnum, word) word ¤ÎÂè bitnum ¥Ó¥Ã¥È¤ò 1 ¤ËÀßÄꤹ¤ë
call bic(bitnum, word) word ¤ÎÂè bitnum ¥Ó¥Ã¥È¤ò 0 ¤Ë¥¯¥ê¥¢¡¼¤¹¤ë
bit(bitnum, word) word ¤ÎÂè bitnum ¥Ó¥Ã¥È¤ò¸¡ºº¤·¡¢¥Ó¥Ã¥È¤¬ 1 ¤Ç¤¢¤ì¤Ð .true. ¤òÊÖ¤·¥Ó¥Ã¥È¤¬ 0 ¤Ç¤¢¤ì¤Ð
.false. ¤òÌ᤹
call setbit(bitnum, word, state) state ¤¬¥¼¥í°Ê³°¤Ç¤¢¤ì¤Ð word ¤ÎÂè bitnum ¥Ó¥Ã¥È¤ò 1 ¤ËÀßÄꤷ¡¢state ¤¬¥¼¥í¤Ç¤¢¤ì¤Ð 0 ¤Ë¥¯¥ê¥¢¡¼¤¹¤ë


¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£

MIL-STD-1753 ¤ÎÂåÂØ³°Éô¥Ð¡¼¥¸¥ç¥ó¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£

iand( m, n ) °ú¿ô¤Î¥Ó¥Ã¥Èñ°Ì¤ÎÏÀÍýÀѤò·×»»¤¹¤ë
ior( m, n ) °ú¿ô¤Î¥Ó¥Ã¥Èñ°Ì¤ÎÏÀÍýϤò·×»»¤¹¤ë
ieor( m, n ) °ú¿ô¤Î¥Ó¥Ã¥Èñ°Ì¤ÎÇÓ¾ŪÏÀÍýϤò·×»»¤¹¤ë
ishft( m, k ) ½Û´Ä·å¾å¤²¤Ê¤·¤ÇÏÀÍý¥·¥Õ¥È¤¹¤ë (k>0 ¤Î¤È¤­¤Ïº¸¡¢k<0 ¤Î¤È¤­¤Ï
±¦¤Ø)
ishftc( m, k, ic ) ½Û´Ä¥·¥Õ¥È: m ¤Î¡¢±¦¤«¤é ic ¥Ó¥Ã¥È¤òº¸¤Ø k ¥Ó¥Ã¥È½Û´Ä¥·¥Õ¥È¤¹¤ë
ibits( m, i, len ) ¥Ó¥Ã¥È¤ÎÀÚ¤ê½Ð¤·: i ¥Ó¥Ã¥ÈÌܤ«¤é»Ï¤Þ¤ë len ¥Ó¥Ã¥Èʬ¤ò m ¤«¤é
ÀÚ¤ê½Ð¤¹
ibset( m, i ) ¥Ó¥Ã¥È¤ò¥»¥Ã¥È¤¹¤ë: ¥Ó¥Ã¥È i ¤¬ 1 ¤Ç¤¢¤ì¤ÐÌá¤êÃÍ¤Ï m ¤ÈƱ¤¸
¤Ç¤¹
ibclr( m, i ) ¥Ó¥Ã¥È¤ò¥¯¥ê¥¢¡¼¤¹¤ë: ¥Ó¥Ã¥È i ¤¬ 0 ¤Ç¤¢¤ì¤ÐÌá¤êÃÍ¤Ï m ¤ÈƱ¤¸¤Ç¤¹
btest( m, i ) ¥Ó¥Ã¥È¤Î¥Æ¥¹¥È: m ¤Î i ÈÖÌܤΥӥåȤò¥Æ¥¹¥È¤¹¤ë¡£¥Ó¥Ã¥È¤¬ 1 ¤Î¤È¤­¤Ï .true. ¤òÊÖ¤·¡¢¥Ó¥Ã¥È¤¬ 0 ¤Î¤È¤­¤Ï .false. ¤òÌ᤹


¡Ömvbits : ¥Ó¥Ã¥È¥Õ¥£¡¼¥ë¥É¤Î°Üư¡×¤È¡ØFORTRAN 77 ¸À¸ì¥ê¥Õ¥¡¥ì¥ó¥¹¡Ù ¤ÎÂè 6 ¾Ï¡ÖÁȤ߹þ¤ß´Ø¿ô¡×¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

and¡¢or¡¢xor¡¢not¡¢rshift¡¢lshift ¤Î»ÈÍÑË¡

ÁȤ߹þ¤ß´Ø¿ô¤Î¾ì¹ç¤Ï¡¢¼¡¤Î¤è¤¦¤Ë»È¤¤¤Þ¤¹¡£

x = and( word1, word2 )
x = or( word1, word2 )
x = xor( word1, word2 )
x = not( word )
x = rshift( word, nbits )
x = lshift( word, nbits )


word¡¢word1¡¢word2¡¢¤ª¤è¤Ó nbits ¤Ï¡¢À°¿ô·¿¤ÎÆþÎϰú¿ô¤Ç¤¹¡£¤³¤ì¤é¤ÏÁȤ߹þ¤ß´Ø¿ô¤Ç¡¢¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤ê¥¤¥ó¥é¥¤¥óŸ³«¤µ¤ì¤Þ¤¹¡£Ìᤵ¤ì¤ë¥Ç¡¼¥¿¤Î·¿¤Ï¡¢Âè 1 °ú¿ô¤Î¥Ç¡¼¥¿·¿¤Ç¤¹¡£

nbits ¤ÎÃͤ¬ÀµÅö¤«¤É¤¦¤«¤Î¸¡ºº¤Ï¹Ô¤ï¤ì¤Þ¤»¤ó¡£

Îã 1 : and¡¢or¡¢xor¡¢not

demo% cat tandornot.f
    print 1, and(7,4), or(7,4), xor(7,4), not(4)
 1  format(4x 'and(7,4)', 5x 'or(7,4)', 4x 'xor(7,4)',
&     6x 'not(4)'/4o12.11)
    end
demo% f77 -silent tandornot.f
demo% a.out
    and(7,4)    or(7,4)    xor(7,4)      not(4)
 00000000004 00000000007 00000000003 37777777773
demo%

Îã 2 : lshift¡¢rshift

    integer*4 lshift, rshift
    print 1, lshift(7,1), rshift(4,1)
 1  format(1x 'lshift(7,1)', 1x 'rshift(4,1)'/2o12.11)
    end
demo% f77 -silent tlrshift.f
demo% a.out
 lshift(7,1) rshift(4,1)
 00000000016 00000000002
demo%

bic¡¢bis¡¢bit¡¢setbit ¤Î»ÈÍÑË¡

call bic( bitnum, word )
call bis( bitnum, word )
call setbit( bitnum, word, state )
LOGICAL bit
x = bit( bitnum, word )

bitnum¡¢state¡¢¤ª¤è¤Ó word ¤Ï¡¢INTEGER*4 ·¿¤ÎÆþÎϰú¿ô¤Ç¤¹¡£bit() ´Ø¿ô¤Ç¤Ï¡¢ÏÀÍýÃͤ¬ÊÖ¤µ¤ì¤Þ¤¹¡£

¥Ó¥Ã¥È¤Ï¡¢¥Ó¥Ã¥È 0 ¤¬ºÇ²¼°Ì¥Ó¥Ã¥È¡¢¥Ó¥Ã¥È 31 ¤¬ºÇ¾å°Ì¥Ó¥Ã¥È¤Ë¤Ê¤ë¤è¤¦¤ËÈֹ椬ÉÕ¤±¤é¤ì¤Þ¤¹¡£

bic¡¢bis ¤ª¤è¤Ó setbit ¤Ï³°Éô¥µ¥Ö¥ë¡¼¥Á¥ó¡¢bit ¤Ï³°Éô´Ø¿ô¤Ç¤¹¡£

Îã 3 : bic¡¢bis¡¢setbit¡¢bit

	integer*4 bitnum/2/, state/0/, word/7/
	logical bit
	print 1, word
 1	format(13x '¥ï¡¼¥É', o12.11)
	call bic( bitnum, word )
	print 2, word
 2	format('bic(2,word)¤Î¸å', o12.11)
	call bis( bitnum, word )
	print 3, word
 3	format('bis(2,word)¤Î¸å', o12.11)
	call setbit( bitnum, word, state )
	print 4, word
 4	format('setbit(2,word,0)¤Î¸å', o12.11)
	print 5, bit(bitnum, word)
 5	format('bit(2,word)', L )
	end
<½ÐÎÏ>
         ¥ï¡¼¥É 00000000007
bic(2,word)¤Î¸å 00000000003
bis(2,word)¤Î¸å 00000000007
setbit(2,word,0)¤Î¸å 00000000003
bit(2,word) F

chdir : ¥Ç¥Õ¥©¥ë¥È¥Ç¥£¥ì¥¯¥È¥ê¤ÎÊѹ¹

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 chdir n = chdir( dirname )
dirname CHARACTER ÆþÎÏ ¥Ç¥£¥ì¥¯¥È¥ê̾
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ n=0: Àµ¾ï¡¢ n>0: ¥¨¥é¡¼¥³¡¼¥É

Îã : chdir ¡Ý ¸½ºß¤Îºî¶È¥Ç¥£¥ì¥¯¥È¥ê¤ò MyDir ¤ËÊѹ¹¤·¤Þ¤¹¡£

	INTEGER*4  chdir, n
	n =  chdir ( 'MyDir' )
	if ( n .ne. 0 ) stop 'chdir: ¥¨¥é¡¼'
	end

»²¾È : chdir(2)¡¢cd(1)¡¢gerror(3F) (¥¨¥é¡¼¥³¡¼¥É¤Î²ò¼á)

¥Ñ¥¹Ì¾¤Ï¡¢ <sys/param.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë MAXPATHLEN ¤è¤êŤ¯¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ÁêÂХѥ¹Ì¾¤Ç¤â¡¢ÀäÂХѥ¹Ì¾¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£

¤³¤Î´Ø¿ô¤ò»ÈÍѤ¹¤ë¤ÈÁõÃ֤ˤè¤ë¾È²ñ¤¬¼ºÇÔ¤¹¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£

¤¤¤¯¤Ä¤«¤Î Fortran ¤Î¥Õ¥¡¥¤¥ëÁàºî¤Ï¡¢¥Õ¥¡¥¤¥ë¤ò̾Á°¤ÇºÆ¥ª¡¼¥×¥ó¤·¤Þ¤¹¡£Æþ½ÐÎÏÆ°ºîÃæ¤Ë chdir ¤ò»ÈÍѤ¹¤ë¤È¡¢¼Â¹Ô»þ¥·¥¹¥Æ¥à¤¬ÁêÂХѥ¹Ì¾¤ÇºîÀ®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë (¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤻ¤º¤Ë open ʸ¤ÇºîÀ®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò´Þ¤à) ¤ò¸«¼º¤Ã¤Æ¤·¤Þ¤¦¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£

chmod : ¥Õ¥¡¥¤¥ë¤Î¥â¡¼¥É¤ÎÊѹ¹

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 chmod n = chmod( name, mode )
name CHARACTER ÆþÎÏ ¥Ñ¥¹Ì¾
mode CHARACTER ÆþÎÏ chmod(1) ¤Ëǧ¼±¤µ¤ì¤ë¥â¡¼¥É
(o-w¡¢444 ¤Ê¤É)
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ n= 0: Àµ¾ï¡¢
n> 0: ¥·¥¹¥Æ¥à¥¨¥é¡¼ÈÖ¹æ

Îã : chmod ¡Ý ½ñ¤­¹þ¤ß¸¢¤ò MyFile ¤ËÄɲä·¤Þ¤¹¡£

	character*18 name, mode
	INTEGER*4 chmod, n
	name = 'MyFile'
	mode = '+w'
	n =  chmod( name, mode )
	if ( n .ne. 0 ) stop 'chmod: ¥¨¥é¡¼' 
	end

»²¾È¡§chmod(1)¡¢gerror(3F) (¥¨¥é¡¼¥³¡¼¥É¤Î²ò¼á)

¥Ñ¥¹Ì¾¤Ï¡¢<sys/param.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë MAXPATHLEN ¤è¤êŤ¯¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

date : ʸ»úÎó¤È¤·¤Æ¸½ºß¤Î¥Ç¡¼¥¿¤ò¼èÆÀ


Ãí - ¤³¤Î¥ë¡¼¥Á¥ó¤Ïǯ¤ò¼¨¤¹¾ì¹ç¤Ë 2 ·å¤ÎÃͤ·¤«ÊÖ¤µ¤Ê¤¤¤Î¤Ç¡¢¡Ö2000 ǯ¤Ë¤Ï̵¸ú¡× ¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥ë¡¼¥Á¥ó¤Î½ÐÎϤò»ÈÍѤ·¤ÆÆüÉմ֤κ¹¤ò·×»»¤¹¤ë¥×¥í¥°¥é¥à¤Ï¡¢1999 ǯ12 ·î 31 Æü°Ê¹ß¤ÏÀµ¤·¤¯µ¡Ç½¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£¤³¤Î date( ) ¥ë¡¼¥Á¥ó¤ò»ÈÍѤ·¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤Ï¡¢¥ë¡¼¥Á¥ó¤Î½é´ü¸Æ¤Ó½Ð¤·»þ¤Ë¼Â¹Ô»þ·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Æ¥æ¡¼¥¶¡¼¤Ë·Ù¹ð¤·¤Þ¤¹¡£¤³¤Î¥ë¡¼¥Á¥ó¤ÎÂå¤ï¤ê¤Ë¸Æ¤Ó¤À¤¹¤³¤È¤Î¤Ç¤­¤ë¥ë¡¼¥Á¥ó¤È¤·¤Æ¡¢data_and_time() ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call date( c )
c CHARACTER*9 ½ÐÎÏ ÊÑ¿ô¡¢ÇÛÎó¡¢ÇÛÎóÍ×ÁÇ¡¢¤¢¤ë¤¤¤ÏÉôʬÎó

Ìᤵ¤ì¤ëʸ»úÎó c ¤Î·Á¼°¤Ï¡¢dd-mmm-yy ¤Ç¤¹¡£¤³¤³¤Ç¡¢dd ¤Ï 2 ·å¤Î¿ôÃͤÇɽ¤·¤¿Æü¡¢mmm ¤Ï 3 ʸ»ú¤Ë¾Êά¤·¤¿±Ñ¸ì¤Î·î̾¡¢yy ¤Ï 2 ·å¤Î¿ôÃͤÇɽ¤·¤¿Ç¯ (2000ǯ¤Ë¤ÏÂбþ¤·¤Æ¤¤¤Þ¤»¤ó) ¤Ç¤¹¡£

Îã : date

demo% cat dat1.f 
* dat1.f ¡Ý ÆüÉÕ¤±¤òʸ»úÎó¤È¤·¤Æ¼èÆÀ
     character c*9 
     call date ( c ) 
     write(*,"(' ËÜÆü¤ÎÆüÉÕ¤±¤Ï¡¢ ', A9 )" ) c 
     end
demo% f77 -silent dat1.f
 "dat.f", line 2 : ·Ù¹ð : ¥µ¥Ö¥ë¡¼¥Á¥ó "date" ¤Ï 2000 ǯ°Ê¹ß¤Ï°ÂÁ´¤Ç¤Ï
¤¢¤ê¤Þ¤»¤ó¡£
       Âå¤ï¤ê¤Ë "date_and_time" ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
demo% a.out 
 À¾Îñ 2000 ǯ°Ê¹ß¤Ï¡¢¥µ¥Ö¥ë¡¼¥Á¥ó idate ¤Î 2 ·å¤Îǯ¤ò»ÈÍѤ·¤Æ»þ´Öº¹¤ò·×»»
¤¹¤ë¤Î¤Ï°ÂÁ´¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
 ÆüÉÕ¤±¤Ï¡¢23-Sep-96 
demo% 

¡Öidate : ¸½ºß¤ÎÆüÉÕ¤òÌ᤹¡×¤È¡¢¡Ödate_and_time : ÆüÉդȻþ¹ï¤Î¼èÆÀ¡×¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

date_and_time : ÆüÉդȻþ¹ï¤Î¼èÆÀ

¤³¤ì¤Ï¡¢Fortran 95 ÁȤ߹þ¤ß¥ë¡¼¥Á¥ó¤Î FORTRAN 77 ¥Ð¡¼¥¸¥ç¥ó¤Ç¡¢2000 ǯ°Ê¹ß¤âÍ­¸ú¤Ç¤¹¡£

DATE_AND_TIME ¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¥ê¥¢¥ë¥¿¥¤¥à¥¯¥í¥Ã¥¯¤ÈÆüÉդΥǡ¼¥¿¤òÊÖ¤·¤Þ¤¹¡£¸½ÃÏ»þ´Ö¤Î¾¤Ë¡¢¸½ÃÏ»þ´Ö¤ÈÀ¤³¦É¸½à»þ (UTC: Universal Coordinated Time)(¥°¥ê¥Ë¥Ã¥¸Ê¿¶Ñ»þ (GMT: Greenwich Mean Time) ¤È¤â¸Æ¤Ö) ¤Î»þº¹¤âÊÖ¤·¤Þ¤¹¡£

date_and_time( ) ¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call date_and_time( date, time, zone, values )
date CHARACTER*8 ½ÐÎÏ ÆüÉÕ¡£½ñ¼°¤Ï CCYYMMDD¡£CCYY ¤Ï 4 ·å¤Îǯ¡¢MM ¤Ï 2 ·å¤Î·î¡¢DD ¤Ï 2 ·å¤ÎÆü¡£Îã : 19980709
time CHARACTER*10 ½ÐÎÏ ¸½ºß¤Î»þ¹ï¡£½ñ¼°¤Ï hhmmss.sss¡£hh ¤Ï»þ¡¢mm ¤Ïʬ¡¢ss.sss ¤ÏÉäȥߥêÉÃ
zone CHARACTER*5 ½ÐÎÏ UTC ¤ò»ÈÍѤ·¤¿¾ì¹ç¤Î»þº¹¡£»þʬ¤Ç¼¨¤¹¡£½ñ¼°¤Ï hhmm
values INTEGER*4 VALUES(8) ½ÐÎÏ °Ê²¼¤ÇÀâÌÀ¤¹¤ë 8 Í×ÁǤÎÀ°¿ôÇÛÎó

INTEGER*4 values ¤ËÊÖ¤µ¤ì¤ë 8 ¤Ä¤ÎÃͤϼ¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

VALUES(1)

4 ·å¤ÎÀ°¿ô¤Îǯ¡£¤¿¤È¤¨¤Ð¡¢1998¡£

VALUES(2)

1¡Á12 ¤ÎÀ°¿ô¤Î·î¡£

VALUES(3)

1¡Á31 ¤ÎÀ°¿ô¤ÎÆü¡£

VALUES(4)

UTC ¤ò»ÈÍѤ·¤¿¾ì¹ç¤Î»þº¹ (ʬ)¡£

VALUES(5)

1¡Á23 ¤ÎÀ°¿ô¤Î»þ¡£

VALUES(6)

1¡Á59 ¤ÎÀ°¿ô¤Îʬ¡£

VALUES(7)

0¡Á60 ¤ÎÀ°¿ô¤ÎÉá£

VALUES(8)

0¡Á999 ¤ÎÈϰϤΥߥêÉá£

date_and_time ¤Î»ÈÍÑÎã :

demo% cat dtm.f
       integer date_time(8)
       character*10 b(3)
       call date_and_time(b(1), b(2), b(3), date_time)
       print *,'date_timearray ÃÍ'
       print *,'ǯ=',date_time(1)
       print *,'month_of_year=',date_time(2)
       print *,'day_of_month=',date_time(3)
       print *,'»þº¹(ʬ)=',date_time(4)
       print *,'»þ=',date_time(5)
       print *,'ʬ=',date_time(6)
       print *,'ÉÃ=',date_time(7)
       print *,'¥ß¥êÉÃ=',date_time(8)
       print *,'DATE=',b(1)
       print *,'TIME=',b(2)
       print *,'ZONE=',b(3)
       end

2000 ǯ 2 ·î 16 Æü¤Ë¥«¥ê¥Õ¥©¥ë¥Ë¥¢¤Ç¼Â¹Ô¤·¤¿¾ì¹ç¤Î½ÐÎϤϼ¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

 date_time ÇÛÎóÃÍ:
 ǯ= 2000
 month_of_year= 2
 day_of_month= 16
 »þº¹¡Êʬ¡Ë= -420
 »þ= 11
 ʬ= 49
 ÉÃ= 29
 ¥ß¥êÉÃ= 236
 DATE=20000216  
 TIME=114929.236
 ZONE=-0700     

dtime¡¢etime : ·Ð²á¼Â¹Ô»þ´Ö

¤³¤ì¤é¤Î 2 ¤Ä¤Î´Ø¿ô¤Ï¡¢·Ð²á¼Â¹Ô»þ´Ö (¤¢¤ë¤¤¤Ï¥¨¥é¡¼»Ø¼¨»Ò¤È¤·¤Æ -1.0) ¤òÊÖ¤·¤Þ¤¹¡£ÊÖ¤µ¤ì¤ë»þ´Ö¤ÏÉÃñ°Ì¤Ç¤¹¡£

Fortran 77 ¤¬»ÈÍѤ¹¤ë dtime ¤È etime ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢¼Â¹Ô»þ¤Î¥·¥¹¥Æ¥à¤Î¹âʬ²òǽ¥¯¥í¥Ã¥¯¤Ë¤è¤Ã¤ÆÀ¸À®¤µ¤ì¤¿»þ¹ï¤òÊÖ¤·¤Þ¤¹¡£¼ÂºÝ¤Îʬ²òǽ¤Ï¥·¥¹¥Æ¥à¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë¤è¤Ã¤Æ°ã¤¤¤Þ¤¹¡£¸½ºß¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¥¯¥í¥Ã¥¯¤Îʬ²òǽ¤Ï¡¢£± ¥Ê¥ÎÉ䫤é 1 ¥Þ¥¤¥¯¥íÉäÎÈÏ°ÏÆâ¤Ç¤¹¡£

Fortran 95 ¤¬»ÈÍѤ¹¤ë dtime ¤È etime ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥·¥¹¥Æ¥à¤ÎÄãʬ²òǽ¥¯¥í¥Ã¥¯¤ò»ÈÍѤ·¤Þ¤¹¡£Ê¬²òǽ¤Ï 100 ʬ¤Î 1 ÉäǤ¹¡£¤¿¤À¤·¡¢¥×¥í¥°¥é¥à¤¬ Sun OSTM ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£ ptime(1)¡¢(/usr/proc/bin/ptime) ¤Î²¼¤Ç¼Â¹Ô¤µ¤ì¤¿¾ì¹ç¤Ï¡¢¹âʬ²òǽ¥¯¥í¥Ã¥¯¤¬»ÈÍѤµ¤ì¤Þ¤¹¡£

dtime : Á°²ó¤Î dtime ¸Æ¤Ó½Ð¤·¤«¤é¤Î·Ð²á»þ´Ö

dtime ¤Î¾ì¹ç¡¢·Ð²á»þ´Ö¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

e = dtime( tarray )
tarray REAL(2) ½ÐÎÏ e= -1.0: ¥¨¥é¡¼: tarray ÃͤÏ̤ÄêµÁ e -1.0: tarray(1) ¤Ë¥æ¡¼¥¶¡¼»þ´Ö (¥¨¥é¡¼¤¬¤Ê¤¤¾ì¹ç) tarray(2) ¤Ë¥·¥¹¥Æ¥à»þ´Ö (¥¨¥é¡¼¤¬¤Ê¤¤¾ì¹ç
Ìá¤êÃÍ REAL ½ÐÎÏ e= -1.0: ¥¨¥é¡¼ e -1.0: tarray(1) ¤È tarray(2) ¤Î¹ç·×»þ´Ö

Îã : dtime()¡¢¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ

	real e, dtime, t(2)
	print *, '·Ð²á:', e, ', ¥æ¡¼¥¶¡¼:', t(1), ', ¥·¥¹¥Æ¥à:', t(2)
	do i = 1, 10000
		k=k+1
	end do
	e = dtime( t )
	print *, '·Ð²á:', e, ', ¥æ¡¼¥¶¡¼:', t(1), ', ¥·¥¹¥Æ¥à:', t(2)
	end
demo% f77 -silent tdtime.f
demo% a.out
·Ð²á:  0., ¥æ¡¼¥¶¡¼:  0., ¥·¥¹¥Æ¥à:  0.
·Ð²á:   0.180000, ¥æ¡¼¥¶¡¼:    6.00000E-02, ¥·¥¹¥Æ¥à:   0.120000
demo% 

etime : ¼Â¹Ô³«»Ï¤«¤é¤Î·Ð²á»þ´Ö

etime ¤Î¾ì¹ç¡¢·Ð²á»þ´Ö¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

Fortran ¤Ï¡¢¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ¤È¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ¤ò°Ê²¼¤Î¤è¤¦¤Ë¶èÊ̤·¤Þ¤¹¡£

libF77_mt ¤È¥ê¥ó¥¯¤·¤¿ÊÂÎó Fortran ¥×¥í¥°¥é¥à¤Ç¤Ï¡¢´Ä¶­ÊÑ¿ô¤¬ PARALLEL ¤Î¾ì¹ç¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

e = etime( tarray )
tarray REAL(2) ½ÐÎÏ e= -1.0: ¥¨¥é¡¼: tarray ¤ÎÃͤÏ̤ÄêµÁ e -1.0: ¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ: tarray(1) ¤Ë¥æ¡¼¥¶¡¼»þ´Ö
tarray(2) ¤Ë¥·¥¹¥Æ¥à»þ´Ö
¥Þ¥ë¥Á¥×¥í¥»¥Ã¥µ: tarray(1) ¤Ë¼Â»þ´Ö
tarray(2) ¤Ë 0.0
Ìá¤êÃÍ REAL ½ÐÎÏ e= -1.0: ¥¨¥é¡¼ e -1.0: tarray(1) ¤È tarray(2) ¤Î¹ç·×»þ´Ö

etime ¤Î½é´ü¸Æ¤Ó½Ð¤·¤ÇÊÖ¤µ¤ì¤ë·ë²Ì¤ÏÉÔÀµ³Î¤Ç¤¹¡£½é´ü¸Æ¤Ó½Ð¤·¤Ç¤Ï¡¢Ã±¤Ë¥·¥¹¥Æ¥à¥¯¥í¥Ã¥¯¤ò²ÔƯ¤µ¤»¤ë¤À¤±¤Ê¤Î¤Ç¡¢etime ¤Î½é´ü¸Æ¤Ó½Ð¤·¤ÇÊÖ¤µ¤ì¤¿ÃͤϻÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

Îã : etime() ¡Ý ¥·¥ó¥°¥ë¥×¥í¥»¥Ã¥µ

	real e, etime, t(2)
    e = etime(t)         !  Startup etime - do not use result
	do i = 1, 10000
	k=k+1
	end do
	e = etime( t )
	print *, 'elapsed:', e, ', user:', t(1), `, sys:', t(2)
	end
demo% f77 -silent tetime.f
demo% a.out
elapsed:   0.190000, user:    6.00000E-02, sys:   0.130000
demo% 

times(2)¡¢f77(1) ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¡¢¤ª¤è¤Ó¡ØFortran ¥×¥í¥°¥é¥ß¥ó¥°¥¬¥¤¥É¡Ù¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

exit : ¥×¥í¥»¥¹¤Î½ªÎ»¤ª¤è¤Ó¾õÂÖ¤ÎÀßÄê

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call exit( status )
status INTEGER*4 ÆþÎÏ

Îã : exit()

	...
	if(dx .lt. 0.) call exit( 0 )
    ...
	end

exit ¤Ï¥Õ¥é¥Ã¥·¥å¤·¤Æ¤«¤é¥×¥í¥»¥¹¤Î¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤òÊĤ¸¡¢¤½¤Î¿Æ¥×¥í¥»¥¹¤¬ wait ¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¾ì¹ç¤Ï¿Æ¥×¥í¥»¥¹¤ËÄÌÃΤ·¤Þ¤¹¡£

¿Æ¥×¥í¥»¥¹¤Ï status ¤Î²¼°Ì 8 ¥Ó¥Ã¥È¤ò»ÈÍѤǤ­¤Þ¤¹¡£¤³¤Î 8 ¥Ó¥Ã¥È¤Ïº¸¤Ë 8 ¥Ó¥Ã¥È¥·¥Õ¥È¤µ¤ì¡¢Â¾¤Î¥Ó¥Ã¥È¤Ï¤¹¤Ù¤Æ¥¼¥í¤Ë¤Ê¤ê¤Þ¤¹ (¤·¤¿¤¬¤Ã¤Æ status ¤Ï 256 ¡Á 65280 ¤ÎÈϰϤˤʤê¤Þ¤¹)¡£¤³¤Î¸Æ¤Ó½Ð¤·¤ÏÉüµ¢¤·¤Þ¤»¤ó¡£

C ¤Î´Ø¿ô¤Ç¤¢¤ë exit ¤Ï¡¢ºÇ½ªÅª¤Ê¥·¥¹¥Æ¥à½ªÎ»Æ°ºî¤¬¼Â¹Ô¤µ¤ì¤ëÁ°¤ËÀ°Íý¤Î½èÍý¤ò¹Ô¤¦¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£

°ú¿ô¤Ê¤·¤Ç exit ¤ò¸Æ¤Ó½Ð¤¹¤È¥³¥ó¥Ñ¥¤¥ë»þ·Ù¹ð¥á¥Ã¥»¡¼¥¸¤¬½Ð¤µ¤ì¡¢¼«Æ°Åª¤Ë°ú¿ô¤Ë¥¼¥í¤¬Í¿¤¨¤é¤ì¤Þ¤¹¡£
»²¾È : exit(2)¡¢fork(2)¡¢fork(3f)¡¢wait(2)¡¢wait(3f)

fdate : ASCII ʸ»úÎó¤ÇÆüÉÕ¤ª¤è¤Ó»þ¹ï¤òÌ᤹

¥µ¥Ö¥ë¡¼¥Á¥ó¤Þ¤¿¤Ï´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call fdate( string )
string CHARACTER*24 ½ÐÎÏ

¤Þ¤¿¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£

CHARACTER fdate*24 string = fdate() fdate ¤ò´Ø¿ô¤È¤·¤Æ»ÈÍѤ¹¤ë¾ì¹ç¡¢¤½¤ì¤ò¸Æ¤Ó½Ð¤¹¥ë¡¼¥Á¥ó¤Ï fdate ¤Î·¿¤ÈŤµ¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ë
Ìá¤êÃÍ CHARACTER*24 ½ÐÎÏ

Îã 1 : ¥µ¥Ö¥ë¡¼¥Á¥ó¤È¤·¤Æ¤Î»ÈÍÑ

	character*24 string
	call fdate( string )
	write(*,*) string
	end

¾åµ­¤ÎÎã¤Î½ÐÎϤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

Wed Aug 3 15:30:23 1994 

Îã 2 : ´Ø¿ô¤È¤·¤Æ¤Î»ÈÍÑ¡£½ÐÎϤϾ嵭¤ÎÎã¤ÈƱ¤¸¡£

	character*24 fdate
	write(*,*)  fdate()
	end

»²¾È : ctime(3)¡¢time(3F)¡¢idate(3F)

flush : ÏÀÍýÁõÃ֤ؤνÐÎϤΥեé¥Ã¥·¥å

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 flush
n = flush( lunit ) 
lunit
 INTEGER*4
Input ÏÀÍýÁõÃÖ
Return value
 INTEGER*4
Output n = 0 no error
n > 0 error number


flush ´Ø¿ô¤Ï¡¢ÏÀÍýÁõÃÖ lunit ¤ËÂФ¹¤ë¥Ð¥Ã¥Õ¥¡¤ÎÆâÍÆ¤ò·ë¹ç¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Ë¥Õ¥é¥Ã¥·¥å¤·¤Þ¤¹¡£¤³¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤¬ºÇ¤âÌò¤ËΩ¤Ä¤Î¤Ï¡¢ÏÀÍýÁõÃÖ 0 ¤È 6 ¤¬¤É¤Á¤é¤â¥³¥ó¥½¡¼¥ë¤Ë·ë¹ç¤µ¤ì¤Æ¤¤¤Æ¡¢¤½¤ì¤é¤ÎÁõÃÖ¤ËÂФ·¤Æ¤³¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤ò»ÈÍѤ¹¤ë¾ì¹ç¤Ç¤¹¡£

´Ø¿ô¤Ï¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤È¡¢Àµ¤Î¥¨¥é¡¼ÈÖ¹æ¤òÊÖ¤·¡¢¥¨¥é¡¼¤¬È¯À¸¤·¤Ê¤¤¤È¥¼¥í¤òÊÖ¤·¤Þ¤¹¡£

»²¾È : fclose(3S)

fork : ¸½¥×¥í¥»¥¹¤Î¥³¥Ô¡¼¤ÎÀ¸À®

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 fork n = fork()
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ n>0: n= ¥³¥Ô¡¼¤Î¥×¥í¥»¥¹¼±ÊÌ»Ò n<0, n= (¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É )


fork ´Ø¿ô¤Ï¤½¤ì¤ò¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤Î¥³¥Ô¡¼¤òÀ¸À®¤·¤Þ¤¹¡£¸µ¤Î¥×¥í¥»¥¹¤È¥³¥Ô¡¼¤È¤Î°ã¤¤¤Ï¡¢¸µ¤Î¥×¥í¥»¥¹ (¿Æ¥×¥í¥»¥¹¤È¸Æ¤Ð¤ì¤ë) ¤ËÊÖ¤µ¤ì¤ëÃͤ¬¥³¥Ô¡¼¤Î¥×¥í¥»¥¹¼±Ê̻ҤǤ¢¤ë¤È¤¤¤¦¤³¤È¤À¤±¤Ç¤¹¡£¥³¥Ô¡¼¤Ï°ìÈÌ¤Ë»Ò¥×¥í¥»¥¹¤È¸Æ¤Ð¤ì¤Þ¤¹¡£»Ò¥×¥í¥»¥¹¤ËÊÖ¤µ¤ì¤ëÃͤϥ¼¥í¤Ç¤¹¡£

½ñ¤­¹þ¤ßÍѤ˳«¤¤¤Æ¤¤¤ë¤¹¤Ù¤Æ¤ÎÏÀÍýÁõÃ֤ϡ¢fork ¤¬¼Â¹Ô¤µ¤ì¤ëÁ°¤Ë¥Õ¥é¥Ã¥·¥å¤µ¤ì¤Þ¤¹¡£¤³¤ì¤ÏÆþ½ÐÎϥХåե¡¤ÎÆâÍÆ¤¬³°Éô¥Õ¥¡¥¤¥ë¤Ë½ÅÊ£¤·¤Æ½ñ¤­¹þ¤Þ¤ì¤ë¤Î¤òËɤ®¤Þ¤¹¡£

Îã : fork()

	INTEGER*4 fork, pid 
	pid = fork() 
	if(pid.lt.0) stop '¥Õ¥©¡¼¥¯¼ºÇÔ'
	if(pid.gt.0) then
        print *, '¿Æ¥×¥í¥»¥¹'
	else
        print *, '»Ò¥×¥í¥»¥¹'
	endif

fork ¥ë¡¼¥Á¥ó¤ÈÂФò¤Ê¤¹ exec ¥ë¡¼¥Á¥ó¤ÏÄ󶡤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¤³¤ì¤ÏÏÀÍýÁõÃÖ¤ò³«¤¤¤¿¤Þ¤Þ¤Ç exec ¥ë¡¼¥Á¥ó¤ËÅϤ»¤ëÎɤ¤ÊýË¡¤¬¤Ê¤¤¤¿¤á¤Ç¤¹¡£¤¿¤À¤·¡¢system(3F) ¤ò»ÈÍѤ¹¤ì¤Ð fork/exec ¤ÎÄ̾ï¤Îµ¡Ç½¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

»²¾È : fork(2)¡¢wait(3F)¡¢kill(3F)¡¢system(3F)¡¢perror(3F)

free : Malloc ¤Ë¤è¤ê³ä¤êÅö¤Æ¤é¤ì¤¿µ­²±Îΰè¤Î
³ä¤êÅö¤Æ²ò½ü

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call free ( ptr )
ptr pointer ÆþÎÏ

free ¤Ï malloc ¤Ë¤è¤êÀè¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿µ­²±Îΰè¤Î³ä¤êÅö¤Æ¤ò²ò½ü¤·¤Þ¤¹¡£
µ­²±Îΰè¤Ï¥á¥â¥ê¡¼¥Þ¥Í¡¼¥¸¥ã¤ËÊÖ¤µ¤ì¤Þ¤¹¤¬¡¢¥æ¡¼¥¶¡¼¤Î¥×¥í¥°¥é¥à¤ÎÃæ¤Ç¤³¤ì¤ò»ÈÍѤ¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£

Îã : free()

	real x
	pointer ( ptr, x ) 
	ptr = malloc ( 10000 )
	call free ( ptr )
	end

¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ömalloc¡¢malloc 64: µ­²±Îΰè¤Î³ä¤êÅö¤Æ¤È¤½¤Î¥¢¥É¥ì¥¹¤Î³ÍÆÀ¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

fseek¡¢ftell : ¥Õ¥¡¥¤¥ë¤Î¥Ý¥¤¥ó¥¿¤Î°ÌÃÖÉÕ¤±¤ÈºÆ°ÌÃÖÉÕ¤±

fseek ¤ª¤è¤Ó ftell ¤Ï¡¢¥Õ¥¡¥¤¥ë¤ÎºÆ°ÌÃÖÉÕ¤±¤ò²Äǽ¤Ë¤¹¤ë¥ë¡¼¥Á¥ó¤Ç¤¹¡£ftell ¤Ï¡¢¥Õ¥¡¥¤¥ë¤Î¸½ºß°ÌÃÖ¤ò¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤«¤é¤Î¥ª¥Õ¥»¥Ã¥È¤ò¼¨¤¹¥Ð¥¤¥È¿ô¤ÇÊÖ¤·¤Þ¤¹¡£¥×¥í¥°¥é¥à¤Î¸åÊý¤Ç¡¢¤³¤ÎÃͤò»ÈÍѤ·¤Æ fseek ¤ò¸Æ¤Ö¤³¤È¤Ë¤è¤ê¡¢¥Õ¥¡¥¤¥ë¤ÎÆÉ¤ß¹þ¤ß°ÌÃÖ¤ò¸µ¤ËÌ᤹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

fseek : ÏÀÍýÁõÃÖ¾å¤Î¥Õ¥¡¥¤¥ë¤Î¥Ý¥¤¥ó¥¿¤ÎºÆ°ÌÃÖÉÕ¤±

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 fseek n = fseek( lunit, offset, from )
lunit INTEGER*4 ÆþÎÏ ³«¤¤¤Æ¤¤¤ëÏÀÍýÁõÃÖ
offset INTEGER*4 ¤Þ¤¿¤Ï INTEGER*8 ÆþÎÏ from ¤Ç»ØÄꤵ¤ì¤¿°ÌÃÖ¤«¤é¤Î¥ª¥Õ¥»¥Ã¥È¤ò¼¨¤¹¥Ð¥¤¥È¿ô

-xarch=v9 ¤ò»È¤Ã¤Æ¡¢Solaris 7 ¤Ê¤É¤Î 64 ¥Ó¥Ã¥È´Ä¶­ÍѤ˥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤Ï¡¢INTEGER*8 ¥ª¥Õ¥»¥Ã¥ÈÃͤ¬É¬Íס£Äê¿ô¤òÆþÎϤ¹¤ë¾ì¹ç¤Ï¡¢¤½¤ì¤ò 64 ¥Ó¥Ã¥ÈÄê¿ô¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£¤¿¤È¤¨¤Ð¡¢100_8
from INTEGER*4 ÆþÎÏ 0= ¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬ 1= ¸½ºß¤Î°ÌÃÖ 2= ¥Õ¥¡¥¤¥ë¤Î½ªÎ»
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ n=0: Àµ¾ï¡£ n>0: ¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É


Ãí - ½çÊÔÀ®¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢fseek 64 ¤Ë³¤¯¸Æ¤Ó½Ð¤·¤Î¸å¤Î½ÐÎÏÁàºî (WRITE ¤Ê¤É) ¤Ï¡¢fseek ¤Î°ÌÃ֤˳¤¯¤¹¤Ù¤Æ¤Î¥Ç¡¼¥¿¥ì¥³¡¼¥É¤Îºï½ü¡¢¿·¤·¤¤¥Ç¡¼¥¿¥ì¥³¡¼¥É (¤È¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤Î¥Þ¡¼¥¯) ¤Ç¤Î½ñ¤­´¹¤¨¤Î¸¶°ø¤È¤Ê¤ê¤Þ¤¹¡£Àµ¤·¤¤°ÌÃ֤ؤΥ쥳¡¼¥É¤Î½ñ¤­´¹¤¨¤Ï¡¢Ä¾ÀÜ¥¢¥¯¥»¥¹¥Õ¥¡¥¤¥ë¤Ç¤Î¤ß¼Â¹Ô²Äǽ¤Ç¤¹¡£

Îã : fseek() ¡Ý MyFile ¤Î¥Ý¥¤¥ó¥¿¤òÀèÆ¬¤«¤é 2 ¥Ð¥¤¥È¤Î°ÌÃ֤˺ưÌÃÖÉÕ¤±¤·¤Þ¤¹¡£

	INTEGER*4 fseek, lunit/1/, offset/2/, from/0/, n
	open( UNIT=lunit, FILE='MyFile' )
	n = fseek( lunit, offset, from )
	if ( n .gt. 0 ) stop 'fseek ¥¨¥é¡¼'
	end

Îã : ¾åµ­¤ÎÎã¤ò 64 ¥Ó¥Ã¥È´Ä¶­¤Ç¡¢-xarch=v9 ¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

	INTEGER*4 fseek, lunit/1/, from/0/, n
	INTEGER*8 offset/2/
	open( UNIT=lunit, FILE='MyFile' )
	n = fseek( lunit, offset, from )
	if ( n .gt. 0 ) stop 'fseek error'
	end

ftell : ¥Õ¥¡¥¤¥ë¤Î¸½ºß°ÌÃÖ¤òÌ᤹

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 ftell n = ftell( lunit )
lunit INTEGER*4 ÆþÎÏ ³«¤¤¤Æ¤¤¤ëÏÀÍýÁõÃÖ
Ìá¤êÃÍ INTEGER*4 ¤Þ¤¿¤Ï INTEGER*8 ½ÐÎÏ n>=0: n= ¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤«¤é¤Î¥ª¥Õ¥»¥Ã¥È¤ò¼¨¤¹¥Ð¥¤¥È¿ô n<0: n= ¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É

-xarch=v9 ¤ò»È¤Ã¤Æ¡¢Solaris 7 ¤Ê¤É¤Î 64 ¥Ó¥Ã¥È´Ä¶­ÍѤ˥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¡¢INTEGER*8 ¥ª¥Õ¥»¥Ã¥ÈÃͤ¬Ìá¤ë¡£ftell ¤È¤³¤ÎÌá¤êÃͤò¼õ¤±¼è¤ëÊÑ¿ô¤Ï¡¢INTEGER*8 ¤ÈÀë¸À¤¹¤ëɬÍפ¬¤¢¤ë¡£

Îã : ftell()

	INTEGER*4 ftell, lunit/1/, n
	open( UNIT=lunit, FILE='MyFile' )
    ... 
	n = ftell( lunit )
	if ( n .lt. 0 ) stop 'ftell ¥¨¥é¡¼'
	...

Îã : ¾åµ­¤ÎÎã¤ò 64 ¥Ó¥Ã¥È´Ä¶­¤Ç¡¢-xarch=v9 ¤ò»È¤Ã¤Æ¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

	INTEGER*4 lunit/1/
	INTEGER*8 ftell, n
	open( UNIT=lunit, FILE='MyFile' )
    ... 
	n = ftell( lunit )
	if ( n .lt. 0 ) stop 'ftell error'
	...

»²¾È : fseek(3S)¡¢perror(3F)¡¢fseeko64(3f)¡¢ftello64(3f)

fseeko64¡¢ftello64: Â絬ÌÏ¥Õ¥¡¥¤¥ë¤Î¥Ý¥¤¥ó¥¿¤Î°ÌÃÖÉÕ¤±¤ÈºÆ°ÌÃÖÉÕ¤±

fseeko64 ¤È ftello64 ¤Ï¡¢¤½¤ì¤¾¤ì fseek ¤È ftell ¤Î ¡ÖÂ絬ÌÏ¥Õ¥¡¥¤¥ë¡× ¥Ð¡¼¥¸¥ç¥ó¤Ç¤¹¡£fseeko64 ¤È ftello64 ¤Ï¡¢Solaris 2.6 ¤È 7 ¤Ç INTEGER*8 ¥Õ¥¡¥¤¥ë°ÌÃ֤Υª¥Õ¥»¥Ã¥È¤òÆþ½ÐÎϤ·¤Þ¤¹¡£(¡ÖÂ絬ÌÏ¥Õ¥¡¥¤¥ë¡× ¤È¤Ï 2G ¥Ð¥¤¥È¤òͤ¨¤ë¥Õ¥¡¥¤¥ë¤Î¤³¤È¤Ç¡¢¥Ð¥¤¥È°ÌÃÖ¤Ï 64 ¥Ó¥Ã¥È¤ÎÀ°¿ô¤Ç¼¨¤·¤Þ¤¹¡£) ¤³¤ì¤é¤Î¥Ð¡¼¥¸¥ç¥ó¤ò»ÈÍѤ·¤Æ¡¢Â絬ÌÏ¥Õ¥¡¥¤¥ë¤Î¥Ý¥¤¥ó¥¿¤Î°ÌÃÖÉÕ¤±¤äºÆ°ÌÃÖÉÕ¤±¤ò¹Ô¤¤¤Þ¤¹¡£

fseeko64: ÏÀÍýÁõÃÖ¾å¤Î¥Õ¥¡¥¤¥ë¤Î¥Ý¥¤¥ó¥¿¤ÎºÆ°ÌÃÖÉÕ¤±

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER fseeko64 n = fseeko64( lunit, offset64, from )
lunit INTEGER*4 ÆþÎÏ ³«¤¤¤Æ¤¤¤ëÏÀÍýÁõÃÖ
offset64 INTEGER*8 ÆþÎÏ from ¤Ç»ØÄꤵ¤ì¤¿°ÌÃÖ¤«¤é¤Î 64 ¥Ó¥Ã¥È
¥ª¥Õ¥»¥Ã¥È¤ò¼¨¤¹¥Ð¥¤¥È¿ô
from INTEGER*4 ÆþÎÏ 0=¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬ 1=¸½ºß¤Î°ÌÃÖ 2=¥Õ¥¡¥¤¥ë¤Î½ªÎ»
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ n=0: Àµ¾ï¡£n>0: ¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É


Ãí - ½çÊÔÀ®¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢fseek 64 ¤Ë³¤¯¸Æ¤Ó½Ð¤·¤Î¸å¤Î½ÐÎÏÁàºî (WRITE ¤Ê¤É) ¤Ï¡¢fseek ¤Î°ÌÃ֤˳¤¯¤¹¤Ù¤Æ¤Î¥Ç¡¼¥¿¥ì¥³¡¼¥É¤Îºï½ü¡¢¿·¤·¤¤¥Ç¡¼¥¿¥ì¥³¡¼¥É (¤È¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤Î¥Þ¡¼¥¯) ¤Ç¤Î½ñ¤­´¹¤¨¤Î¸¶°ø¤È¤Ê¤ê¤Þ¤¹¡£Àµ¤·¤¤°ÌÃ֤ؤΥ쥳¡¼¥É¤Î½ñ¤­´¹¤¨¤Ï¡¢Ä¾ÀÜ¥¢¥¯¥»¥¹¥Õ¥¡¥¤¥ë¤Ç¤Î¤ß¼Â¹Ô²Äǽ¤Ç¤¹¡£

Îã : fseeko64( ) - MyFile ¤Î¥Ý¥¤¥ó¥¿¤òÀèÆ¬¤«¤é 2 ¥Ð¥¤¥È¤Î°ÌÃ֤˺ưÌÃÖÉÕ¤±¤·¤Þ¤¹¡£

	INTEGER fseeko64, lunit/1/, from/0/, n
	INTEGER*8 offset/200/
	open( UNIT=lunit, FILE='MyFile' )
	n = fseeko64( lunit, offset, from )
	if ( n .gt. 0 ) stop fseek ¥¨¥é¡¼' 
	end

ftello64: ¥Õ¥¡¥¤¥ë¤Î¸½ºß°ÌÃÖ¤òÌ᤹

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*8 ftello64 n = ftello64( lunit )
lunit INTEGER*4 ÆþÎÏ ³«¤¤¤Æ¤¤¤ëÏÀÍýÁõÃÖ
Ìá¤êÃÍ INTEGER*8 ½ÐÎÏ ³0: n=¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤«¤é¤Î¥ª¥Õ¥»¥Ã¥È¤ò¼¨¤¹¥Ð¥¤¥È¿ô n<0: n=¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É

Îã : ftello64( ):

	INTEGER*8 ftello64, lunit/1/, n
	open( UNIT=lunit, FILE='MyFile' )
	...
	n = ftello64( lunit )
	if ( n .lt. 0 ) stop 'ftell ¥¨¥é¡¼'
	...

getarg¡¢iargc : ¥³¥Þ¥ó¥É¹Ô¤Î°ú¿ô¤Î¼èÆÀ

getarg ¤È iargc ¤Ï¡¢¥³¥Þ¥ó¥É¹Ô¥×¥ê¥×¥í¥»¥Ã¥µ¤Ë¤è¤Ã¤ÆÅ¸³«¤µ¤ì¤¿¥³¥Þ¥ó¥É¹Ô°ú¿ô¤Ë¥¢¥¯¥»¥¹¤·¤Þ¤¹¡£

getarg : ¥³¥Þ¥ó¥É¹Ô¤Î°ú¿ô¤Î¼èÆÀ

¥µ¥Ö¥ë¡¼¥Á¥ó ¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call getarg( k, arg )
k INTEGER*4 ÆþÎÏ °ú¿ô¤Îº÷°ú (0 = ºÇ½é¤Î°ú¿ô = ¥³¥Þ¥ó¥É̾)
arg CHARACTER*n ½ÐÎÏ k ÈÖÌܤΰú¿ô
n INTEGER*4 °ú¿ô¤Î¥µ¥¤¥º ºÇ¤âŤ¤°ú¿ô¤¬Æþ¤ë¤À¤±¤ÎÂ礭¤µ

iargc : ¥³¥Þ¥ó¥É¹Ô¤Î°ú¿ô¤Î¸Ä¿ô¤Î¼èÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

m = iargc()
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ ¥³¥Þ¥ó¥É¹Ô¤Î°ú¿ô¤Î¸Ä¿ô

Îã : iargc ¤È getarg: °ú¿ô¤Î¸Ä¿ô¤òÄ´¤Ù¡¢³Æ°ú¿ô¤òÆÉ¤ß¼è¤ê¤Þ¤¹¡£

demo% cat yarg.f
	character argv*10
	INTEGER*4 i, iargc, n
	n = iargc()
	do 1 i = 1, n
     call getarg( i, argv )
 1   write( *, '( i2, 1x, a )' ) i, argv
	end
demo% f77 -silent yarg.f
demo% a.out *.f 
1 first.f
2 yarg.f

»²¾È : execve(2)¡¢getenv(3F)

getc¡¢fgetc : ¼¡¤Îʸ»ú¤Î¼èÆÀ

getc ¤È fgetc ¤Ï¡¢ÆþÎÏ¥¹¥È¥ê¡¼¥à¤«¤é¼¡¤Îʸ»ú¤òÆÉ¤ß¼è¤ê¤Þ¤¹¡£Æ±¤¸ÏÀÍýÁõÃÖ¾å¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤Î¸Æ¤Ó½Ð¤·¤òÄ̾ï¤Î Fortran ¤ÎÆþ½ÐÎϤȺ®¹ç¤·¤Æ»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

getc : ɸ½àÆþÎϤ«¤é¤Î¼¡¤Îʸ»ú¤Î¼èÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 getc status = getc( char )
char CHARACTER ½ÐÎÏ ¼¡¤Îʸ»ú
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=0: Àµ¾ï status=-1: ¥Õ¥¡¥¤¥ë¤Î½ªÎ» status>0: ¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É¤Þ¤¿¤Ï f77 Æþ½ÐÎÏ¥¨¥é¡¼¥³¡¼¥É

Îã : getc ¤Ç¥­¡¼¥Ü¡¼¥É¤«¤éʸ»ú¤ò 1 ʸ»ú¤º¤ÄÆþÎϤ·¤Þ¤¹¡£Control-D (öD) ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

	character char
	INTEGER*4 getc, status
	status = 0
	do while ( status .eq. 0 )
	status = getc( char )
	write(*, '(i3, o4.3)') status, char
	end do
	end

¾åµ­¤Î¥½¡¼¥¹¥×¥í¥°¥é¥à¤ò (¥³¥ó¥Ñ¥¤¥ë¸å¤Ë) ¼Â¹Ô¤·¤¿Îã¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£

demo% a.out
ab           ¬ ¥×¥í¥°¥é¥à¤¬ÆþÎϤµ¤ì¤¿Ê¸»ú¤òÆÉ¤ß¼è¤ë¡£ 
^D           ¬    Control-D ¥­¡¼¤Ç½ªÎ»¤µ¤ì¤¿¡£
0 141        ¬ ¥×¥í¥°¥é¥à¤¬ÆþÎϤµ¤ì¤¿Ê¸»ú¤Î¾õÂÖ¥³¡¼¥É¤È 8 ¿ÊÃͤòɽ¤¹¡£
0 142        ¬    141 ¤Ï `a' ¤ò¡¢142 ¤Ï `b' ¤òɽ¤¹¡£
0 012        ¬    012 ¤Ï¥ê¥¿¡¼¥ó¥­¡¼¤òɽ¤¹¡£
-1 012       ¬ ¼¡¤ÎÆÉ¤ß¼è¤ê¤¬»î¹Ô¤µ¤ì Control-D ¤òÌᤵ¤ì¤¿¡£
demo% 

¤É¤ÎÏÀÍýÁõÃÖ¤ËÂФ·¤Æ¤â¡¢Ä̾ï¤Î Fortran ¤ÎÆþÎÏ¤È getc() ¤òº®ºß¤·¤Æ»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

fgetc : »ØÄꤷ¤¿ÏÀÍýÁõÃÖ¤«¤é¤Î¼¡¤Îʸ»ú¤Î¼èÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 fgets status = fgetc( lunit, char )
lunit INTEGER*4 ÆþÎÏ ÏÀÍýÁõÃÖ
char CHARACTER ½ÐÎÏ ¼¡¤Îʸ»ú
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=-1: ¥Õ¥¡¥¤¥ë¤Î½ªÎ» status>0: ¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É¤Þ¤¿¤Ï f77 Æþ½ÐÎÏ¥¨¥é¡¼¥³¡¼¥É

Îã : fgetc ¤Ç tfgetc.data ¤«¤éʸ»ú¤ò 1 ʸ»ú¤º¤ÄÆÉ¤ß¼è¤ê¤Þ¤¹¡£²þ¹Ô (8 ¿Ê¤Î 012) ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

	character char
	INTEGER*4 fgetc, status
	open( unit=1, file='tfgetc.data' )
	status = 0
	do while ( status .eq. 0 )
	status = fgetc( 1, char )
	write(*, '(i3, o4.3)') status, char
	end do
	end

¾åµ­¤Î¥½¡¼¥¹¥×¥í¥°¥é¥à¤ò (¥³¥ó¥Ñ¥¤¥ë¸å¤Ë) ¼Â¹Ô¤·¤¿Îã¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£

demo% cat tfgetc.data 
ab 
yz 
demo% a.out 
0 141       ¬ `a'¤¬ÆÉ¤ß¼è¤é¤ì¤ë¡£
0 142       ¬  `b' ¤¬ÆÉ¤ß¼è¤é¤ì¤ë¡£
0 012       ¬ ²þ¹Ô¤¬ÆÉ¤ß¼è¤é¤ì¤ë¡£
0 171       ¬ `y' ¤¬ÆÉ¤ß¼è¤é¤ì¤ë¡£
0 172       ¬ `z' ¤¬ÆÉ¤ß¼è¤é¤ì¤ë¡£
0 012       ¬ ²þ¹Ô¤¬ÆÉ¤ß¼è¤é¤ì¤ë¡£
-1 012      ¬ Control-D ¤¬ÆÉ¤ß¼è¤é¤ì¤ë¡£
demo% 

¤É¤ÎÏÀÍýÁõÃÖ¤ËÂФ·¤Æ¤â¡¢Ä̾ï¤Î Fortran ¤ÎÆþÎÏ¤È fgetc() ¤òº®ºß¤·¤Æ»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

»²¾È : getc(3S)¡¢intro(2)¡¢perror(3F)

getcwd : ¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¥Ñ¥¹¤Î¼èÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 getcwd status = getcwd( dirname )
dirname CHARACTER*n ½ÐÎÏ ¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹¤¬ÊÖ¤µ¤ì¤ë¡£ ¸½ºß¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î¥Ñ¥¹Ì¾¡£ n ¤Ï¡¢ºÇ¤âŤ¤¥Ñ¥¹Ì¾¤¬Æþ¤ë¤Î¤Ë½½Ê¬¤ÊÂ礭¤µ¤Ç¤¢¤ë¤³¤È¤¬É¬Í×
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=0: Àµ¾ï status>0: ¥¨¥é¡¼¥³¡¼¥É

Îã : getcwd

	INTEGER*4 getcwd, status
	character*64 dirname
	status = getcwd( dirname )
	if ( status .ne. 0 ) stop 'getcwd: ¥¨¥é¡¼'
	write(*,*) dirname
	end

»²¾È : chdir(3F)¡¢perror(3F)¡¢getwd(3)


Ãí - ¥Ñ¥¹Ì¾¤ò <sys/param.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë MAXPATHLEN ¤è¤êŤ¯¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

getenv : ´Ä¶­ÊÑ¿ô¤ÎÃͤμèÆÀ

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call getenv( ename, evalue )
ename CHARACTER*n ÆþÎÏ ¸¡º÷¤¹¤ë´Ä¶­ÊÑ¿ô¤Î̾Á°
evalue CHARACTER*n ½ÐÎÏ ¸«¤Ä¤«¤Ã¤¿´Ä¶­ÊÑ¿ô¤ÎÃÍ¡£
¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¶õ

ename ¤È evalue ¤Ë¤Ï¡¢¤½¤ì¤¾¤ì¤Îʸ»úÎ󤬽½Ê¬Æþ¤ë¤À¤±¤ÎÂ礭¤µ¤¬É¬ÍפǤ¹¡£

getenv ¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï´Ä¶­¥ê¥¹¥È¤«¤é ename=evalue ¤Î·Á¼°¤Îʸ»úÎó¤ò¸¡º÷¤·¡¢¤½¤Îʸ»úÎ󤬤¢¤Ã¤¿¾ì¹ç¤Ë¤Ï evalue ¤ÎÃͤòÊÖ¤·¡¢¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï evalue ¤Ë¶õÇò¤òµÍ¤á¤Þ¤¹¡£

Îã : $SHELL ¤ÎÃͤò°õºþ¤¹¤ë¤Ë¤Ï¡¢getenv() ¤ò»ÈÍѤ·¤Þ¤¹¡£

	character*18  evalue
	call getenv( 'SHELL', evalue )
	write(*,*) "'", evalue, "'"
	end

»²¾È : execve(2)¡¢environ(5)

getfd : ³°ÉôÁõÃÖÈÖ¹æ¤ËÂФ¹¤ë¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤Î¼èÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 getfd fildes = getfd( unitn )
unitn INTEGER*4 ÆþÎÏ ³°ÉôÁõÃÖÈÖ¹æ
Ìá¤êÃÍ INTEGER*4 ¤Þ¤¿¤Ï INTEGER*8 ½ÐÎÏ ¥Õ¥¡¥¤¥ë¤¬·ë¹ç¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¥Õ¥¡¥¤¥ëµ­½Ò»Ò¡¢·ë¹ç¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï -1¡£ 64 ¥Ó¥Ã¥È´Ä¶­ÍѤ˥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¡¢·ë²Ì¤È¤·¤Æ INTEGER*8 ¤¬Ìá¤ë¡£

Îã : getfd()

	INTEGER*4 fildes, getfd, unitn/1/
	open( unitn, file='tgetfd.data' )
	fildes = getfd( unitn )
	if ( fildes .eq. -1 ) stop 'getfd: ¥Õ¥¡¥¤¥ë¤Ï·ë¹ç¤µ¤ì¤Æ¤¤¤Þ¤»¤ó'
	write(*,*) '¥Õ¥¡¥¤¥ëµ­½Ò»Ò = ', fildes
	end

»²¾È : open(2)

getfilep : ³°ÉôÁõÃÖÈÖ¹æ¤ËÂФ¹¤ë¥Õ¥¡¥¤¥ë
¥Ý¥¤¥ó¥¿¤Î¼èÆÀ

´Ø¿ô

irtn = c_read( getfilep( unitn ), inbyte, 1 )
c_read C ´Ø¿ô ÆþÎÏ ¤³¤Î C ´Ø¿ô¤Ï¥æ¡¼¥¶¡¼¤¬½ñ¤¯¡£²¼µ­¤ÎÎã¤ò»²¾È
unitn INTEGER*4 ÆþÎÏ ³°ÉôÁõÃÖÈÖ¹æ
getfilep INTEGER*4 ¤Þ¤¿¤Ï INTEGER*8 Ìá¤êÃÍ ¥Õ¥¡¥¤¥ë¤¬·ë¹ç¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¡¢·ë¹ç¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï -1¡£ 64 ¥Ó¥Ã¥È´Ä¶­ÍѤ˥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¡¢INTEGER*8 ¤ÎÃͤ¬Ìá¤ë¡£

¤³¤Î´Ø¿ô¤Ïɸ½à Fortran ¤ÎÆþ½ÐÎÏ¤È C ¤ÎÆþ½ÐÎϤòº®ºß¤µ¤»¤ë¤¿¤á¤Ë»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¤è¤¦¤Êº®ºß¤Ï°Ü¿¢ÉÔ²Äǽ¤Ç¤¢¤ê¡¢º£¸å¥ê¥ê¡¼¥¹¤µ¤ì¤ë¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Þ¤¿¤Ï Fortran ¤Ç»ÈÍѤǤ­¤ëÊݾڤϤ¢¤ê¤Þ¤»¤ó¡£¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î´Ø¿ô¤Î»ÈÍѤϴ«¤á¤é¤ì¤Þ¤»¤ó¤·¡¢Ä¾ÀܤΥ¤¥ó¥¿¥Õ¥§¡¼¥¹¤ÏÄ󶡤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¥æ¡¼¥¶¡¼¤Ï getfilep ¤¬Ì᤹Ãͤò»ÈÍѤ¹¤ë¤¿¤á¤Ë ÆÈ¼«¤Î C ¥ë¡¼¥Á¥ó¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£C ¥ë¡¼¥Á¥ó¤ÎÎã¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£

Îã : Fortran ¤Ï C ¤Î´Ø¿ô¤ËÅϤ¹¤Î¤Ë getfilep ¤ò»ÈÍѤ·¤Þ¤¹¡£

tgetfilepF.f
 
      character*1  inbyte
      integer*4    c_read,  getfilep, unitn / 5 /
      external     getfilep
      write(*,'(a,$)') '¿ô»ú¤Ï²¿ ? '
 
      irtn = c_read( getfilep( unitn ), inbyte, 1 )
 
      write(*,9)  inbyte
    9 format('C ¤ÎÆÉ¤ó¤À¿ô»ú¤Ï ', a )
      end

getfilep ¤ò¼ÂºÝ¤Ë»ÈÍѤ¹¤ë C ´Ø¿ô¤ÎÎã¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£

tgetfilepC.c
 
      #include <stdio.h>
      int c_read_ ( fd, buf, nbytes, buf_len )
      FILE **fd ;
      char *buf ;
      int *nbytes, buf_len ;
      {
         return fread( buf, 1, *nbytes, *fd ) ;
      }

¾åµ­¤Î¥½¡¼¥¹¥×¥í¥°¥é¥à¤ò¥³¥ó¥Ñ¥¤¥ë¡¢¥ê¥ó¥¯¡¢¼Â¹Ô¤·¤¿Îã¤ò°Ê²¼¤Ë¼¨¤·¤Þ¤¹¡£

demo% 11% cc -c tgetfilepC.c 
demo% 12% f77 tgetfilepC.o tgetfilepF.f 
tgetfileF.f: 
MAIN: 
demo% 13% a.out 
¿ô»ú¤Ï²¿ ? 3 
C ¤ÎÆÉ¤ó¤À¿ô»ú¤Ï 3 
demo% 14%

¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡ØFortran ¥×¥í¥°¥é¥ß¥ó¥°¥¬¥¤¥É¡Ù¤Î Âè 11 ¾Ï¡ÖC ¤È Fortran ¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
»²¾È : open(2)

getlog : ¥æ¡¼¥¶¡¼¤Î¥í¥°¥¤¥ó̾¤Î¼èÆÀ

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call getlog( name )
name CHARACTER*n ½ÐÎÏ ¥æ¡¼¥¶¡¼¤Î¥í¥°¥¤¥ó̾¡£¥×¥í¥»¥¹¤¬Ã¼Ëö¤«¤éÀÚ¤êÎ¥¤µ¤ì¤Æ¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¤¹¤Ù¤Æ¶õÇò¡£n ¤Ï¡¢ºÇ¤âŤ¤Ì¾Á°¤¬Æþ¤ë¤Î¤Ë½½Ê¬¤ÊÂ礭¤µ¤Ç¤¢¤ë¤³¤È¤¬É¬Í×

Îã : getlog

	character*18 name
	call getlog( name )
	write(*,*) "'", name, "'"
	end

»²¾È : getlogin(3)

getpid : ¥×¥í¥»¥¹¼±Ê̻ҤμèÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 getpid pid = getpid()
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ ¸½¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹¼±ÊÌ»Ò (ID)

Îã : getpid

	INTEGER*4 getpid, pid
	pid = getpid()
	write(*,*) '¥×¥í¥»¥¹ID = ', pid
	end

»²¾È : getpid(2)

getuid¡¢getgid : ¥×¥í¥»¥¹¤Î¥æ¡¼¥¶¡¼¼±ÊÌ»Ò
¤Þ¤¿¤Ï¥°¥ë¡¼¥×¼±Ê̻ҤμèÆÀ

getuid ¤È getgid ¤Ï¤½¤ì¤¾¤ì¡¢¥æ¡¼¥¶¡¼¼±Ê̻Ҥޤ¿¤Ï¥°¥ë¡¼¥×¼±Ê̻ҤòÆÉ¤ß¼è¤ê¤Þ¤¹¡£

getuid : ¥×¥í¥»¥¹¤Î¥æ¡¼¥¶¡¼¼±Ê̻ҤμèÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 getuid uid = getuid()
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ ¥×¥í¥»¥¹¤Î¥æ¡¼¥¶¡¼¼±ÊÌ»Ò (ID)

getgid : ¥×¥í¥»¥¹¤Î¥°¥ë¡¼¥×¼±Ê̻ҤμèÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 getgid gid = getgid()
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ ¥×¥í¥»¥¹¤Î¥°¥ë¡¼¥×¼±ÊÌ»Ò (ID)

Îã : getuid() ¤È getpid()

	INTEGER*4 getuid, getgid, gid, uid
	uid = getuid()
	gid = getgid()
	write(*,*) uid, gid
	end

»²¾È : getuid(2)

hostnm : ¸½ºß¤Î¥Û¥¹¥È̾¤Î³ÍÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 hostnm status = hostnm( name )
name CHARACTER*n ½ÐÎÏ ¸½ºß¤Î¥Û¥¹¥È¤Î̾Á°¡£ n ¤Ï¡¢¥Û¥¹¥È̾¤¬Æþ¤ë¤Î¤Ë½½Ê¬¤ÊÂ礭¤µ¤Ç¤¢¤ë¤³¤È¤¬É¬Í×
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=0: Àµ¾ï, status>0: ¥¨¥é¡¼

Îã : hostnm()

	INTEGER*4 hostnm, status
	character*8 name
	status = hostnm( name )
	write(*,*) '¥Û¥¹¥È̾ = "', name, '"'
	end

»²¾È : gethostname(2)

idate : ¸½ºß¤ÎÆüÉÕ¤òÌ᤹

idate ¤Ë¤Ï 2 ¤Ä¤Î¥Ð¡¼¥¸¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£

-lV77 ¤È¤¤¤¦¥³¥ó¥Ñ¥¤¥é¥ª¥×¥·¥ç¥ó¤Ï¡¢VMS ¥é¥¤¥Ö¥é¥ê¤òÍ׵ᤷ¡¢time() ¤È idate() ¤Î VMS ¥Ð¡¼¥¸¥ç¥ó¤Ë¥ê¥ó¥¯¤·¤Þ¤¹¡£¤³¤Î¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Ê¤¤¤È¡¢¥ê¥ó¥«¡¼¤Ïɸ½à¥Ð¡¼¥¸¥ç¥ó¤Ë¥¢¥¯¥»¥¹¤·¤Þ¤¹¡£(¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤Î VMS ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢f77 ¤Ç¤Ï -lv77 ¥é¥¤¥Ö¥é¥ê¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È»È¤¨¤Þ¤¹¤¬¡¢f95 ¤Ç¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£)

ɸ½à¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¡¢¸½ºß¤Î¥·¥¹¥Æ¥àÆüÉÕ¤ò 1 ¤Ä¤ÎÀ°¿ôÇÛÎó¤ËÆü¡¢·î¡¢Ç¯¤Î½ç¤ÇÆþ¤ì¤Þ¤¹¡£

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call idate( iarray ) ɸ½à¥Ð¡¼¥¸¥ç¥ó
iarray INTEGER*4 ½ÐÎÏ 3 Í×ÁÇ¿ô¤ÎÇÛÎ󡣯ü¡¢·î¡¢Ç¯

Îã : idate (ɸ½à¥Ð¡¼¥¸¥ç¥ó)

demo% cat tidate.f
	INTEGER*4 iarray(3)
	call idate( iarray )
	write(*, "(' ÆüÉÕ¤Ï: ',3i5)" )  iarray
	end
demo% f77 -silent tidate.f 
demo% a.out 
 ÆüÉÕ¤Ï: 10 8 1998
demo% 

VMS idate( ) ¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call idate( m, d, y ) ¡¡¡¡VMS ¥Ð¡¼¥¸¥ç¥ó
m INTEGER*4 ½ÐÎÏ ·î (1 - 12)
d INTEGER*4 ½ÐÎÏ Æü (1 - 7)
y INTEGER*4 ½ÐÎÏ Ç¯ (1 - 99)¡¡2000 ǯ¤Ë¤Ï̵¸ú

VMS idate( ) ¥ë¡¼¥Á¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¥ê¥ó¥¯»þ¤È¥ë¡¼¥Á¥ó¤ò½é¤á¤Æ¸Æ¤Ó½Ð¤·¤Æ¼Â¹Ô¤¹¤ë¤È¤­¤Ë·Ù¹ð¥á¥Ã¥»¡¼¥¸¤¬½ÐÎϤµ¤ì¤Þ¤¹¡£


Ãí - idate( ) ¥ë¡¼¥Á¥ó¤Î VMS ¥Ð¡¼¥¸¥ç¥ó¤Ïǯ¤ò¼¨¤¹¾ì¹ç¤Ë 2 ·å¤ÎÃͤ·¤«ÊÖ¤µ¤Ê¤¤¤Î¤Ç¡¢2000 ǯ¤Ë¤Ï̵¸ú¤Ë¤Ê¤ê¤Þ¤¹¡£¤³¤Î¥ë¡¼¥Á¥ó¤Î½ÐÎϤò»ÈÍѤ·¤ÆÆüÉմ֤κ¹¤ò·×»»¤¹¤ë¥×¥í¥°¥é¥à¤Ï¡¢1999 ǯ 12 ·î 31 Æü°Ê¹ß¤ÏÀµ¤·¤¯µ¡Ç½¤·¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£¤³¤Î idate( ) ¥ë¡¼¥Á¥ó¤ò»ÈÍѤ·¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤Ï¡¢¥ë¡¼¥Á¥ó¤Î½é´ü¸Æ¤Ó½Ð¤·»þ¤Ë¼Â¹Ô»þ·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Æ¥æ¡¼¥¶¡¼¤Ë·Ù¹ð¤·¤Þ¤¹¡£¤³¤Î¥ë¡¼¥Á¥ó¤ÎÂå¤ï¤ê¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤Î¤Ç¤­¤ë¥ë¡¼¥Á¥ó¤È¤·¤Æ¡¢date_and_time( ) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Îã : idate (VMS ¥Ð¡¼¥¸¥ç¥ó)

deom% cat titime.f
	INTEGER*4 m, d, y
	call idate ( m, d, y )
	write (*, "(' ÆüÉÕ¤Ï: ',3i5)" ) m, d, y
	end
demo% f77 -silent tidateV.f -lV77 
"titime.f", line 2: ·Ù¹ð : ¥µ¥Ö¥ë¡¼¥Á¥ó "idate" ¤Ï 2000 ǯ°Ê¹ß¤Ï°ÂÁ´
¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Âå¤ï¤ê¤Ë "date_and_time" ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£
demo% a.out 
À¾Îñ 2000 ǯ°Ê¹ß¤Ï¥µ¥Ö¥ë¡¼¥Á¥ó idate ¤Î 2 ·å¤Îǯ¤ò»ÈÍѤ·¤Æ»þ´Öº¹¤ò·×»»¤¹¤ë
¤Î¤Ï°ÂÁ´¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£
ÆüÉÕ¤Ï: 8 10 94

ieee_flags¡¢ieee_handler¡¢sigfpe :
IEEE »»½Ñ±é»»

¤³¤ì¤é¤ÎÉû¥×¥í¥°¥é¥à¤Ï¡¢Fortran ¥×¥í¥°¥é¥à¤Ç ANSI/IEEE µ¬³Ê 754-1985 ¤Î»»½Ñ±é»»µ¡Ç½¤ò½½Ê¬¤ËÍøÍѤ¹¤ë¤¿¤á¤ËɬÍפʥ⡼¥É¤È¾õÂÖ¤òÄ󶡤·¤Þ¤¹¡£¤³¤ì¤é¤ÎÉû¥×¥í¥°¥é¥à¤Ï´Ø¿ô ieee_flags(3M)¡¢ieee_handler(3M)¡¢¤ª¤è¤Ó sigfpe(3) ¤ÈÌ©ÀܤËÂбþ¤·¤Æ¤¤¤Þ¤¹¡£

Í×Ìó

ɽ 5   IEEE »»½Ñ±é»»¥µ¥Ý¡¼¥È¥ë¡¼¥Á¥ó
ieeer = ieee_flags ( action¡¢mode¡¢in¡¢out )
ieeer = ieee_handler (action¡¢exception¡¢hdl )
ieeer = sigfpe ( code, hdl )
action CHARACTER ÆþÎÏ
code sigfpe_code_type ÆþÎÏ
mode CHARACTER ÆþÎÏ
in CHARACTER ÆþÎÏ
exception CHARACTER ÆþÎÏ
hdl sigfpe_handler_type ÆþÎÏ
out CHARACTER ½ÐÎÏ
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ

¤³¤ì¤é¤Î´Ø¿ô¤ò¸ú²ÌŪ¤Ë»ÈÍѤ¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Ø¿ôÃÍ·×»»¥¬¥¤¥É¡Ù¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

sigfpe ¤ò»ÈÍѤ¹¤ë¾ì¹ç¡¢ÉâÆ°¾®¿ôÅÀ¾õÂ֥쥸¥¹¥¿Æâ¤ÎÂбþ¤¹¤ë¥È¥é¥Ã¥×²Äǽ¥Þ¥¹¥¯¥Ó¥Ã¥È¤ò¥æ¡¼¥¶¡¼¤¬ÀßÄꤹ¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¾ÜºÙ¤Ï¡ØSPARC ¥¢¡¼¥­¥Æ¥¯¥Á¥ã¥Þ¥Ë¥å¥¢¥ë¥Ð¡¼¥¸¥ç¥ó 8¡Ù(¥È¥Ã¥Ñ¥ó´©) ¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£libm ´Ø¿ô¤Î ieee_handler ¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¥æ¡¼¥¶¡¼¤ËÂå¤ï¤Ã¤Æ¥È¥é¥Ã¥×²Äǽ¥Þ¥¹¥¯¥Ó¥Ã¥È¤òÀßÄꤷ¤Æ¤¯¤ì¤Þ¤¹¡£

mode ¤Èexception ¤¬¼õ¤±ÉÕ¤±¤ëʸ»ú·¿¤Î¥­¡¼¥ï¡¼¥É¤Ï¡¢action ¤ÎÃͤˤè¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£

ɽ 6   ieee_flags (action, mode, in, out)
action = 'clearall'
mode¡¢in¡¢out ¤Ï̤»ÈÍÑ¡£Ìá¤êÃÍ¤Ï 0
action = 'clear'
 ÉâÆ°¾®¿ôÅÀ¤Î mode ¤È in¤ò¥¯¥ê¥¢¡¼¤¹¤ë¡£ 
out ¤Ï̤»ÈÍÑ¡£Ìá¤êÃÍ¤Ï 0
mode = 'direction'
mode = 'precision' (x86 ¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Î¤ß)
mode = 'exception'
 
 
in = 'inexact'					
     'division'					
     'underflow'					
     'overflow'					
     'invalid'				
     'all'					
     'common'
                 ¤Î¤¤¤º¤ì¤«
action = 'set' 
 ÉâÆ°¾®¿ôÅÀ¤Î mode ¤È in ¤òÀßÄꤹ¤ë¡£ 
out ¤Ï̤»ÈÍÑ¡£Ìá¤êÃÍ¤Ï 0
mode = 'direction'
in = 'nearest'					
     'tozero'					
     'positive'					
     'negative'
                 ¤Î¤¤¤º¤ì¤«
mode = 'precision'
(x86 ¤Î¤ß)
in = 'extended'				
     'double'					
     'single' 
                 ¤Î¤¤¤º¤ì¤«
mode = 'exception'
in = 'inexact'					
     'division'					
     'underflow'					
     'overflow'					
     'invalid'					
     'all'  					
     'common'
                 ¤Î¤¤¤º¤ì¤«
action = 'get'
mode ¤ÎÀßÄêÃͤòÄ´ºº¤¹¤ë¡£ in¡¢out ¤Ï¡¢¶õÇò¤Ë¤¹¤ë¤«¡¢¥Æ¥¹¥ÈÂоݤÎÀßÄêÃͤΠ1 ¤Ä¤òÀßÄꤹ¤ë¡£ in¡¢out ¤ËÀßÄêÃͤòÀßÄꤹ¤ë¤È¡¢mode ¤ÎÀßÄêÃͤ˽¾¤Ã¤¿¸½ºß¤ÎÀßÄêÃͤޤ¿¤Ï `not available' (̵¸ú) ¤¬Ìá¤ë¡£ ´Ø¿ô¤Ï 0 ¤òÌ᤹¡£¤¿¤À¤·¡¢mode = 'exception' ¤Î¾ì¹ç¤Ï¡¢¸½ºß¤ÎÎã³°¥Õ¥é¥°¤òÌ᤹¡£
mode = 'direction'
out = 'nearest'					
     'tozero'					
     'positive'					
     'negative'
                  ¤Î¤¤¤º¤ì¤«
mode = 'precision'
(x86 ¤Î¤ß)
out = 'extended'					
     'double'					
     'single'
                  ¤Î¤¤¤º¤ì¤«
mode = 'exception'
out = 'inexact'					
     'division'					
     'underflow'					
     'overflow'					
     'invalid'					
     'all' 					
     'common'
                  ¤Î¤¤¤º¤ì¤«

ɽ 7   ieee_handler (action, in, out)
action = 'clear'
in ¤Ë»ØÄꤷ¤¿¥æ¡¼¥¶¡¼Îã³°½èÍý¤ò¥¯¥ê¥¢¡¼¤¹¤ë¡£ out ¤Ï̤»ÈÍÑ¡£
in = 'inexact'					
     'division'					
     'underflow'					
     'overflow'					
     'invalid'					
     'all'   					
     'common'
                  ¤Î¤¤¤º¤ì¤«
action = 'set'
in ¤Ë¥æ¡¼¥¶¡¼Îã³°½èÍý¤òÀßÄꤹ¤ë¡£ out ¤Ï¡¢¥ë¡¼¥Á¥ó¤Î¥¢¥É¥ì¥¹¡¢¤Þ¤¿¤Ï
f77/f77_floating point.h ¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë SIGFPE_DEFAULT¡¢SIGFPE_ABORT ¤Þ¤¿¤Ï SIGFPE_IGNORE¡£
in = 'inexact' 					
     'division'					
     'underflow' 					
     'overflow' 					
     'invalid' 					
     'all'   					
     'common'
                  ¤Î¤¤¤º¤ì¤«

Îã 1 : (¥Ï¡¼¥É¥¦¥§¥¢¤¬Êý¸þ¤ò¤â¤Ä´Ý¤á¥â¡¼¥É¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤ò½ü¤¤¤Æ) ´Ý¤áÊý¸þ¤ò¥¼¥í¤ÎÊý¸þ¤ËÀßÄꤷ¤Þ¤¹¡£

	INTEGER*4 ieeer 
	character*1 mode, out, in 
	ieeer = ieee_flags( 'set', 'direction', 'tozero', out ) 

Îã 2 : ´Ý¤áÊý¸þ¤ò¥¯¥ê¥¢¡¼¤·¤Þ¤¹ (¥Ç¥Õ¥©¥ë¥È¤ÎÊý¸þ¡¢¤Ä¤Þ¤ê»Í¼Î¸ÞÆþ¤·¤Æ´Ý¤á¤Þ¤¹)¡£

	character*1 out, in 
	ieeer = ieee_flags('clear','direction', in, out )

Îã 3 : ÀßÄꤵ¤ì¤Æ¤¤¤ëÎ㳰ȯÀ¸¥Ó¥Ã¥È¤ò¤¹¤Ù¤Æ¥¯¥ê¥¢¡¼¤·¤Þ¤¹¡£

	character*18 out 
	ieeer = ieee_flags( 'clear', 'exception', 'all', out )

Îã 4 : Îã 3 ¤Ç¥ª¡¼¥Ð¡¼¥Õ¥í¡¼Îã³°¤¬È¯À¸¤¹¤ë¤È¡¢¼¡¤Î¤è¤¦¤Ë¸¡½Ð¤·¤Þ¤¹¡£

	character*18 out 
	ieeer = ieee_flags( 'get', 'exception', 'overflow', out )
	if (out .eq. 'overflow' ) stop 'overflow'

¾åµ­¤ÎÎã¤Ï¡¢out ¤ò overflow ¤Ë¤·¡¢ieeer ¤ò 25 ¤ËÀßÄꤷ¤Æ¤¤¤Þ¤¹¡£Æ±Íͤ˥³¡¼¥Ç¥£¥ó¥°¤¹¤ì¤Ð¡¢invalid ¤ä inexact ¤Î¤è¤¦¤ÊÎã³°¤ò¸¡½Ð¤Ç¤­¤Þ¤¹¡£

Îã 5 : handl.f ¤ÎÆâÍÆ¡£¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤ò½ñ¤­¹þ¤ß¡¢»ÈÍѤ·¤Æ¤¤¤Þ¤¹ (f77)¡£

	external hand
	real r / 14.2 /,  s / 0.0 /
	i = ieee_handler( 'set', 'division', hand ) 
	t = r/s 
	end
 
	INTEGER*4 function hand ( sig, sip, uap )
	INTEGER*4 sig, address
	structure /fault/
	INTEGER*4 address
	end structure
	structure /siginfo/
	INTEGER*4 si_signo
	INTEGER*4 si_code
	INTEGER*4 si_errno
	record /fault/ fault
	end structure
	record /siginfo/ sip
	address = sip.fault.address
	write (*,10) address
 10	format('Îã³°¤Îµ¯¤­¤¿¥¢¥É¥ì¥¹ (16¿Ê) ', z8 )
	end

address ¤È function hand ¤ÎÀë¸À¤ò INTEGER*8 ¤ËÊѹ¹¤¹¤ë¤È¡¢64 ¥Ó¥Ã¥È¤Î SPARC V9 ´Ä¶­ (-xarch=v9) ¤ÇÎã 5 ¤¬¼Â¹Ô¤Ç¤­¤Þ¤¹¡£

¡Ø¿ôÃÍ·×»»¥¬¥¤¥É¡Ù¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
»²¾È : floatingpoint(3)¡¢signal(3)¡¢sigfpe(3)¡¢f77_floatingpoint(3F)¡¢ieee_flags(3M)¡¢ieee_handler(3M)

f77_floatingpoint.h : Fortran IEEE ÄêµÁ

¥Ø¥Ã¥À¡¼¥Õ¥¡¥¤¥ë f77_floatingpoint.h ¤Ï¡¢ANSI/IEEE µ¬³Ê 754-1985 ¤Ë½¾¤Ã¤Æ¡¢É¸½àÉâÆ°¾®¿ôÅÀ¤Î¼ÂÁõ¤Ë»ÈÍѤµ¤ì¤ëÄê¿ô¤È·¿¤òÄêµÁ¤·¤Þ¤¹¡£

¤³¤Î¥Õ¥¡¥¤¥ë¤Î FORTRAN 77 ¥½¡¼¥¹¥×¥í¥°¥é¥à¤Ø¤Î¥¤¥ó¥¯¥ë¡¼¥É¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¹Ô¤¤¤Þ¤¹¡£

#include "f77_floatingpoint.h"

¤³¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ¹¤ë¤Ë¤Ï¡¢Fortran ¤Î¥³¥ó¥Ñ¥¤¥ëÁ°¤ËÁ°½èÍý¤¬É¬Íפˤʤê¤Þ¤¹¡£¤³¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤ò»²¾È¤¹¤ë¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ï¡¢Ì¾Á°¤Î³ÈÄ¥»Ò¤¬ .F¡¢f90 ¤Þ¤¿¤Ï .F95 ¤Î¾ì¹ç¤Ë¡¢¼«Æ°Åª¤ËÁ°½èÍý¤¬¹Ô¤ï¤ì¤Þ¤¹¡£

Fortran 95 ¥×¥í¥°¥é¥à¤Ï¡¢¥Õ¥¡¥¤¥ë /floatingpoint.h ¤òÂå¤ï¤ê¤Ë¥¤¥ó¥¯¥ë¡¼¥É¤·¤Þ¤¹¡£

IEEE ´Ý¤á¥â¡¼¥É

fp_direction_type IEEE ´Ý¤áÊý¸þ¥â¡¼¥É¤Î·¿¡£Îóµó¤Î½ç½ø¤Ï¥Ï¡¼¥É¥¦¥§¥¢¤Ë¤è¤ê°Û¤Ê¤ë¤Î¤ÇÃí°Õ¤¹¤ë¤³¤È¡£

SIGFPE ½èÍý

sigfpe_code_type SIGFPE ¥³¡¼¥É¤Î·¿
sigfpe_handler_type ¥æ¡¼¥¶¡¼ÄêµÁ¤Î SIGFPE Îã³°¥Ï¥ó¥É¥é¤Î·¿¡£ÆÃÄê¤Î SIGFPE ¥³¡¼¥É¤ò½èÍý¤¹¤ë¤¿¤á¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¡£
SIGFPE_DEFAULT ¥Ç¥Õ¥©¥ë¥È¤Î SIGFPE Îã³°½èÍý¤ò»Ø¼¨¤¹¤ë¥Þ¥¯¥í¡£IEEE Îã³°¡£¥Ç¥Õ¥©¥ë¥È¤Î·ë²Ì¤Ç¼Â¹Ô¤ò·Ñ³¤µ¤»¡¢Â¾¤Î SIGFPE ¥³¡¼¥É¤ËÂФ·¤Æ¤Ï¡¢¼Â¹Ô¤ò°Û¾ï½ªÎ»¤µ¤»¤ë¡£
SIGFPE_IGNORE ÂåÂØ SIGFPE Îã³°½èÍý¤ò»Ø¼¨¤¹¤ë¥Þ¥¯¥í¡£Ìµ»ë¤·¤Æ¼Â¹Ô¤ò·Ñ³¤µ¤»¤ë¡£
SIGFPE_ABORT ÂåÂØ SIGFPE Îã³°½èÍý¤ò»Ø¼¨¤¹¤ë¥Þ¥¯¥í¡£¥³¥¢¥À¥ó¥×¤ò¼è¤ê¡¢¼Â¹Ô¤ò°Û¾ï½ªÎ»¤µ¤»¤ë¡£

IEEE Îã³°½èÍý

N_IEEE_EXCEPTION IEEE ÉâÆ°¾®¿ôÅÀÎã³°¤Î¿ô
fp_exception_type N_IEEE_EXCEPTION ¸Ä¤ÎÎã³°¤Î·¿¡£³ÆÎã³°¤Ï¥Ó¥Ã¥ÈÈÖ¹æ¤òÍ¿¤¨¤é¤ì¤ë¡£
fp_exception_field_type fp_exception_type ¤Ë¤è¤êÈֹ椬Ϳ¤¨¤é¤ì¤¿ IEEE Îã³°¤ËÂбþ¤¹¤ë N_IEEE_EXCEPTION ¸Ä¤Î¥Ó¥Ã¥È¤À¤±¤ò¤È¤ë¤³¤È¤òÌÜŪ¤È¤·¤¿·¿¡£¤¿¤È¤¨¤Ð fp_inexact ¤ÏºÇ²¼°Ì¥Ó¥Ã¥È¤ËÂбþ¤·¡¢fp_invalid ¤ÏºÇ²¼°Ì¤«¤é 5 ÈÖÌܤΥӥåȤËÂбþ¤¹¤ë¡£Áàºî¤Ë¤è¤Ã¤Æ¤Ï 2 ¤Ä°Ê¾å¤ÎÎã³°¤òÀßÄê¤Ç¤­¤ë¡£

IEEE ¥¯¥é¥¹Ê¬Îà

fp_class_type IEEE ÉâÆ°¾®¿ôÅÀ¤ÎÃͤȵ­¹æ¤Î¥¯¥é¥¹¤ÎʤÓ

¡Ø¿ôÃÍ·×»»¥¬¥¤¥É¡Ù¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

»²¾È : ieee_environment(3M)¡¢f77_ieee_environment(3F)

index¡¢rindex¡¢lnblnk : ÉôʬÎó¤Îº÷°ú¤Þ¤¿¤ÏŤµ

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ëʸ»úÎó¤Ë¤è¤ëõº÷¤ò¹Ô¤¤¤Þ¤¹¡£

index (a1, a2) ʸ»úÎó a1 ¤ÎÃæ¤ÇºÇ½é¤Ë½Ð¸½¤¹¤ëʸ»úÎó a2 ¤Îº÷°ú
rindex (a1, a2) ʸ»úÎó a1 ¤ÎÃæ¤ÇºÇ¸å¤Ë½Ð¸½¤¹¤ëʸ»úÎó a2 ¤Îº÷°ú
lnblnk (a1) ʸ»úÎó a1 ¤ÎÃæ¤ÎºÇ¸å¤Î¶õÇò°Ê³°¤Îʸ»ú¤Îº÷°ú

index ¤Ï°Ê²¼¤Î·Á¼°¤ò¤È¤ê¤Þ¤¹¡£

index : ʸ»úÎó¤ÎÃæ¤ÇºÇ½é¤Ë½Ð¸½¤¹¤ëÉôʬʸ»úÎó

index ¤Ï¡¢ÁȤ߹þ¤ß´Ø¿ô¤Ç¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

n = index( a1, a2 )
a1 CHARACTER ÆþÎÏ Ê¸»úÎó
a2 CHARACTER ÆþÎÏ ÉôʬÎó
Ìá¤êÃÍ INTEGER ½ÐÎÏ n>0: a1 ¤ÎÃæ¤ÇºÇ½é¤Ë½Ð¸½¤¹¤ë a2 ¤Îº÷°ú
n=0: a1 ¤ÎÃæ¤Ë a2 ¤¬½Ð¸½¤·¤Ê¤¤

INTEGER*8 ¤ÈÀë¸À¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢64 ¥Ó¥Ã¥È´Ä¶­ÍѤ˥³¥ó¥Ñ¥¤¥ë¤µ¤ì¡¢¤µ¤é¤Ëʸ»úÊÑ¿ô a1 ¤¬Èó¾ï¤ËÂ礭¤Êʸ»úÎó¤Ç¤¢¤ë¤È¤­¤Ë (2 ¥®¥¬¥Ð¥¤¥È¤òͤ¨¤ë¤â¤Î)¡¢index( ) ¤Ï INTEGER*8 ÃͤòÌᤷ¤Þ¤¹¡£

rindex : ʸ»úÎó¤ÎÃæ¤ÇºÇ¸å¤Ë½Ð¸½¤¹¤ëÉôʬʸ»úÎó

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 rindex n = rindex( a1, a2 )
a1 CHARACTER ÆþÎÏ Ê¸»úÎó
a2 CHARACTER ÆþÎÏ ÉôʬÎó
Ìá¤êÃÍ INTEGER*4 ¤Þ¤¿¤Ï INTEGER*8 ½ÐÎÏ n>0: a1 ¤ÎÃæ¤ÇºÇ¸å¤Ë½Ð¸½¤¹¤ë a2 ¤Îº÷°ú n=0: a1 ¤ÎÃæ¤Ë a2 ¤¬½Ð¸½¤·¤Ê¤¤¡£ 64 ¥Ó¥Ã¥È´Ä¶­¤Î¾ì¹ç¤Ï¡¢INTEGER*8 ¤¬Ìá¤ë¡£

lnblnk : ʸ»úÎó¤ÎÃæ¤ÎºÇ¸å¤Î¶õÇò°Ê³°¤Îʸ»ú

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

n = lnblnk( a1 )
a1 CHARACTER ÆþÎÏ Ê¸»úÎó
Ìá¤êÃÍ INTEGER*4 ¤Þ¤¿¤Ï INTEGER*8 ½ÐÎÏ n>0: a1 ¤ÎÃæ¤ÎºÇ¸å¤Î¶õÇò°Ê³°¤Îʸ»ú¤Îº÷°ú n=0: a1 ¤Ï¤¹¤Ù¤Æ¶õÇò°Ê³°¤Îʸ»ú¡£ 64 ¥Ó¥Ã¥È´Ä¶­¤Î¾ì¹ç¤Ï¡¢INTEGER*8 ¤¬Ìá¤ë¡£

Îã : index()¡¢rindex()¡¢lnblnk()

*				 123456789012345678901
	character s*24 / 'abcPDQxyz...abcPDQxyz' /
	INTEGER*4 declen, index, first, last, len, lnblnk, rindex
	declen = len( s )
	first = index( s, 'abc' )
	last = rindex( s, 'abc' )
	lastnb = lnblnk( s )
	write(*,*) declen, lastnb
	write(*,*) first, last
	end
demo% f77 -silent tindex.f 
demo% a.out 
24 21   <- ÁȤ߹þ¤ß´Ø¿ô len() ¤¬Àë¸À¤µ¤ì¤¿ S ¤ÎŤµ¤òÊÖ¤¹¤¿¤á¡¢declen ¤Ï 24
1 13 


Ãí - 64 ¥Ó¥Ã¥È´Ä¶­¤Çưºî¤¹¤ë¤è¤¦¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥×¥í¥°¥é¥à¤Ï¡¢Èó¾ï¤ËÂ礭¤Êʸ»úÎó¤ò½èÍý¤¹¤ë¤Ë¤Ï index¡¢rindex¡¢¤ª¤è¤Ó lnblnk (¤ª¤è¤ÓÊÖ¤µ¤ì¤ëÊÑ¿ô) INTEGER*8 ¤òÀë¸À¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

inmax : Àµ¤ÎÀ°¿ô¤ÎºÇÂçÃͤÎÊÖµÑ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

m = inmax()
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ Àµ¤ÎÀ°¿ô¤ÎºÇÂçÃÍ

Îã : inmax

	 INTEGER*4 inmax, m
	 m = inmax()
	 write(*,*) m
	 end
demo% f77 -silent tinmax.f 
demo% a.out 
   2147483647 
demo% 

»²¾È : libm_single(3f)¡¢libm_double(3f)

»²¾È :¡ØFORTRAN 77 ¸À¸ì¥ê¥Õ¥¡¥ì¥ó¥¹¡Ù¤Ëµ­ºÜ¤µ¤ì¤¿¡¢ÁȤ߹þ¤ß´Ø¿ô ephuge ( )

ioinit : Æþ½ÐÎÏ¥×¥í¥Ñ¥Æ¥£¤Î½é´ü²½

IOINIT ¥ë¡¼¥Á¥ó (FORTRAN 77 ¤Î¤ß) ¤Ï¡¢IOINIT ¸Æ¤Ó½Ð¤·¤Î¸å¤Ë³«¤«¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢Æþ½ÐÎÏ¥Õ¥¡¥¤¥ë¤Î¥×¥í¥Ñ¥Æ¥£¤ò³ÎÄꤷ¤Þ¤¹¡£IOINIT ¤ÎÀ©¸æ¤¹¤ëÆþ½ÐÎÏ¥×¥í¥Ñ¥Æ¥£¤Ï¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

IOINIT ¤Ï¼¡¤Î¤³¤È¤ò¹Ô¤¤¤Þ¤¹¡£

Æþ½ÐÎÏ¥×¥í¥Ñ¥Æ¥£¥Õ¥¡¥¤¥ë¤Î·Ñ³

Æþ½ÐÎÏ¥×¥í¥Ñ¥Æ¥£¥Õ¥¡¥¤¥ë¤ÏÀܳ¤¬¤¢¤ë¸Â¤êŬÍѤµ¤ì¤Þ¤¹¡£ÁõÃÖ¤òÊĤ¸¤ë¤È¡¢¥×¥í¥Ñ¥Æ¥£¤ÏŬÍѤµ¤ì¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£¤¢¤é¤«¤¸¤á³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ëÁõÃÖ 5 ¤È 6 ¤ÏÎã³°¤Ç¡¢¤½¤ì¤é¤ÎÁõÃ֤ˤϥ­¥ã¥ê¥Ã¥¸À©¸æ¤È¶õÇò/¥¼¥í¤¬¾ï¤ËŬÍѤµ¤ì¤Þ¤¹¡£

ÆâÉô¥Õ¥é¥°

IOINIT ¤Ï¡¢¼Â¹Ô»þ¤ÎÆþ½ÐÎÏ¥·¥¹¥Æ¥à¤ÈÄÌ¿®¤¹¤ë¤¿¤á¤Ë̾Á°ÉÕ¤­¶¦ÄÌ¥Ö¥í¥Ã¥¯¤ò»ÈÍѤ·¤Þ¤¹¡£IOINIT ¤Ï¡¢¼¡¤Î̾Á°ÉÕ¤­¶¦ÄÌ¥Ö¥í¥Ã¥¯¤ÈƱÅù¤ËÆâÉô¥Õ¥é¥°¤ò³ÊǼ¤·¤Þ¤¹¡£

	INTEGER*2 IEOF, ICTL, IBZR 
	COMMON /_ _IOIFLG/ IEOF, ICTL, IBZR ! ¥æ¡¼¥¶¡¼¤Î̾Á°¶õ´Ö¤Ç¤Ï¤Ê¤¤

3.0.1 °ÊÁ°¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï¡¢Ì¾Á°ÉÕ¤­¶¦ÄÌ¥Ö¥í¥Ã¥¯¤Ï IOIFLG ¤È¸Æ¤Ð¤ì¤Æ¤¤¤Þ¤·¤¿¡£¥æ¡¼¥¶¡¼ÄêµÁ¤Î¶¦ÄÌ¥Ö¥í¥Ã¥¯¤È¤Î¶¥¹ç¤òËɤ°¤¿¤á¡¢¤³¤Î̾Á°¤ò _ _IOIFLG ¤ÈÊѹ¹¤·¤Þ¤·¤¿¡£

¥½¡¼¥¹¥³¡¼¥É

IOINIT ¤Î°ìÈÌŪ¤Ê¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¥æ¡¼¥¶¡¼¤ÎÍ×µá¤Ë±þ¤¸¤­¤ì¤Ê¤¤¾ì¹ç¤¬¤¢¤ë¤¿¤á¡¢¥½¡¼¥¹¥³¡¼¥É¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï Fortran 77 ¤Ç½ñ¤«¤ì¤Æ¤ª¤ê¡¢¼¡¤Î¤è¤¦¤ËÇÛÃÖ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ioinit ¤Î»ÈÍÑË¡

ioinit ¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call ioinit ( cctl¡¢bzro¡¢apnd¡¢prefix¡¢vrbose )
cctl LOGICAL ÆþÎÏ ¿¿ = ¤¹¤Ù¤Æ¤Î½ñ¼°ÉÕ¤­½ÐÎϤËÂФ·¤Æ¥­¥ã¥ê¥Ã¥¸À©¸æ¤¬Ç§¼±¤µ¤ì¤ë (ÁõÃÖ 0 ¤Ï½ü¤¯)
bzro LOGICAL ÆþÎÏ ¿¿ = ¸å³¤Î¶õÇò¤ÈËä¤á¹þ¤ß¶õÇò¤ò¥¼¥í¤È¤·¤Æ
°·¤¦
apnd LOGICAL ÆþÎÏ ¿¿ = ¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤Ç¥Õ¥¡¥¤¥ë¤ò³«¤¯ (ÄɲÃ)
prefix CHARACTER*n ÆþÎÏ ¶õÇò°Ê³°¤Îʸ»ú = ÁõÃÖ NN ¤Ç prefixNN
¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤·¡¢³«¤¯
vrbose LOGICAL ÆþÎÏ ¿¿ = ioinit ¤Î¥¢¥¯¥Æ¥£¥Ó¥Æ¥£¤¬È¯À¸¤¹¤ë¤¿¤Ó¤Ë¤½¤ì¤òÊó¹ð¤¹¤ë

»²¾È : getarg(3F)¡¢getenv(3F)

À©¸Â

¼¡¤Î¤è¤¦¤ÊÀ©¸Â¤¬¤¢¤ê¤Þ¤¹¡£

°ú¿ô¤ÎÀâÌÀ

ioinit ¤Î°ú¿ô¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

cctl (¥­¥ã¥ê¥Ã¥¸À©¸æ)

¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥­¥ã¥ê¥Ã¥¸À©¸æ¤Ï¤É¤ÎÏÀÍýÁõÃ֤Ǥâǧ¼±¤µ¤ì¤Þ¤»¤ó¡£cctl ¤¬ .true. ¤Î¾ì¹ç¡¢¥­¥ã¥ê¥Ã¥¸À©¸æ¤Ï¡¢¿ÇÃÇÍÑ¥Á¥ã¥Í¥ë¤Ç¤¢¤ëÁõÃÖ 0 ¤ò½ü¤¤¤¿¤¹¤Ù¤Æ¤ÎÏÀÍýÁõÃÖ¤ËÂФ¹¤ë½ñ¼°ÉÕ¤­½ÐÎϤÇǧ¼±¤µ¤ì¤Þ¤¹¡£cctl ¤¬ .false. ¤Î¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄê¤ËÌá¤ê¤Þ¤¹¡£

bzro (¶õÇò)

¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢ÆþÎϥǡ¼¥¿¥Õ¥£¡¼¥ë¥ÉÆâ¤Î¸å³¤Î¶õÇò¤ÈËä¤á¹þ¤ß¶õÇò¤Ï̵»ë¤µ¤ì¤Þ¤¹¡£bzro ¤¬ .true. ¤Î¾ì¹ç¡¢¤³¤ì¤é¤Î¶õÇò¤Ï¥¼¥í¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£bzro ¤ò .false. ¤Ë¤·¤¿¾ì¹ç¤Ï¡¢¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄê¤ËÌá¤ê¤Þ¤¹¡£

apnd (ÄɲÃ)

¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢½ç¼¡¥¢¥¯¥»¥¹ÍѤ˳«¤«¤ì¤¿¥Õ¥¡¥¤¥ë¤ÏÀèÆ¬¤Ë°ÌÃÖÉÕ¤±¤é¤ì¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¤Î´û¸¥Ç¡¼¥¿¤Ë½ñ¤­¹þ¤ß¤òÄɲ乤ë¾ì¹ç¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯¤Ë¥Ý¥¤¥ó¥¿¤ò°ÌÃÖÉÕ¤±¤Æ¥Õ¥¡¥¤¥ë¤ò³«¤¯¤³¤È¤¬É¬Íפˤʤä¿¤ê¡¢ÊØÍø¤Ç¤¢¤Ã¤¿¤ê¤·¤Þ¤¹¡£apnd ¤ò .true. ¤Ë¤·¤¿¾ì¹ç¡¢¤É¤ÎÏÀÍýÁõÃ֤Ǥ¢¤Ã¤Æ¤â¡¢¥Õ¥¡¥¤¥ë¤ò³«¤¤¤¿»þ¤Ë¥Ý¥¤¥ó¥¿¤Ï¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤Ë°ÌÃÖÉÕ¤±¤é¤ì¤Þ¤¹¡£apnd ¤ò .false. ¤Ë¤·¤¿¾ì¹ç¤Ï¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄê¤ËÌá¤ê¤Þ¤¹¡£

prefix (¼«Æ°¥Õ¥¡¥¤¥ë·ë¹ç)

°ú¿ô prefix ¤¬¶õÇò°Ê³°¤Îʸ»úÎó¤Ê¤é¤Ð¡¢prefixNN ¤È¤¤¤¦·Á¼°¤Î̾Á°¤¬¥×¥í¥°¥é¥à´Ä¶­Æâ¤Ç¸¡º÷¤µ¤ì¤Þ¤¹¡£¸¡º÷¤µ¤ì¤¿¤½¤ì¤¾¤ì¤Î̾Á°¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤ëÃͤϡ¢ÏÀÍýÁõÃÖ NN ¤ò½ñ¼°ÉÕ¤­½ç¼¡¥¢¥¯¥»¥¹ÍѤ˳«¤¯¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£

¤³¤Î¸¡º÷¤ÈÀܳ¤Ï¡¢0 ¤«¤é 19 ´Ö¤Î 0 ¤È 19 ¤ò´Þ¤à NN ¤ËÂФ·¤Æ¤Î¤ß¹Ô¤ï¤ì¤Þ¤¹¡£19 ¤è¤êÂ礭¤¤ NN ¤ËÂФ·¤Æ¤Ï²¿¤â¹Ô¤ï¤ì¤Þ¤»¤ó¡£¡Ö¥½¡¼¥¹¥³¡¼¥É¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

vrbose (IOINIT ¤Î³èư¾õ¶·)

°ú¿ô vrbose ¤ò .true. ¤Ë¤·¤¿¾ì¹ç¡¢ioinit ¤Ï¼«Ê¬¼«¿È¤Î³èư¾õ¶·¤Ë¤Ä¤¤¤ÆÊó¹ð¤·¤Þ¤¹¡£

Îã : ¥×¥í¥°¥é¥à myprogram ¤Ï¼¡¤Î¤è¤¦¤Ê¸Æ¤Ó½Ð¤·¤ò¹Ô¤¤¤Þ¤¹¡£

	call ioinit( .true., .false., .false., 'FORT', .false.)

¥Õ¥¡¥¤¥ë̾¤Î³ä¤êÅö¤Æ¤Ï¡¢¾¯¤Ê¤¯¤È¤â¼¡¤Î 2 ¤Ä¤ÎÊýË¡¤Ç¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

sh:

demo$ FORT01=mydata 
demo$ FORT12=myresults 
demo$ export FORT01 FORT12 
demo$ myprogram 

csh:

demo% setenv FORT01 mydata 
demo% setenv FORT12 myresults 
demo% myprogram 

¤É¤Á¤é¤ÎÊýË¡¤ò»ÈÍѤ·¤Æ¤â¡¢¾åµ­¤ÎÎã¤Î ioinit ¸Æ¤Ó½Ð¤·¤«¤é¤Ï°Ê²¼¤Î·ë²Ì¤¬ÆÀ¤é¤ì¤Þ¤¹¡£

Îã : ioinit() ¡Ý ʤӤȥ³¥ó¥Ñ¥¤¥ë

demo% cat tioinit.f
    character*3  s
    call ioinit( .true., .false., .false., 'FORT', .false.)
    do i = 1, 2
    read( 1, '(a3,i4)')  s, n
    write( 12, 10 ) s, n
    end do
10  format(a3,i4)
    end
demo% cat tioinit.data 
abc 123 
PDQ 789 
demo% f77 -silent tioinit.f 
demo%  

sh ¤Þ¤¿¤Ï csh ¤ò»ÈÍѤ·¤Æ°Ê²¼¤Î¤è¤¦¤Ë´Ä¶­ÊÑ¿ô¤òÀßÄꤷ¤Æ¤¯¤À¤µ¤¤¡£

sh:

demo$ FORT01=tioinit.data 
demo$ FORT12=tioinit.au 
demo$ export FORT01 FORT12
demo$ 

ioinit()

csh:

demo% setenv FORT01 tioinit.data 
demo% setenv FORT12 tioinit.au 

ioinit()

¥Æ¥¹¥È¤È¼Â¹Ô:

demo% a.out 
demo% cat tioinit.au 
abc 123 
PDQ 789 

ioinit()

itime : ¸½ºß¤Î»þ¹ï

itime ¤Ï¡¢¸½ºß¤Î¥·¥¹¥Æ¥à»þ¹ï¤Î»þ¡¢Ê¬¡¢ÉäòÀ°¿ôÇÛÎó¤ËÆþ¤ì¤Þ¤¹¡£¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call itime( iarray )
iarray INTEGER*4 ½ÐÎÏ 3 Í×ÁǤÎÇÛÎó: iarray(1) = »þ iarray(2) = ʬ iarray(3) = ÉÃ

Îã : itime

demo% cat titime.f
	INTEGER*4 iarray(3)
	call itime( iarray )
	write (*, "(' »þ¹ï¤Ï: ',3i5)" )  iarray
	end
demo% f77 -silent titime.f 
demo% a.out 
 »þ¹ï¤Ï: 15 42 35 

»²¾È : time(3f)¡¢ctime(3F)¡¢fdate(3F)

kill : ¥×¥í¥»¥¹¤Ø¤Î¥·¥°¥Ê¥ë¤ÎÁ÷¿®

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

status = kill( pid, signum )
pid INTEGER*4 ÆþÎÏ ¥æ¡¼¥¶¡¼¤Î¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹¼±ÊÌ»Ò
signum INTEGER*4 ÆþÎÏ Í­¸ú¤Ê¥·¥°¥Ê¥ëÈֹ档
signal(3) ¤ò»²¾È
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=0: Àµ¾ï status>0: ¥¨¥é¡¼¥³¡¼¥É

Îã (³ºÅöÉôʬ¤Î¤ß): kill() ¤ò»ÈÍѤ·¤Æ¥á¥Ã¥»¡¼¥¸¤òÁ÷¤ê¤Þ¤¹¡£

	INTEGER*4 kill, pid, signum 
*	... 
	status = kill( pid, signum ) 
	if ( status .ne. 0 ) stop 'kill: ¥¨¥é¡¼' 
	write(*,*) '¥·¥°¥Ê¥ë ', signum, '¤ò¥×¥í¥»¥¹ ', pid, ' ¤ËÁ÷ÉÕ¤·¤Þ¤·¤¿'
	end 

´Ø¿ô¤Ï¡¢signum ¤È¤¤¤¦À°¿ô·¿¤ÎÈÖ¹æ¤Ç¸½¤ï¤µ¤ì¤ë¥·¥°¥Ê¥ë¤ò pid ¤È¤¤¤¦¥×¥í¥»¥¹¤ËÁ÷¤ê¤Þ¤¹¡£Í­¸ú¤Ê¥·¥°¥Ê¥ëÈÖ¹æ¤Ï¡¢/usr/include/sys/signal.h ¤È¤¤¤¦ C ¸À¸ì¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ëÃæ¤Ë¥ê¥¹¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

»²¾È : kill(2)¡¢signal(3)¡¢signal(3F)¡¢fork(3F)¡¢perror(3F)

link¡¢symlnk : ´û¸¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯¤ÎºîÀ®

link ¤Ï´û¸¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯¤òºîÀ®¤·¤Þ¤¹¡£symlnk ¤Ï´û¸¥Õ¥¡¥¤¥ë¤Ø¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òºîÀ®¤·¤Þ¤¹¡£

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

status = link ( name1, name2 )
INTEGER*4 symlnk status = symlnk ( name1, name2 )
name1 CHARACTER*n ÆþÎÏ ´û¸¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹Ì¾
name2 CHARACTER*n ÆþÎÏ ¥Õ¥¡¥¤¥ë name1 ¤Ë¥ê¥ó¥¯¤µ¤»¤ë¥Ñ¥¹Ì¾ ¥Õ¥¡¥¤¥ë name2 ¤Ï¡¢´û¸¥Õ¥¡¥¤¥ë¤Ç¤¢¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=0: Àµ¾ï status>0: ¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É

link : ´û¸¥Õ¥¡¥¤¥ë¤Ø¤Î¥ê¥ó¥¯¤ÎºîÀ®

Îã 1 : link ¡Ý ¥Õ¥¡¥¤¥ë tlink.db.data.1 ¤ËÂФ·¤Æ¡¢data1 ¤È¤¤¤¦Ì¾Á°¤Î¥ê¥ó¥¯¤òºîÀ®¤·¤Þ¤¹¡£

demo% cat tlink.f
	character*34 name1/'tlink.db.data.1'/, name2/'data1'/
	integer*4 link, status
	status = link( name1, name2 )
	if ( status .ne. 0 ) stop 'link: ¥¨¥é¡¼'
	end
demo% f77 -silent tlink.f 
demo% ls -l data1 
data1:¥Õ¥¡¥¤¥ë¤â¥Ç¥£¥ì¥¯¥È¥ê¤â¤¢¤ê¤Þ¤»¤ó
demo% a.out 
demo% ls -l data1 
-rw-rw-r-- 2 generic 2 8·î 11Æü 08:50 data1 
demo% 

symlnk : ´û¸¥Õ¥¡¥¤¥ë¤Ø¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ÎºîÀ®

Îã 2 : symlnk ¡Ý ¥Õ¥¡¥¤¥ë tlink.db.data.1 ¤ËÂФ·¤Æ¡¢data1 ¤È¤¤¤¦Ì¾Á°¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤òºîÀ®¤·¤Þ¤¹¡£

demo% cat tsymlnk.f
	character*34 name1/'tlink.db.data.1'/, name2/'data1'/
	INTEGER*4 status, symlnk
	status = symlnk( name1, name2 )
	if ( status .ne. 0 ) stop 'symlnk: ¥¨¥é¡¼'
	end
demo% f77 -silent tsymlnk.f 
demo% ls -l data1 
data1:¥Õ¥¡¥¤¥ë¤â¥Ç¥£¥ì¥¯¥È¥ê¤â¤¢¤ê¤Þ¤»¤ó
demo% a.out 
demo% ls -l data1 
lrwxrwxrwx 1 generic 15 8·î 11Æü 11:09 data1 -> tlink.db.data.1 
demo% 

»²¾È : link(2)¡¢symlink(2)¡¢perror(3F)¡¢unlink(3F)


Ãí - ¥Ñ¥¹Ì¾¤ò <sys/param.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë MAXPATHLEN ¤è¤êŤ¯¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

loc : ¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¢¥É¥ì¥¹¤òÌ᤹

¤³¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

k = loc( arg )
arg Ǥ°Õ¤Î·¿ ÆþÎÏ Ç¤°Õ¤ÎÊÑ¿ô¡¢ÇÛÎ󡢤ޤ¿¤Ï¹½Â¤ÂΤÎ̾Á°
Ìá¤êÃÍ INTEGER*4 ¤Þ¤¿¤Ï INTEGER*8 ½ÐÎÏ arg ¤Î¥¢¥É¥ì¥¹

-xarch=v9 ¤ò»È¤Ã¤Æ¡¢64 ¥Ó¥Ã¥È´Ä¶­¤Çưºî¤¹¤ë¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤·¤¿¾ì¹ç¤Ï¡¢INTEGER*8 ¥Ý¥¤¥ó¥¿¤¬Ìá¤ë¡£°Ê²¼¤ÎÃí¤ò»²¾È¡£

Îã : loc

	INTEGER*4 k, loc
	real arg / 9.0 /
	k = loc( arg )
	write(*,*) k
	end


Ãí - 64 ¥Ó¥Ã¥È Solaris 7 ¤Çưºî¤¹¤ë¤è¤¦¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥×¥í¥°¥é¥à¤Ï¡¢loc( ) ´Ø¿ô¤«¤é½ÐÎϤòÊÖ¤¹ÊÑ¿ô INTEGER*8 ¤òÀë¸À¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

long¡¢short : À°¿ô¥ª¥Ö¥¸¥§¥¯¥È¤ÎÊÑ´¹

long ¤ª¤è¤Ó short ¤Ï INTEGER*4 ¤È INTEGER*2 ´Ö¤ÇÀ°¿ô¥ª¥Ö¥¸¥§¥¯¥È¤ÎÊÑ´¹¤ò¹Ô¤¤¤Þ¤¹¡£¤³¤ÎÊÑ´¹¤Ï¡¢¥µ¥Ö¥×¥í¥°¥é¥à¸Æ¤Ó½Ð¤·°ìÍ÷¤Ç¤ÏÆÃ¤ËÍ­¸ú¤Ç¤¹¡£

long : ûÀ°¿ô (INTEGER*2) ¤«¤éĹÀ°¿ô (INTEGER*4) ¤Ø¤ÎÊÑ´¹

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call ĹÀ°¿ô¤ò¤È¤ë¥µ¥Ö¥ë¡¼¥Á¥ó ( long(int2) )
int2 INTEGER*2 ÆþÎÏ
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ

short : ĹÀ°¿ô¤«¤éûÀ°¿ô¤Ø¤ÎÊÑ´¹

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*2 short call ûÀ°¿ô¤ò¤È¤ë¥µ¥Ö¥ë¡¼¥Á¥ó ( short(int4) )
int4 INTEGER*4 ÆþÎÏ
Ìá¤êÃÍ INTEGER*2 ½ÐÎÏ

Îã (³ºÅöÉôʬ¤Î¤ß): long() ¤È short()

	integer*4 int4/8/, long 
	integer*2 int2/8/, short 
	call ExpecLong( long(int2) ) 
	call ExpecShort( short(int4) ) 
	... 
	end 

ExpecLong ¤Ï¥æ¡¼¥¶¡¼¥×¥í¥°¥é¥à¤Ë¤è¤Ã¤Æ¸Æ¤Ó½Ð¤µ¤ì¤ë¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç¡¢Ä¹À°¿ô (INTEGER*4) ¤Î°ú¿ô¤ò¤È¤ê¤Þ¤¹¡£ExpecShort ¤ÏûÀ°¿ô (INTEGER*2) ¤Î°ú¿ô¤ò¤È¤ê¤Þ¤¹¡£

long ¤Ï¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤Î¸Æ¤Ó½Ð¤·¤ËÄê¿ô¤¬»ÈÍѤµ¤ì¡¢-i2 ¥ª¥×¥·¥ç¥ó¤ò»ØÄꤷ¤Æ¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¾ì¹ç¤ËÌòΩ¤Á¤Þ¤¹¡£

short ¤Ï¡¢Ä¹¤¤·¿¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òû¤¤·¿¤ÎÀ°¿ô¤È¤·¤ÆÅϤ¹É¬Íפ¬¤¢¤ë¾ì¹ç¤ËÌòΩ¤Á¤Þ¤¹¡£Ã»¤¤·¿¤ËÅϤ¹À°¿ô¤¬Â礭¤¹¤®¤¿¾ì¹ç¡¢¥¨¥é¡¼¤ÏȯÀ¸¤·¤Þ¤»¤ó¤¬¡¢¥×¥í¥°¥é¥à¤¬Í½´ü¤·¤Ê¤¤Æ°¤­¤ò¤·¤Þ¤¹¡£

longjmp¡¢isetjmp : isetjmp ¤ÇÀßÄꤷ¤¿°ÌÃÖ¤ËÌ᤹

isetjmp ¤Ï longjmp ¤Î°ÌÃÖ¤òÀßÄꤷ¤Þ¤¹¡£
longjmp ¤Ï isetjump ¤ÇÀßÄꤷ¤¿°ÌÃÖ¤ËÌá¤ê¤Þ¤¹¡£

isetjmp : longjmp ¤ÎÀßÄê

¤³¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

ival = isetjmp( env )
env INTEGER*4 ½ÐÎÏ env ¤Ï 12 Í×ÁǤÎÀ°¿ôÇÛÎó
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ ival = 0¡¢isetjmp ¤¬ÌÀ¼¨Åª¤Ë ¸Æ¤Ó½Ð¤µ¤ì¤¿¾ì¹ç ival ¹ 0¡¢isetjmp ¤¬ longjmp ¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤¿¾ì¹ç

longjmp : isetjmp ¤ÇÀßÄꤷ¤¿°ÌÃÖ¤ËÌ᤹

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call longjmp( env, ival )
env INTEGER*4 ÆþÎÏ env ¤Ï isetjmp ¤Ç½é´ü²½¤µ¤ì¤¿ 12 ¸ì¤ÎÀ°¿ôÇÛÎó
ival INTEGER*4 ½ÐÎÏ ival = 0¡¢isetjmp ¤¬ÌÀ¼¨Åª¤Ë¸Æ¤Ó½Ð¤µ¤ì¤¿¾ì¹ç ival ¹ 0¡¢isetjmp ¤¬ longjmp ¤«¤é¸Æ¤Ó½Ð¤µ¤ì¤¿¾ì¹ç

ÀâÌÀ

isetjmp ¤È longjmp ¥ë¡¼¥Á¥ó¤Ï¡¢¥×¥í¥°¥é¥à¤ÎÄã¥ì¥Ù¥ë¥ë¡¼¥Á¥ó¤ÇÁø¶ø¤¹¤ë¥¨¥é¡¼¤ä¾ã³²¤ò½èÃÖ¤¹¤ë¤¿¤á¤Ë»ÈÍѤ·¤Þ¤¹¡£¤³¤Î 2 ¤Ä¤Ï¡¢f77¤ÎÁȤ߹þ¤ß´Ø¿ô¤Ç¤¹¡£

¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤Ï¡¢ºÇ¸å¤Î¼êÃʤȤ·¤Æ¤Î¤ß»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£¤³¤ì¤é¤Î¼è¤ê°·¤¤¤Ë¤Ï¡¢½½Ê¬Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢°Ü¿¢À­¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥Ð¥°¤ä¤½¤Î¾¤Î¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢
setjmp(3V) ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

isetjmp ¤Ï env ¤Ë¥¹¥¿¥Ã¥¯´Ä¶­¤òÊݸ¤·¤Þ¤¹¡£¤Þ¤¿¥ì¥¸¥¹¥¿´Ä¶­¤âÊݸ¤·¤Þ¤¹¡£

longjmp ¤Ï¡¢ºÇ¸å¤Ë isetjmp ¤ò¸Æ¤Ó½Ð¤·¤ÆÊݸ¤·¤¿´Ä¶­¤òÉü¸µ¤·¡¢¤¢¤¿¤«¤â isetjmp ¤Î¸Æ¤Ó½Ð¤·¤¬ÃÍ ival ¤òÊÖ¤·¤¿¤«¤Î¤è¤¦¤ËÌá¤ê¡¢¼Â¹Ô¤ò·Ñ³¤·¤Þ¤¹¡£

isetjmp ¤«¤éÊÖ¤µ¤ì¤¿À°¿ô¼° ival ¤Ï¡¢longjmp ¤¬¸Æ¤Ó½Ð¤µ¤ì¤Ê¤±¤ì¤Ð¥¼¥í¤Ç¤¹¡£longjmp ¤¬¸Æ¤Ó½Ð¤µ¤ì¤ì¤Ð¡¢¥¼¥í°Ê³°¤Ë¤Ê¤ê¤Þ¤¹¡£

Îã : isetjmp ¤È longjmp ¤ò»ÈÍѤ·¤¿¥³¡¼¥ÉÉôʬ

	INTEGER*4  env(12)
	common /jmpblk/ env
	j = isetjmp( env )                   !  ¬isetjmp
	if ( j .eq. 0 ) then
	call  sbrtnA
	else
	call error_processor
	end if
	end
	subroutine sbrtnA
	INTEGER*4  env(12)
	common /jmpblk/ env
	call longjmp( env, ival )            !¬ longjmp
	return
	end

À©¸Â

»²¾È: setjmp(3V)

malloc¡¢malloc 64: µ­²±Îΰè¤Î³ä¤êÅö¤Æ¤È¤½¤Î¥¢¥É¥ì¥¹¤Î³ÍÆÀ

malloc() ´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

k = malloc( n )
n INTEGER*4 ÆþÎÏ µ­²±Îΰè¤Î¥Ð¥¤¥È¿ô
Ìá¤êÃÍ INTEGER*4 ¤Þ¤¿¤Ï INTEGER*8 ½ÐÎÏ k>0: k ¤Ï³ä¤êÅö¤Æ¤é¤ì¤¿µ­²±Îΰè¤Î³«»Ï¥¢¥É¥ì¥¹ k=0: ¥¨¥é¡¼

-xarch=v9 ¤ò»È¤Ã¤Æ¡¢64 ¥Ó¥Ã¥È´Ä¶­ÍѤ˥³¥ó¥Ñ¥¤¥ë¤·¤¿¾ì¹ç¤Ï¡¢INTEGER*8 ¥Ý¥¤¥ó¥¿Ãͤ¬Ìá¤ë¡£°Ê²¼¤ÎÃí¤ò»²¾È¡£


Ãí - Solaris 7 ¤Ê¤É¤Î 64 ¥Ó¥Ã¥È´Ä¶­¤Çưºî¤¹¤ë¤è¤¦¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¥×¥í¥°¥é¥à¤Ç¤Ï¡¢malloc() ´Ø¿ô¤È¤½¤Î½ÐÎϤò¼õ¤±¼è¤ëÊÑ¿ô¤ò INTEGER*8 ¤ÈÀë¸À¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¸ß´¹À­¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤Ë¤Ï¡¢32 ¥Ó¥Ã¥È´Ä¶­¤Þ¤¿¤Ï 64 ¥Ó¥Ã¥È´Ä¶­¤ÎξÊý¤Ç¼Â¹Ô¤¹¤ëɬÍפ¬¤¢¤ë¥×¥í¥°¥é¥àÆâ¤Ç¡¢malloc() ¤ÎÂå¤ï¤ê¤Ë malloc64() ¤ò»ÈÍѤ·¤Þ¤¹¡£

´Ø¿ô malloc64(3F)¤Ï¡¢¥×¥í¥°¥é¥à¤ò 32 ¥Ó¥Ã¥È´Ä¶­¤È 64 ¥Ó¥Ã¥È´Ä¶­´Ö¤Ç¸ß´¹À­¤ò»ý¤¿¤»¤ë¤¿¤á¤ËÄ󶡤µ¤ì¤¿´Ø¿ô¤Ç¤¹¡£

k = malloc64( n )
n INTEGER*8 ÆþÎÏ µ­²±Îΰè¤Î¥Ð¥¤¥È¿ô
Ìá¤êÃÍ INTEGER*8 ½ÐÎÏ k>0: k ¤Ï³ä¤êÅö¤Æ¤é¤ì¤¿µ­²±Îΰè¤Î³«»Ï¥¢¥É¥ì¥¹ k=0: ¥¨¥é¡¼


¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢µ­²±Îΰè¤ò³ä¤êÅö¤Æ¡¢¤½¤ÎÎΰè¤Î³«»Ï¥¢¥É¥ì¥¹¤òÊÖ¤·¤Þ¤¹¡£(64 ¥Ó¥Ã¥È´Ä¶­¤Ç¤Ï¡¢¤³¤ÎÊÖ¤µ¤ì¤¿¥Ð¥¤¥È¥¢¥É¥ì¥¹¤Ï¡¢INTEGER*4 ¤Î¿ôÃÍÈϰϳ°¤Ë¤Ê¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£¼õ¤±¼è¤ê¦¤ÎÊÑ¿ô¤Ç¤Ï INTEGER*8 ¤ÈÀë¸À¤·¡¢¥á¥â¥ê¡¼¥¢¥É¥ì¥¹¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£) ¤³¤Î¥á¥â¥ê¡¼¤ÎÎΰè¤Ï¡¢½é´ü²½¤Ç¤­¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¥á¥â¥ê¡¼Îΰ褬¡¢¤¢¤ëÃÍ¡¢ÆÃ¤Ë¥¼¥í¤Ë»öÁ°ÀßÄꤵ¤ì¤Æ¤¤¤ë¤È¤Ï²¾Äꤷ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

Îã : malloc ¤ò»ÈÍѤ·¤¿¥³¡¼¥ÉÉôʬ

	parameter (NX=1000)
	pointer ( p1, X )
	real*4 X(NX)
	...
	p1 = malloc( NX*4 )
	if ( p1 .eq. 0 ) stop 'malloc: ³ä¤êÅö¤ÆÉÔ²Ä'
    do 11 i=1,NX
11    X(i) = 0.
	...
	end

¾åµ­¤ÎÎã¤Ç¤Ï¡¢p1 ¤Ç»ØÄꤵ¤ì¤ë 4,000 ¥Ð¥¤¥È¤Î¥á¥â¥ê¡¼¤ò³ÍÆÀ¤·¡¢¤³¤ÎÎΰè¤ò 0 ¤Ë½é´ü²½¤·¤Æ¤¤¤Þ¤¹¡£

¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢¡Öfree : Malloc ¤Ë¤è¤ê³ä¤êÅö¤Æ¤é¤ì¤¿µ­²±Îΰè¤Î ³ä¤êÅö¤Æ²ò½ü¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

mvbits : ¥Ó¥Ã¥È¥Õ¥£¡¼¥ë¥É¤Î°Üư

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£

call mvbits( src, ini1, nbits, des, ini2 )
src INTEGER*4 ÆþÎÏ °Üư¸µ
ini1 INTEGER*4 ÆþÎÏ °Üư¸µ¤Ç¤Î¥Ó¥Ã¥È¤Î½é´ü°ÌÃÖ
nbits INTEGER*4 ÆþÎÏ °Üư¤µ¤»¤ë¥Ó¥Ã¥È¿ô
des INTEGER*4 ½ÐÎÏ °ÜưÀè
ini2 INTEGER*4 ÆþÎÏ °ÜưÀè¤Ç¤Î¥Ó¥Ã¥È¤Î½é´ü°ÌÃÖ

Îã : mvbits

demo% cat mvb1.f 
* mvb1.f ¡Ý °Üư¸µ src ¤Î½é´ü¥Ó¥Ã¥È°ÌÃÖ 0 ¤«¤é 3 ¥Ó¥Ã¥È¤ò des ¤Î¥Ó¥Ã¥È 3 ¤Ø°Ü
ư¡£
*    src    des
* 543210 543210 ¬ ¥Ó¥Ã¥ÈÈÖ¹æ
* 000111 000001 ¬ °ÜưÁ°¤ÎÃÍ
* 000111 111001 ¬ °Üư¸å¤ÎÃÍ
	INTEGER*4 src, ini1, nbits, des, ini2 
	data src, ini1, nbits, des, ini2 
&         	/ 7,    0,     3,   1,    3 / 
	call mvbits ( src, ini1, nbits, des, ini2 ) 
	write (*,"(5o3)") src, ini1, nbits, des, ini2 
	end 
demo% f77 -silent mvb1.f
demo% a.out 
  7  0  3 71  3
demo%

°Ê²¼¤ÎÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

perror¡¢gerror¡¢ierrno : ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Î¼èÆÀ

¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤Ï¡¢°Ê²¼¤Î´Ø¿ô¤ò¼Â¹Ô¤·¤Þ¤¹¡£

perror Fortran ÏÀÍýÁõÃÖ 0 (stderr) ¤Ø¤Î¥á¥Ã¥»¡¼¥¸¤Î½ÐÎÏ
gerror ¥·¥¹¥Æ¥à¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸ (ºÇ¸å¤Ë¸¡½Ð¤µ¤ì¤¿¥·¥¹¥Æ¥à¥¨¥é¡¼¤Î) ¤ÎÆÉ¤ß¼è¤ê
ierrno ºÇ¸å¤Ë¸¡½Ð¤µ¤ì¤¿¥·¥¹¥Æ¥à¥¨¥é¡¼¤Î¥¨¥é¡¼ÈÖ¹æ¤ÎÆÉ¤ß¼è¤ê

perror : ÏÀÍýÁõÃÖ 0 (stderr) ¤Ø¤Î¥á¥Ã¥»¡¼¥¸½ÐÎÏ

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£

call perror( string )
string CHARACTER*n ÆþÎÏ ¥á¥Ã¥»¡¼¥¸¡£É¸½à¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ËÀè¤À¤Ã¤Æ½ÐÎϤµ¤ì¤ë¡£ºÇ¸å¤Ë¸¡½Ð¤µ¤ì¤¿¥·¥¹¥Æ¥à¥¨¥é¡¼¤ËÂФ¹¤ë¥á¥Ã¥»¡¼¥¸

Îã 1 :

	call perror( "¥Õ¥¡¥¤¥ë¤Ï½ñ¼°ÉÕ¤­Æþ½ÐÎÏÍÑ" ) 

gerror : ºÇ¸å¤Ë¸¡½Ð¤µ¤ì¤¿¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Î¼èÆÀ

¥µ¥Ö¥ë¡¼¥Á¥ó¤Þ¤¿¤Ï´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£

call gerror( string )
string CHARACTER*n ½ÐÎÏ ºÇ¸å¤Ë¸¡½Ð¤µ¤ì¤¿¥·¥¹¥Æ¥à
¥¨¥é¡¼¤Î¥á¥Ã¥»¡¼¥¸

Îã 2 : gerror ¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤È¤·¤Æ¤Î»ÈÍÑ

	character string*30 
	...
	call gerror ( string ) 
	write(*,*) string 

Îã 3 : gerror ¤Î´Ø¿ô¤È¤·¤Æ¤Î»ÈÍÑ (¤³¤Î¾ì¹ç¡¢string ¤Ï»ÈÍѤ·¤Þ¤»¤ó)

	character gerror*30, z*30 
	... 
	z = gerror( ) 
	write(*,*) z 

ierrno : ºÇ¸å¤Ë¸¡½Ð¤µ¤ì¤¿¥¨¥é¡¼ÈÖ¹æ¤Î¼èÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£

n = ierrno()
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ ºÇ¸å¤Ë¸¡½Ð¤µ¤ì¤¿¥·¥¹¥Æ¥à¥¨¥é¡¼¤ÎÈÖ¹æ

¤³¤ÎÈÖ¹æ¤Ï¥¨¥é¡¼¤¬¼ÂºÝ¤Ëµ¯¤³¤Ã¤¿»þ¤Ë¤·¤«¹¹¿·¤µ¤ì¤Þ¤»¤ó¡£¤³¤Î¤è¤¦¤Ê¥¨¥é¡¼¤òȯÀ¸¤µ¤»¤ë¤Û¤È¤ó¤É¤Î¥ë¡¼¥Á¥ó¤ÈÆþ½ÐÎÏʸ¤Ï¡¢¸Æ¤Ó½Ð¤·¤Î¸å¤Ç¥¨¥é¡¼¥³¡¼¥É¤òÊÖ¤·¤Þ¤¹¡£¤½¤ÎÃͤϥ¨¥é¡¼¾ò·ï¤ò°ú¤­µ¯¤³¤·¤¿¸¶°ø¤ò¼¨¤¹¿®ÍêÅ٤ι⤤¥Ç¡¼¥¿¤Ç¤¹¡£

Îã 4 :

	INTEGER*4 ierrno, n 
	... 
	n = ierrno() 
	write(*,*) n 

ierrno ()

»²¾È : intro(2)¡¢perror(3)

Ãí°Õ:

putc¡¢fputc : ÏÀÍýÁõÃ֤ؤΠ1 ʸ»ú½ÐÎÏ

putc ¤ÏÏÀÍýÁõÃÖ 6 ¤Ë½ÐÎϤ·¤Þ¤¹¡£Ä̾ï¤ÏÀ©¸æÃ¼Ëö¤Ø¤Î½ÐÎϤˤʤê¤Þ¤¹¡£

fputc ¤ÏǤ°Õ¤ÎÏÀÍýÁõÃ֤˽ÐÎϤ·¤Þ¤¹¡£

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢Ä̾ï¤Î Fortran Æþ½ÐÎϤò¥Ð¥¤¥Ñ¥¹¤·¤Æ¡¢Fortran ÏÀÍýÁõÃ֤˴ØÏ¢ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Ë 1 ʸ»ú¤ò½ÐÎϤ·¤Þ¤¹¡£

Ʊ¤¸ÁõÃÖ¾å¤Ç¤Ï¡¢Ä̾ï¤Î Fortran ½ÐÎϤȤ³¤ì¤é¤Î´Ø¿ô¤Î½ÐÎϤòº®ºß¤µ¤»¤Æ»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

putc : ÏÀÍýÁõÃÖ 6 ¤Ø¤Î½ÐÎÏ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 putc status = putc( char )
char CHARACTER ÆþÎÏ ÁõÃ֤˽ÐÎϤ¹¤ëʸ»ú
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=0: Àµ¾ï status>0: ¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É

Îã : putc

	character char, s*10 / 'OK by putc' /
	INTEGER*4 putc, status
	do i = 1, 10
	char = s(i:i)
	status = putc( char )
	end do
	status = putc( '\n' )
	end
demo% f77 -silent tputc.f 
demo% a.out 
OK by putc 
demo% 

fputc : »ØÄꤷ¤¿ÏÀÍýÁõÃ֤ؤνÐÎÏ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 fputc status = fputc( lunit, char )
lunit INTEGER*4 ÆþÎÏ ½ÐÎÏÀèÁõÃÖ
char CHARACTER ÆþÎÏ ÁõÃ֤˽ÐÎϤ¹¤ëʸ»ú
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=0: Àµ¾ï status>0: ¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É

Îã : fputc()

	character char, s*11 / 'OK by fputc' /
	INTEGER*4 fputc, status
	open( 1, file='tfputc.data')
	do i = 1, 11
	char = s(i:i)
	status = fputc( 1, char )
	end do
	status = fputc( 1, '\n' )
	end
demo% f77 -silent tfputc.f 
demo% a.out 
demo% cat tfputc.data 
OK by fputc 
demo% 

»²¾È : putc(3S)¡¢intro(2)¡¢perror(3F)

qsort¡¢qsort 64 : 1 ¼¡¸µÇÛÎó¤ÎÍ×ÁǤΥ½¡¼¥È

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call qsort ( array, len, isize, compar ) call qsort 64 ( array, len8, isize8, compar )
array ÇÛÎó ÆþÎÏ ¥½¡¼¥È¤¹¤ëÍ×ÁǤ¬Æþ¤Ã¤Æ¤¤¤ëÇÛÎó
len INTEGER*4 ÆþÎÏ ÇÛÎóÆâ¤ÎÍ×ÁǤθĿô
len8 INTEGER*8 ÆþÎÏ ÇÛÎóÆâ¤ÎÍ×ÁǤθĿô
isize INTEGER*4 ÆþÎÏ Í×ÁǤΥµ¥¤¥º: 4= À°¿ô¤Þ¤¿¤Ï¼Â¿ô 8= ÇÜÀºÅÙ¤Þ¤¿¤ÏÊ£ÁÇ¿ô 16= ÇÜÀºÅÙÊ£ÁÇ¿ô ʸ»úÇÛÎó¤Î¾ì¹ç¤Ïʸ»ú¥ª¥Ö¥¸¥§¥¯¥È¤ÎŤµ
isize8 INTEGER*8 ÆþÎÏ Í×ÁǤΥµ¥¤¥º: 4_8= À°¿ô¤Þ¤¿¤Ï¼Â¿ô 8_8= ÇÜÀºÅÙ¤Þ¤¿¤ÏÊ£ÁÇ¿ô 16_8= ÇÜÀºÅÙÊ£ÁÇ¿ô ʸ»úÇÛÎó¤Î¾ì¹ç¤Ïʸ»ú¥ª¥Ö¥¸¥§¥¯¥È¤ÎŤµ
compar ´Ø¿ô̾ ÆþÎÏ ¥æ¡¼¥¶¡¼¤¬Ä󶡤¹¤ë INTEGER*2 ·¿¤Î´Ø¿ô¤Î̾Á°¡£compar (arg1, arg2) ¤È»ØÄꤷ¤Æ¡¢¥½¡¼¥È½ç¤ò·èÄꤹ¤ë

64 ¥Ó¥Ã¥È´Ä¶­¤Ë¤ª¤¤¤Æ¤Ï¡¢2 ¥®¥¬¥Ð¥¤¥È¤òͤ¨¤ëÇÛÎó¤Ë¤Ï qsort64 ¤ò»ÈÍѤ·¤Þ¤¹¡£¤³¤Î¾ì¹ç¡¢INTEGER*8 ¥Ç¡¼¥¿¤È¤·¤Æ¡¢ÇÛÎó¤ÎŤµ¤Ï len8¡¢Í×ÁÇ¥µ¥¤¥º¤Ï isize8 ¤Ëɬ¤º»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£Fortran 95 ·¿¤ÎÄê¿ô¤ò»ÈÍѤ·¤Æ INTEGER*8 Äê¿ô¤òÌÀ¼¨Åª¤Ë»ØÄꤷ¤Þ¤¹¡£

compar ¤Î°ú¿ô¤Ç¤¢¤ë arg1 ¤È arg2 ¤Ï¡¢ÇÛÎó¤ÎÍ×ÁǤǤ¢¤ê¡¢¼¡¤Î·ë²Ì¤òÊÖ¤·¤Þ¤¹¡£

Éé¿ô arg1 ¤Ï arg2 ¤ÎÁ°¤ËÃÖ¤«¤ì¤ë¤È¸«¤Ê¤µ¤ì¤ë¾ì¹ç
¥¼¥í arg1 ¤È arg2 ¤¬Åù¤·¤¤¾ì¹ç
Àµ¿ô arg1 ¤Ï arg2 ¤Î¸å¤ËÃÖ¤«¤ì¤ë¤È¸«¤Ê¤µ¤ì¤ë¾ì¹ç


¼¡¤ËÎã¤ò¼¨¤·¤Þ¤¹¡£

demo% cat tqsort.f
	external compar
	integer*2 compar
	INTEGER*4 array(10)/5,1,9,0,8,7,3,4,6,2/, len/10/, isize/4/
	call qsort( array, len, isize, compar )
	write(*,'(10i3)') array
	end
	integer*2 function compar( a, b )
	INTEGER*4 a, b
	if ( a .lt. b ) compar = -1
	if ( a .eq. b ) compar = 0
	if ( a .gt. b ) compar = 1
	return
	end
demo% f77 -silent tqsort.f 
demo% a.out 
  0 1 2 3 4 5 6 7 8 9 

ran : 0 - 1 ´Ö¤ÎÍð¿ô¤ÎÀ¸À®

È¿Éü¤·¤Æ ran ¤ò¸Æ¤Ó½Ð¤¹¤È¡¢¶Ñ°ì¤·¤¿Ê¬ÉۤǰìÏ¢¤ÎÍð¿ô¤òÀ¸À®¤·¤Þ¤¹¡£

r = ran( i )
i INTEGER*4 ÆþÎÏ ÊÑ¿ô¤Þ¤¿¤ÏÇÛÎóÍ×ÁÇ
r REAL ½ÐÎÏ ÊÑ¿ô¤Þ¤¿¤ÏÇÛÎóÍ×ÁÇ

lcrans(3m) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Îã : ran

demo% cat ran1.f 
* ran1.f ¡Ý Íð¿ô¤òÀ¸À®¤¹¤ë¡£
	INTEGER*4 i, n 
	real r(10) 
	i = 760013 
	do n = 1, 10 
	r(n) = ran ( i ) 
	end do 
	write ( *, "( 5 f11.6 )" ) r 
	end 
demo% f77 -silent ran1.f
demo% a.out 
   0.222058 0.299851 0.390777 0.607055 0.653188 
   0.060174 0.149466 0.444353 0.002982 0.976519 
demo% 

°Ê²¼¤ÎÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

rand¡¢drand¡¢irand : Íð¿ô¤òÌ᤹

rand ¤Ï 0.0 ¤«¤é 1.0 ¤ÎÈϰϤμ¿ôÃͤÎÍð¿ô¤òÊÖ¤·¤Þ¤¹¡£

drand ¤Ï 0.0 ¤«¤é 1.0 ¤ÎÈϰϤÎÇÜÀºÅÙÃͤÎÍð¿ô¤òÊÖ¤·¤Þ¤¹¡£

irand ¤Ï 0 ¤«¤é 2147483647 ¤ÎÈϰϤÎÀµ¤ÎÀ°¿ôÃͤÎÍð¿ô¤òÊÖ¤·¤Þ¤¹¡£

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢random(3) ¤ò»ÈÍѤ·¤ÆÍð¿ô¤ÎÎó¤òȯÀ¸¤µ¤»¤Þ¤¹¡£¤³¤ì¤é¤Î 3 ¤Ä¤Î´Ø¿ô¤Ï¡¢Æ±¤¸ 256 ¥Ð¥¤¥È¤Î¾õÂÖÇÛÎó¤ò¶¦Í­¤·¤Þ¤¹¡£3 ¤Ä¤Î´Ø¿ô¤ÎÍ£°ì¤ÎÍøÅÀ¤Ï¡¢UNIX ¥·¥¹¥Æ¥à¤ÇÉý¹­¤¯ÍøÍѤǤ­¤ë¤³¤È¤Ç¤¹¡£Íð¿ô¤òÀ¸À®¤¹¤ë¤µ¤é¤ËÍ¥¤ì¤¿´Ø¿ô¤È¤·¤Æ¤Ï¡¢lcrans¡¢addrans¡¢¤ª¤è¤Ó shufrans ¤¬¤¢¤ê¤Þ¤¹¡£
random(3) ¤ª¤è¤Ó¡Ø¿ôÃÍ·×»»¥¬¥¤¥É¡Ù¤â»²¾È¤·¤ÆÈæ³Ó¤·¤Æ¤¯¤À¤µ¤¤¡£

i = irand( k )
r = rand( k )
d = drand( k )
k INTEGER*4 ÆþÎÏ k=0: ¼¡¤ÎÍð¿ô¤òÍð¿ôÎ󤫤é¼è¤ê½Ð¤¹ k=1: Íð¿ôÎó¤òºÆ³«¤·¡¢ºÇ½é¤Î¿ô¤òÌ᤹ k>0: ¿·¤·¤¤ÍðÎó¿ô¤Î¼ï¤È¤·¤Æ»ÈÍѤ·¡¢ºÇ½é¤Î¿ô¤òÌ᤹
rand REAL*4 ½ÐÎÏ
drand REAL*8 ½ÐÎÏ
irand INTEGER*4 ½ÐÎÏ

Îã : irand()

	integer*4 v(5), iflag/0/
	do i = 1, 5
	v(i) = irand( iflag )
	end do
	write(*,*) v
	end
demo% f77 -silent trand.f 
demo% a.out 
2078917053 143302914 1027100827 1953210302 755253631 
demo%

rename : ¥Õ¥¡¥¤¥ë¤Î̾¾ÎÊѹ¹

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 rename status = rename( from, to )
from CHARACTER*n ÆþÎÏ ´û¸¥Õ¥¡¥¤¥ë¤Î¥Ñ¥¹Ì¾
to CHARACTER*n ÆþÎÏ ¥Õ¥¡¥¤¥ë¤Î¿·¤·¤¤¥Ñ¥¹Ì¾
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ status=0: Àµ¾ï status>0: ¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É

to ¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¾ì¹ç¡¢from ¤È to ¤Ï¤É¤Á¤é¤âƱ¤¸¥¿¥¤¥×¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢¤«¤ÄƱ¤¸¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£
to ¤¬¤¹¤Ç¤Ë¸ºß¤¹¤ë¾ì¹ç¡¢ºÇ½é¤Ë¤½¤Î¥Õ¥¡¥¤¥ë¤¬ºï½ü¤µ¤ì¤Þ¤¹¡£

Îã : rename() ¡Ý ¥Õ¥¡¥¤¥ë trename.old ¤Î̾Á°¤ò trename.new ¤ËÊѹ¹¤·¤Þ¤¹¡£

demo% cat trename.f
	INTEGER*4 rename, status
	character*18 from/'trename.old'/, to/'trename.new'/
	status = rename( from, to )
	if ( status .ne. 0 ) stop 'rename: ¥¨¥é¡¼'
	end
demo% f77 - silent trename.f 
demo% ls trename* 
trename.f trename.old 
demo% a.out 
demo% ls trename* 
trename.f trename.new 
demo% 

»²¾È : rename(2)¡¢perror(3F)


Ãí - ¥Ñ¥¹Ì¾¤ò <sys/param.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë MAXPATHLEN ¤è¤êŤ¯¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

secnds : ÉÃñ°Ì¤Î¥·¥¹¥Æ¥à»þ´Ö (¥Þ¥¤¥Ê¥¹°ú¿ô) ¤ò¼èÆÀ

t = secnds( t0 )
t0 REAL ÆþÎÏ Äê¿ô¡¢ÊÑ¿ô¡¢¤¢¤ë¤¤¤ÏÇÛÎóÍ×ÁÇ
Ìá¤êÃÍ REAL ½ÐÎÏ ¸áÁ° 0 »þ¤«¤é¤ÎÉÿô¤«¤é t0 ¤ò°ú¤¤¤¿ÃÍ

Îã : secnds

demo% cat sec1.f 
	real elapsed, t0, t1, x, y 
	t0 = 0.0 
	t1 = secnds( t0 ) 
	y = 0.1 
	do i = 1, 1000 
	x = asin( y ) 
	end do 
	elapsed = secnds( t1 ) 
	write ( *, 1 ) elapsed 
1	format ( ' 1000 arcsines: ', f12.6, ' sec' ) 
	end 
demo% f77 -silent sec1.f 
demo% a.out 
 1000 arcsines: 6.699141 sec 
demo% 

°Ê²¼¤ÎÅÀ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

sh : sh ¥³¥Þ¥ó¥É¤Î¹â®¼Â¹Ô

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 sh status = sh( string )
string CHARACTER*n
ÆþÎÏ
¼Â¹Ô¤¹¤ë¥³¥Þ¥ó¥É¤ò´Þ¤ó¤Àʸ»úÎó 
Ìá¤êÃÍ INTEGER*4
½ÐÎÏ
¼Â¹Ô¤µ¤ì¤¿¥·¥§¥ë¤Î½ªÎ»¾õÂÖ¡£
¤³¤ÎÃͤÎÀâÌÀ¤Ë¤Ä¤¤¤Æ¤Ï wait(2) ¤ò»²¾È

Îã : sh()

	character*18 string / 'ls > MyOwnFile.names' /
	INTEGER*4 status, sh
	status = sh( string )
	if ( status .ne. 0 ) stop 'sh: ¥¨¥é¡¼'
	...
	end

´Ø¿ô sh ¤Ï¡¢¤¢¤¿¤«¤âʸ»úÎ󤬥³¥Þ¥ó¥É¤È¤·¤Æ¥­¡¼ÆþÎϤµ¤ì¤¿¤«¤Î¤è¤¦¤Ë¡¢sh ¥·¥§¥ë¤Ë string ¤òÅϤ·¤Þ¤¹¡£

¸½¥×¥í¥»¥¹¤Ï¥³¥Þ¥ó¥É¤¬½ªÎ»¤¹¤ë¤Þ¤ÇÂÔµ¡¤·¤Þ¤¹¡£

fork ¤µ¤ì¤¿¥×¥í¥»¥¹¤Ï¡¢³«¤¤¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¤¹¤Ù¤Æ¥Õ¥é¥Ã¥·¥å¤·¤Þ¤¹¡£

sh() ¤Ï¥Þ¥ë¥Á¥¹¥ì¥Ã¥ÉÂбþ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¥×¥í¥°¥é¥à¡¢¤Þ¤¿¤ÏÊÂÎó¥×¥í¥°¥é¥à¤«¤é¤Ï¸Æ¤Ó½Ð¤µ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

»²¾È : execve(2)¡¢wait(2)¡¢system(3)


Ãí - string ¤ÎŤµ¤Ï 1,024 ʸ»ú¤òͤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

signal : ¥·¥°¥Ê¥ë¤ËÂФ¹¤ëưºî¤ÎÊѹ¹

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 signal n = signal( signum, proc, flag )
signum INTEGER*4 ÆþÎÏ ¥·¥°¥Ê¥ëÈֹ档signal(3) ¤ò»²¾È¡£
proc ¥ë¡¼¥Á¥ó̾ ÆþÎÏ ¥æ¡¼¥¶¡¼¤¬ºîÀ®¤·¤¿¥·¥°¥Ê¥ë½èÍý¥ë¡¼¥Á¥ó¤Î̾Á°
(EXTERNAL ʸ¤Ç»ØÄꤹ¤ëɬÍפ¬¤¢¤ë)
flag INTEGER*4 ÆþÎÏ flag<0: proc ¤ò¥·¥°¥Ê¥ë½èÍý¤È¤·¤Æ»ÈÍѤ¹¤ë flag³0: proc ¤ò̵»ë¤¹¤ë¡£flag ¤òưºî¤ÎÄêµÁ¤È¤·¤ÆÅϤ¹ flag=0: ¥Ç¥Õ¥©¥ë¥Èưºî¤ò»ÈÍѤ¹¤ë flag=1: ¤³¤Î¥·¥°¥Ê¥ë¤ò̵»ë¤¹¤ë
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ n=-1: ¥·¥¹¥Æ¥à¥¨¥é¡¼ n>0: Êѹ¹Á°¤Îưºî¤ÎÄêµÁ n>1: ¸Æ¤Ó½Ð¤µ¤ì¤¿¥ë¡¼¥Á¥ó¤Î¥¢¥É¥ì¥¹ n<-1: signum ¤¬Í­¸ú¤Ê¥·¥°¥Ê¥ëÈÖ¹æ¤Ç¤¢¤ë¾ì¹ç¡¢ n ¤Ï¸Æ¤Ó½Ð¤µ¤ì¤¿¥ë¡¼¥Á¥ó¤Î¥¢¥É¥ì¥¹¡£ signum ¤¬Í­¸ú¤Ê¥·¥°¥Ê¥ëÈÖ¹æ¤Ç¤Ï¤Ê¤¤¾ì¹ç¡¢n ¤Ï¥¨¥é¡¼ÈÖ¹æ

INTEGER*8
64 ¥Ó¥Ã¥È´Ä¶­¤Ç¤Ï¡¢signal ¤È¤½¤Î½ÐÎϤò¼õ¤±¼è¤ëÊÑ¿ô¤Ï¡¢INTEGER*8 ¤ÈÀë¸À¤¹¤ëɬÍפ¬¤¢¤ë¡£

proc ¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¾ì¹ç¡¢¥·¥°¥Ê¥ëÈֹ椬À°¿ô¤Î°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡£

¥×¥í¥»¥¹¤¬¥·¥°¥Ê¥ë¤ò¼õ¿®¤·¤¿¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥È¤Îưºî¤Ï¡¢Ä̾ï¤Ï¥×¥í¥»¥¹¤Î½ªÎ»½èÍý¤È°Û¾ï½ªÎ»¤Ç¤¹¡£¥·¥°¥Ê¥ë½èÍý¥ë¡¼¥Á¥ó¤Ï¡¢ÆÃ¼ì¤Ê½èÍý¤ò¹Ô¤¦¤¿¤á¤ËÆÃÄê¤ÎÎã³°¤ä¥¤¥ó¥¿¥é¥×¥È¤òÊá³Í¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¤³¤Î´Ø¿ô¤ÎÌá¤êÃͤò¸å¤Ç signal ¤ò¸Æ¤Ó½Ð¤¹»þ¤Ë»ÈÍѤ·¤Æ¡¢½èÍý¤ÎÄêµÁ¤òÊѹ¹Á°¤ËÌ᤹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¥¨¥é¡¼¤¬¤Ê¤¯¤Æ¤âÉé¿ô¤ÎÌá¤êÃͤ¬ÊÖ¤µ¤ì¤ë¤³¤È¤¬¤¢¤ë¤Î¤ÇÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£Í­¸ú¤Ê¥·¥°¥Ê¥ëÈÖ¹æ¤ò signal() ¤ËÅϤ·¤Æ¡¢Ìá¤êÃͤ¬ -1 ̤Ëþ¤Ç¤¢¤Ã¤¿¾ì¹ç¤ÏÌäÂꤢ¤ê¤Þ¤»¤ó¡£

f77 ¤Ï¥×¥í¥»¥¹¤¬µ¯Æ°¤µ¤ì¤ë¤È°ìÄê¤Î¥·¥°¥Ê¥ë¤ò¥È¥é¥Ã¥×¤¹¤ë¤¿¤á¤Î½àÈ÷¤ò¤·¤Þ¤¹¡£¥Ç¥Õ¥©¥ë¥È¤Î f77 ¤Î½èÍý¤ËÌ᤹¤¿¤á¤Ë¤Ï¡¢signal ¤òºÇ½é¤Ë¸Æ¤Ó½Ð¤·¤¿»þ¤ÎÌá¤êÃͤòÊݸ¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

f77_floatingpoint.h ¤Ç¤Ï¡¢SIGFPE_DEFAULT¡¢SIGFPE_IGNORE ¤ª¤è¤ÓSIGFPE_ABORT¤È¤¤¤¦ proc ÃͤòÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£55¥Ú¡¼¥¸¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤ (f95 ¤Ç¤Ï floatingpoint.h ¤ò»ÈÍÑ)¡£

64 ¥Ó¥Ã¥È´Ä¶­¤Ç¤Ï¡¢signal ¤Ï¡¢¤½¤Î½ÐÎϤò¼õ¤±¼è¤ëÊÑ¿ô¤È¤È¤â¤Ë INTEGER*8 ¤ÈÀë¸À¤·¡¢ÊÖ¤µ¤ì¤ë²ÄǽÀ­¤Î¤¢¤ë¥¢¥É¥ì¥¹¤¬ÀÚ¤ê¼Î¤Æ¤é¤ì¤ë¤Î¤òËɤ°É¬Íפ¬¤¢¤ê¤Þ¤¹¡£

»²¾È : kill(1)¡¢signal(3)¡¢kill(3F)¡¢¡Ø¿ôÃÍ·×»»¥¬¥¤¥É¡Ù

sleep : °ìÄê»þ´Ö¤Î¼Â¹ÔÃæÃÇ

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call sleep( itime )
itime INTEGER*4 ÆþÎÏ
¥¹¥ê¡¼¥×¤¹¤ëÉÿô

¥·¥¹¥Æ¥à»þ´Öµ­Ï¿¤¬ÁƤ¤¤Î¤Ç¡¢¼ÂºÝ¤Î»þ´Ö¤Ï itime ¤è¤ê¤âºÇÂç¤Ç 1 ÉÃû¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£

Îã : sleep()

	INTEGER*4 time / 5 /
	write(*,*) '³«»Ï'
	call sleep( time )
	write(*,*) '½ªÎ»'
	end

»²¾È : sleep(3)

stat¡¢lstat¡¢fstat : ¥Õ¥¡¥¤¥ë¤Î¾õÂ֤μèÆÀ

¤³¤ì¤é¤Î´Ø¿ô¤¬Ì᤹¾ðÊó¤Ï¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

stat ¤È lstat ¤Ï¡¢¤É¤Á¤é¤â¥Õ¥¡¥¤¥ë̾¤òÍѤ¤¤ÆÌ䤤¹ç¤ï¤»¤ò¤·¤Þ¤¹¡£fstat ¤ÏÏÀÍýÁõÃÖ¤òÍѤ¤¤ÆÌ䤤¹ç¤ï¤»¤ò¤·¤Þ¤¹¡£

stat : ¥Õ¥¡¥¤¥ë̾¤Ë¤è¤ë¥Õ¥¡¥¤¥ë¤Î¾õÂ֤μèÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 stat ierr = stat( name, statb )
name CHARACTER*n ÆþÎÏ ¥Õ¥¡¥¤¥ë¤Î̾Á°
statb INTEGER*4 ½ÐÎÏ ¥Õ¥¡¥¤¥ë¾õÂ֤ξðÊ󤬳ÊǼ¤µ¤ì¤ëÍ×ÁÇ¿ô 13 ¤ÎÇÛÎó
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ ierr=0: Àµ¾ï ierr>0: ¥¨¥é¡¼¥³¡¼¥É

Îã 1 : stat()

	character name*18 /'MyFile'/
	INTEGER*4 ierr, stat, lunit/1/, statb(13)
	open( unit=lunit, file=name )
	ierr = stat ( name, statb )
	if ( ierr .ne. 0 ) stop 'stat: ¥¨¥é¡¼'
	write(*,*)'½êÍ­¼Ô¤Î UID = ',statb(5),', ¥Ö¥í¥Ã¥¯¿ô = ',statb(13)
	end

fstat : ÏÀÍýÁõÃ֤ˤè¤ë¥Õ¥¡¥¤¥ë¤Î¾õÂ֤μèÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 fstat ierr = fstat( lunit, statb )
lunit INTEGER*4
ÆþÎÏ
ÏÀÍýÁõÃÖÈÖ¹æ
statb INTEGER*4 ½ÐÎÏ ¥Õ¥¡¥¤¥ë¾õÂ֤ξðÊ󤬳ÊǼ¤µ¤ì¤ëÍ×ÁÇ¿ô 13 ¤ÎÇÛÎó
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ ierr=0: Àµ¾ï ierr>0: ¥¨¥é¡¼¥³¡¼¥É

Îã 2 : fstat()

	character name*18 /'MyFile'/
	INTEGER*4 fstat, lunit/1/, statb(13)
	open( unit=lunit, file=name )
	ierr = fstat ( lunit, statb )
	if ( ierr .ne. 0 ) stop 'fstat: ¥¨¥é¡¼'
	write(*,*)'½êÍ­¼Ô¤Î UID = ',statb(5),', ¥Ö¥í¥Ã¥¯¿ô = ',statb(13)
	end

lstat : ¥Õ¥¡¥¤¥ë̾¤Ë¤è¤ë¥Õ¥¡¥¤¥ë¤Î¾õÂ֤μèÆÀ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

ierr = lstat ( name, statb )
name CHARACTER*n ÆþÎÏ ¥Õ¥¡¥¤¥ë̾
statb INTEGER*4 ½ÐÎÏ ¥Õ¥¡¥¤¥ë¾õÂ֤ξðÊ󤬳ÊǼ¤µ¤ì¤ëÍ×ÁÇ¿ô 13 ¤ÎÇÛÎó
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ ierr=0: Àµ¾ï ierr>0: ¥¨¥é¡¼¥³¡¼¥É

Îã 3 : lstat()

	character name*18 /'MyFile'/
	INTEGER*4 lstat, lunit/1/, statb(13)
	open( unit=lunit, file=name )
	ierr = lstat ( name, statb )
	if ( ierr .ne. 0 ) stop 'lstat: ¥¨¥é¡¼'
	write(*,*)'½êÍ­¼Ô¤Î UID = ',statb(5),', ¥Ö¥í¥Ã¥¯¿ô = ',statb(13)
	end

¥Õ¥¡¥¤¥ë¾õÂÖ¤ò³ÊǼ¤¹¤ëÇÛÎó¤Î¾ÜºÙ

INTEGE*4 ·¿¤ÎÇÛÎó statb ¤ËÊÖ¤µ¤ì¤ë¾ðÊó¤Î°ÕÌ£¤Ï¡¢stat(2) ¤Ç¤Î¹½Â¤ÂÎ stat ¤ÎÀâÌÀ¤ÈƱ¤¸¤Ç¤¹¡£

ͽÈ÷¤ÎÃͤϴޤޤì¤Þ¤»¤ó¡£½ç½ø¤Ï°Ê²¼¤Î¤È¤ª¤ê¤Ç¤¹¡£

statb(1) i ¥Î¡¼¥É¤¬Â¸ºß¤¹¤ë¥Ç¥Ð¥¤¥¹
statb(2) ¤³¤Î i ¥Î¡¼¥É¤ÎÈÖ¹æ
statb(3) Êݸî
statb(4) ¥Õ¥¡¥¤¥ë¤Ø¤Î¥Ï¡¼¥É¥ê¥ó¥¯¤Î¿ô
statb(5) ½êÍ­¼Ô¤Î¥æ¡¼¥¶¡¼¼±ÊÌ»Ò
statb(6) ½êÍ­¼Ô¤Î¥°¥ë¡¼¥×¼±ÊÌ»Ò
statb(7) i ¥Î¡¼¥É¤ËÂбþ¤¹¤ë¥Ç¥Ð¥¤¥¹¤Î¥Ç¥Ð¥¤¥¹¥¿¥¤¥×
statb(8) ¥Õ¥¡¥¤¥ë¤Î¹ç·×¥µ¥¤¥º
statb(9) ¥Õ¥¡¥¤¥ë¤ÎºÇ½ª¥¢¥¯¥»¥¹»þ¹ï
statb(10) ¥Õ¥¡¥¤¥ë¤ÎºÇ½ª¹¹¿·»þ¹ï
statb(11) ¥Õ¥¡¥¤¥ë¤ÎºÇ½ª¾õÂÖÊѹ¹»þ¹ï
statb(12) ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥àÆþ½ÐÎÏÁàºî¤ÎºÇŬ¥Ö¥í¥Ã¥¯¥µ¥¤¥º
statb(13) ¼ÂºÝ¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥Ö¥í¥Ã¥¯¤Î¿ô


»²¾È : stat(2)¡¢access(3F)¡¢perror(3F)¡¢time(3F)


Ãí - ¥Ñ¥¹Ì¾¤ò <sys/param.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë MAXPATHLEN ¤è¤êŤ¯¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

stat64¡¢lstat64¡¢fstat64: ¥Õ¥¡¥¤¥ë¤Î¾õÂ֤μèÆÀ

stat¡¢lstat¡¢fstat ¤Î 64 ¥Ó¥Ã¥È ¡Ö¥í¥ó¥°¥Õ¥¡¥¤¥ë¡×(Solaris 2.6 ¤È 7) ¥Ð¡¼¥¸¥ç¥ó¤Ç¤¹¡£¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤Ï¡¢Í×ÁÇ¿ô 13 ¤ÎÇÛÎó statb ¤ò INTEGER*8 ¤ÇÀë¸À¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ÅÀ¤ò½ü¤¤¤Æ¡¢Èó 64 ¥Ó¥Ã¥È¥ë¡¼¥Á¥ó¤ÈƱ¤¸¤Ç¤¹¡£

system : ¥·¥¹¥Æ¥à¥³¥Þ¥ó¥É¤Î¼Â¹Ô

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 system status = system( string )
string CHARACTER*n
ÆþÎÏ
¼Â¹Ô¤¹¤ë¥³¥Þ¥ó¥É¤ò´Þ¤àʸ»úÎó
Ìá¤êÃÍ INTEGER*4
½ÐÎÏ
¼Â¹Ô¤µ¤ì¤¿¥·¥§¥ë¤Î½ªÎ»¾õÂÖ¡£
¤³¤ÎÃͤÎÀâÌÀ¤Ë¤Ä¤¤¤Æ¤Ï wait(2) ¤ò
»²¾È

Îã : system()

	character*8 string / 'ls s*' /
	INTEGER*4 status, system
	status = system( string )
	if ( status .ne. 0 ) stop 'system: ¥¨¥é¡¼'
	end

´Ø¿ô system ¤Ï¡¢¤¢¤¿¤«¤â¥³¥Þ¥ó¥É¤È¤·¤Æ¥­¡¼ÆþÎϤµ¤ì¤¿¤«¤Î¤è¤¦¤Ë¡¢¥æ¡¼¥¶¡¼¤Î¥·¥§¥ë¤Ëʸ»úÎó string ¤òÅϤ·¤Þ¤¹¡£


Ãí - string ¤ÎŤµ¤Ï 1,024 ʸ»ú¤òͤ¨¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

system ¤¬´Ä¶­ÊÑ¿ô SHELL ¤ò¸«¤Ä¤±¤¿¾ì¹ç¡¢System ¤Ï¥³¥Þ¥ó¥É¥¤¥ó¥¿¥×¥ê¥¿ (¥·¥§¥ë) ¤È¤·¤Æ SHELL ¤ÎÃͤò»ÈÍѤ·¡¢¤½¤ì°Ê³°¤Ï sh(l) ¤ò»ÈÍѤ·¤Þ¤¹¡£

¸½¥×¥í¥»¥¹¤Ï¥³¥Þ¥ó¥É¤¬½ªÎ»¤¹¤ë¤Þ¤ÇÂÔµ¡¤·¤Þ¤¹¡£

Îò»ËŪ¤Ë¤Ï¡¢cc ¤È f77 ¤Ï¤½¤ì¤¾¤ì°Û¤Ê¤Ã¤¿Á°Äó¤ÇȯŸ¤·¤Æ¤­¤Þ¤·¤¿¡£

system ´Ø¿ô¤Ï³«¤¤¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò¤¹¤Ù¤Æ¥Õ¥é¥Ã¥·¥å¤·¤Þ¤¹¡£

»²¾È : execve(2)¡¢wait(2)¡¢system(3)

sysytem() ¤Ï¥Þ¥ë¥Á¥¹¥ì¥Ã¥ÉÂбþ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥Þ¥ë¥Á¥¹¥ì¥Ã¥É¥×¥í¥°¥é¥à¡¢¤Þ¤¿¤ÏÊÂÎó¥×¥í¥°¥é¥à¤«¤é¤Ï¸Æ¤Ó½Ð¤µ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

time¡¢ctime¡¢ltime¡¢gmtime : ¥·¥¹¥Æ¥à»þ´Ö¤Î¼èÆÀ

time ɸ½à¥Ð¡¼¥¸¥ç¥ó : ¥·¥¹¥Æ¥à»þ´Ö¤òÀ°¿ôÃÍ (0 GMT 1970/1/1 ¤òµ¯ÅÀ¤È¤·¤¿Éÿô) ¤È¤·¤ÆÆÉ¤ß¼è¤ë VMS ¥Ð¡¼¥¸¥ç¥ó : ¥·¥¹¥Æ¥à»þ´Ö¤òʸ»ú (hh:mm:ss) ¤È¤·¤ÆÆÉ¤ß¼è¤ë
ctime ¥·¥¹¥Æ¥à»þ´Ö¤ò ASCII ʸ»úÎó¤ËÊÑ´¹¤¹¤ë
ltime ¥·¥¹¥Æ¥à»þ´Ö¤ò¸½ÃÏ»þ´Ö¤Î·î¡¢Æü¤Ê¤É¤Ëʬ²ò¤¹¤ë
gmtime ¥·¥¹¥Æ¥à»þ´Ö¤ò GMT ¤Î·î¡¢Æü¤Ê¤É¤Ëʬ²ò¤¹¤ë

¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤Ï°Ê²¼¤Î´Ø¿ô¤ò¼Â¹Ô¤·¤Þ¤¹¡£

time : ¥·¥¹¥Æ¥à»þ´Ö¤Î¼èÆÀ

time() ¤Ë¤Ï¡¢É¸½à¥Ð¡¼¥¸¥ç¥ó¤È VMS ¥Ð¡¼¥¸¥ç¥ó¤Î 2 ¤Ä¤Î¥Ð¡¼¥¸¥ç¥ó¤¬¤¢¤ê¤Þ¤¹¡£f77 ¤Î¥³¥Þ¥ó¥É¹Ô¥ª¥×¥·¥ç¥ó -lV77 ¤ò»ØÄꤷ¤¿¾ì¹ç¤Ï VMS ¥Ð¡¼¥¸¥ç¥ó¤¬¸Æ¤Ó½Ð¤µ¤ì¡¢¤½¤ì°Ê³°¤Î¾ì¹ç¤Ë¤Ïɸ½à¥Ð¡¼¥¸¥ç¥ó¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£(¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤ÎVMS ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢f77 ¤Ç¤Ï -lv77 ¥é¥¤¥Ö¥é¥ê¥ª¥×¥·¥ç¥ó¤ò»ØÄꤹ¤ë¤È»È¤¨¤Þ¤¹¤¬¡¢f95 ¤Ç¤Ï»ÈÍѤǤ­¤Þ¤»¤ó¡£)

ɸ½à´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 time n = time() ɸ½à¥Ð¡¼¥¸¥ç¥ó
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ 0:0:0 GMT 1970/1/1 ¤òµ¯ÅÀ¤È¤·¤¿Éÿô

INTEGER*8 ½ÐÎÏ 64 ¥Ó¥Ã¥È´Ä¶­¤Ç¤Ï¡¢time ¤Ï INTEGER*8 ¤ÎÃͤòÌ᤹¡£

´Ø¿ô time ( ) ¤Ï¡¢¥°¥ê¥Ë¥Ã¥¸»þ´Ö¤Ç 1970 ǯ 1 ·î 1 Æü 00 »þ 00 ʬ 00 É䫤é¤Î»þ´Ö¤òÉÿô¤Ç¼¨¤¹À°¿ô¤òÊÖ¤·¤Þ¤¹¡£¤³¤ì¤Ï¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à»þ·×¤ÎÃͤǤ¹¡£

Îã : time() ¡Ý ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤ËÉÕ°¤¹¤ëɸ½à¥Ð¡¼¥¸¥ç¥ó

    INTEGER*4  n, time
    n = time()
    write(*,*)  '1970/1/1  0 »þ GMT¡¡¤«¤é¤ÎÉÿô¡¡=  ',  n
end
demo% f77 -silent ttime.f
demo% a.out 
 1970/1/1  0 »þ GMT¡¡¤«¤é¤ÎÉÿô¡¡=¡¡913240205
demo% 

time ¤Î VMS ¥Ð¡¼¥¸¥ç¥ó¤Ï¡¢¸½ºß¤Î¥·¥¹¥Æ¥à»þ´Ö¤òʸ»úÎó¤È¤·¤Æ¼èÆÀ¤¹¤ë¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç¤¹¡£

VMS ¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call time( t )
t CHARACTER*8 ½ÐÎÏ hh:mm:ss ·Á¼°¤Î»þ´Ö hh¡¢mm¡¢ss ¤Ï 2 ·å¤Î¿ô»ú
hh ¤Ï»þ mm ¤Ïʬ ss ¤ÏÉÃ

Îã : time(t)¡¢VMS ¥Ð¡¼¥¸¥ç¥ó¡¢ctime ¡Ý ¥·¥¹¥Æ¥à»þ´Ö¤ò ASCII ¤ËÊÑ´¹¤·¤Þ¤¹¡£

	character  t*8
	call time( t )
	write(*, "(' ¸½ºß¤Î»þ¹ï¤Ï¡¢ ', A8 )")  t
	end
demo% f77 -silent ttimeV.f -lV77 
demo% a.out 
¸½ºß¤Î»þ¹ï¤Ï¡¢ 08:14:13 
demo% 

ctime : ¥·¥¹¥Æ¥à»þ´Ö¤Îʸ»ú¤Ø¤ÎÊÑ´¹

´Ø¿ô ctime ¤Ï¡¢¥·¥¹¥Æ¥à»þ´Ö stime ¤òÊÑ´¹¤·¤Æ¡¢24 ʸ»ú¤Î ASCII ʸ»úÎó¤È¤·¤ÆÊÖ¤·¤Þ¤¹¡£

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

CHARACTER ctime*24 string = ctime( stime )
stime INTEGER*4 ÆþÎÏ time ( ) ¤ÇÆÉ¤ß¼è¤Ã¤¿¥·¥¹¥Æ¥à»þ´Ö
(ɸ½à¥Ð¡¼¥¸¥ç¥ó)
Ìá¤êÃÍ CHARACTER*24 ½ÐÎÏ Ê¸»úÎó¤ËÊÑ´¹¤µ¤ì¤¿¥·¥¹¥Æ¥à»þ´Ö¡£
ctime ¤È string ¤Ï CHARACTER*24
¤È¤·¤Æ·¿Àë¸À¤¹¤ë

°Ê²¼¤Ë ctime ¤¬Ì᤹Ãͤνñ¼°¤ò¼¨¤·¤Þ¤¹¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢ctime(3C) ¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Îã : ctime()

    character*24 ctime, string
    INTEGER*4  n, time
    n = time()
    string = ctime( n )
    write(*,*) 'ctime: ', string
    end
demo% f77 -silent tctime.f 
demo% a.out 
 ctime: Wed Dec  9 13:50:05 1998 
demo% 

ltime : ¥·¥¹¥Æ¥à»þ´Ö¤Î·î¡¢Æü¤Ê¤É (¸½ÃÏ»þ´Ö) ¤Ø¤Îʬ²ò

¤³¤Î¥ë¡¼¥Á¥ó¤Ï¥·¥¹¥Æ¥à»þ´Ö¤ò¸½ÃÏ»þ´Ö¤Î·î¡¢Æü¤Ê¤É¤Ëʬ²ò¤·¤Þ¤¹¡£

¥µ¥Ö¥ë¡¼¥Á¥ó¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

call ltime( stime, tarray )
stime INTEGER*4 ÆþÎÏ
time() ¤ÇÆÉ¤ß¼è¤Ã¤¿¥·¥¹¥Æ¥à»þ´Ö 
(ɸ½à¥Ð¡¼¥¸¥ç¥ó)
tarray INTEGER*4(9) ½ÐÎÏ
¸½ÃÏ»þ´Ö¤ÎÆü¡¢·î¡¢Ç¯¡¢... ¤Ëʬ²ò¤µ¤ì¤¿
¥·¥¹¥Æ¥à»þ´Ö

tarray ¤ÎÍ×ÁǤΰÕÌ£¤Ë¤Ä¤¤¤Æ¤Ï¡¢¼¡¤Î¡Ögmtime : ¥·¥¹¥Æ¥à»þ´Ö¤Î·î¡¢Æü¤Ê¤É (GMT) ¤Ø¤Îʬ²ò¡×¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Îã : ltime()

	integer*4  stime, tarray(9), time
	stime = time()
	call ltime( stime, tarray )
	write(*,*) 'ltime: ', tarray
	end
demo% f77 -silent tltime.f 
demo% a.out 
 ltime: 25 49 10 12 7 91 1 223 1 
demo% 

gmtime : ¥·¥¹¥Æ¥à»þ´Ö¤Î·î¡¢Æü¤Ê¤É (GMT) ¤Ø¤Îʬ²ò

¤³¤Î¥ë¡¼¥Á¥ó¤Ï¥·¥¹¥Æ¥à»þ´Ö¤ò GMT ¤Î·î¡¢Æü¤Ê¤É¤Ëʬ²ò¤·¤Þ¤¹¡£

¥µ¥Ö¥ë¡¼¥Á¥ó

call gmtime( stime, tarray )
stime INTEGER*4 ÆþÎÏ time() ¤ÇÆÉ¤ß¼è¤Ã¤¿¥·¥¹¥Æ¥à»þ´Ö
(ɸ½à¥Ð¡¼¥¸¥ç¥ó)
tarray INTEGER*4(9) ½ÐÎÏ GMT ¤ÎÆü¡¢·î¡¢Ç¯¡¢... ¤Ëʬ²ò¤µ¤ì¤¿
¥·¥¹¥Æ¥à»þ´Ö

Îã : gmtime

	integer*4  stime, tarray(9), time
	stime = time()
	call gmtime( stime, tarray )
	write(*,*) 'gmtime: ', tarray
	end
demo% f77 -silent tgmtime.f
demo% a.out
 gmtime:   12  44  19  18  5  94  6  168  0
demo%

ctime(3V) ¤«¤é¤Î tarray() ¤ÎÃÍ¡§°Ê²¼¤Ïź»ú¤ÎÃÍ¡¢Ã±°Ì¡¢ÈϰϤòɽ¤·¤Æ¤¤¤Þ¤¹

1 ÉÃ (0 - 61)
2 ʬ (0 - 59)
3 »þ´Ö (0 - 23)
4 Æü (1 - 31)
5 ·î (0 - 11)
6 ǯ - 1900
7 ÍËÆü (ÆüÍËÆü¤Ï 0)
8 ǯ´ÖÄ̤·¤ÎÆü¿ô (0 - 365)
9 ²Æ»þ´Ö¡¢Í­¸ú¤Ç¤¢¤ì¤Ð 1


¤³¤ì¤é¤ÎÃÍ¤Ï C ¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó ctime(3C) ¤ÇÄêµÁ¤µ¤ì¤Æ¤ª¤ê¡¢59 Éäòͤ¨¤ëÉÿô¤ò¥·¥¹¥Æ¥à¤¬ÊÖ¤¹Íýͳ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Þ¤¹¡£

»²¾È¡§idate(3F)¡¢fdate(3F)

ctime64¡¢gmtime64¡¢ltime64¡§64 ¥Ó¥Ã¥È´Ä¶­ÍѤÎ
¥·¥¹¥Æ¥à»þ´Ö¤Î¥ë¡¼¥Á¥ó

¤³¤ì¤é¤Ï¡¢¥ë¡¼¥Á¥ó ctime¡¢gmtime¡¢ltime ¤ËÂбþ¤·¤¿¥Ð¡¼¥¸¥ç¥ó¤Ç¡¢64 ¥Ó¥Ã¥È´Ä¶­¤È¤Î¸ß´¹À­¤òÈ÷¤¨¤ë¤¿¤á¤ËÍѰդµ¤ì¤¿¤â¤Î¤Ç¤¹¡£ctime64¡¢gmtime64¡¢ltime64 ¤Ï¡¢ÆþÎÏÊÑ¿ô stime ¤ò INTEGER*8 ¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¤³¤È°Ê³°¤Ï¡¢ctime¡¢gmtime¡¢ltime ¤ÈƱ¤¸¤â¤Î¤Ç¤¹¡£

¤³¤Î¥ë¡¼¥Á¥ó¤ò¡¢INTEGER*8 ¤Î stime ¤È¤È¤â¤Ë 32 ¥Ó¥Ã¥È´Ä¶­¤Ç»ÈÍѤ·¤¿¾ì¹ç¡¢stime ¤ÎÃͤ¬ INTEGER*4 ¤ÎÈϰϤòͤ¨¤Æ¤¤¤ë¤È¡¢ctime64 ¤ÎÌá¤êÃͤϤ¹¤Ù¤Æ¥¢¥¹¥¿¥ê¥¹¥¯¤Ë¤Ê¤ê¡¢Æ±»þ¤Ë gmtime ¤È ltime ¤Î tarray ÇÛÎó¤Ë¤Ï -1 ¤¬½¼Å¶¤µ¤ì¤Þ¤¹¡£

topen¡¢tclose¡¢tread¡¢...¡¢tstate :
¥Æ¡¼¥×Æþ½ÐÎÏ

(FORTRAN 77 ¤Î¤ß) ¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤ò»ÈÍѤ¹¤ë¤È¡¢¼§µ¤¥Æ¡¼¥×¤òÁàºî¤Ç¤­¤Þ¤¹¡£

topen ¥Ç¥Ð¥¤¥¹Ì¾¤ò¥Æ¡¼¥×¤ÎÏÀÍýÁõÃ֤˷ë¹ç¤¹¤ë
tclose ¥Õ¥¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯¤ò½ñ¤­¹þ¤ß¡¢¥Æ¡¼¥×¥Ç¥Ð¥¤¥¹¥Á¥ã¥Í¥ë¤òÊĤ¸¡¢
tlu (¥Æ¡¼¥×ÏÀÍýÁõÃÖ) ¤È¤Î·ë¹ç¤òÀÚ¤êÎ¥¤¹
tread ¥Æ¡¼¥×¤«¤é¼¡¤ÎʪÍý¥ì¥³¡¼¥É¤òÆÉ¤ß½Ð¤·¤Æ¥Ð¥Ã¥Õ¥¡¤ËÆþ¤ì¤ë
twrite ¥Ð¥Ã¥Õ¥¡¤«¤é¼¡¤ÎʪÍý¥ì¥³¡¼¥É¤ò¼è¤ê½Ð¤·¤Æ¥Æ¡¼¥×¤Ë½ñ¤­¹þ¤à
trewin ¥Æ¡¼¥×¤òºÇ½é¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Ë´¬¤­Ì᤹
tskipf ¥Õ¥¡¥¤¥ë¤È¥ì¥³¡¼¥É¤Þ¤¿¤Ï¤½¤Î¤É¤Á¤é¤«¤òÁ°Êý¤Ø¥¹¥­¥Ã¥×¤·¡¢¥Õ¥¡¥¤¥ë½ªÎ»¾õÂÖ¤ò¥ê¥»¥Ã¥È¤¹¤ë
tstate ¥Æ¡¼¥×Æþ½ÐÎÏ¥Á¥ã¥Í¥ë¤ÎÏÀÍý¾õÂÖ¤ò·èÄꤹ¤ë


1 ¤Ä¤ÎÁõÃ֤Ǥϡ¢¤³¤ì¤é¤Î´Ø¿ô¤òɸ½à Fortran Æþ½ÐÎϤȺ®ºß¤µ¤»¤Æ»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£

ºÇ½é¤Ë topen() ¤ò»ÈÍѤ·¤Æ¡¢»ØÄꤵ¤ì¤¿¥Ç¥Ð¥¤¥¹¤ËÂФ·¤Æ¥Æ¡¼¥×ÏÀÍýÁõÃÖ tlu ¤ò³«¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£¤½¤Î¸å¤Ç¡¢»ØÄꤵ¤ì¤¿ tlu ¤Ë´Ø¤¹¤ë¾¤ÎÁàºî¤ò¤¹¤Ù¤Æ¹Ô¤¤¤Þ¤¹¡£
tlu ¤ÏÄ̾ï¤Î Fortran ÏÀÍýÁõÃ֤ȤϤޤ俤¯´Ø·¸¤¢¤ê¤Þ¤»¤ó¡£

¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢»ÈÍѤ¹¤ëÁ°¤Ë INTEGER*4 ·¿Àë¸Àʸ¤Ç̾Á°¤òÀë¸À¤·¤Æ¤ª¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤ÇÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

topen : ¥Ç¥Ð¥¤¥¹¤È¥Æ¡¼¥×ÏÀÍýÁõÃ֤Ȥηë¹ç

INTEGER*4 topen n = topen( tlu, devnam, islabeled )
tlu INTEGER*4 ÆþÎÏ 0 ¡Á 7 ¤ÎÈϰϤΥơ¼¥×ÏÀÍýÁõÃÖ
devnam CHARACTER ÆþÎÏ ¥Ç¥Ð¥¤¥¹Ì¾¡£Îã : '/dev/rst0'
islabeled LOGICAL ÆþÎÏ ¿¿ = ¥Æ¡¼¥×¤Ï¥é¥Ù¥ëÉÕ¤­
Ãí: ¥é¥Ù¥ë¤Ï¥Æ¡¼¥×¾å¤ÎºÇ½é¤Î¥Õ¥¡¥¤¥ë
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ n=0: Àµ¾ï n<0: ¥¨¥é¡¼


¤³¤Î´Ø¿ô¤Ï¥Æ¡¼¥×¤ò¶îư¤¹¤ë¤â¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï perror(3f) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Îã : topen() ¡Ý 1/4 ¥¤¥ó¥Á¤Î¥Æ¡¼¥×¥Õ¥¡¥¤¥ë¤ò³«¤­¤Þ¤¹¡£

	CHARACTER devnam*9 / '/dev/rst0' /
	INTEGER*4 n / 0 /, tlu / 1 /, topen
	LOGICAL islabeled / .false. /
	n = topen( tlu, devnam, islabeled )
	IF ( n .LT. 0 ) STOP "topen: ³«¤±¤Þ¤»¤ó"
	WRITE(*,'("topen ok:", 2I3, 1X, A10)') n, tlu,  devnam
	END

½ÐÎϤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

topen ok: 0 1 /dev/rst0 

tclose : ¥Õ¥¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯¤ò½ñ¤­¹þ¤ß¡¢¥Æ¡¼¥×¥Á¥ã¥Í¥ë¤òÊĤ¸¡¢tlu ¤òÀÚ¤êÎ¥¤¹

¤³¤Î´Ø¿ô¤Ï¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 tclose n = tclose ( tlu )
tlu INTEGER*4 ÆþÎÏ 0 ¡Á 7 ¤ÎÈϰϤΥơ¼¥×ÏÀÍýÁõÃÖ
n INTEGER*4 Ìá¤êÃÍ n=0: Àµ¾ï n<0: ¥¨¥é¡¼


Ãí°Õ - tclose() ¤ÏÁõÃ֤Υݥ¤¥ó¥¿¤Î¸½ºß°ÌÃ֤ξ¸å¤Ë¥Õ¥¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯¤òÃÖ¤­¡¢ÁõÃÖ¤òÊĤ¸¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢trewin() ¤Ç¥Æ¡¼¥×¤ò´¬¤­Ìᤷ¤Æ¤«¤é tclose() ¤ò»ÈÍѤ·¤¿¾ì¹ç¡¢¤½¤ÎÁõÃÖ¤ÎÆâÍÆ¤Ï¤¹¤Ù¤Æ¼º¤ï¤ì¤Þ¤¹¡£

Îã : tclose() ¡Ý ³«¤¤¤Æ¤¤¤ë 1/4 ¥¤¥ó¥Á¤Î¥Æ¡¼¥×¥Õ¥¡¥¤¥ë¤òÊĤ¸¤Þ¤¹¡£

	CHARACTER devnam*9 / '/dev/rst0' /
	INTEGER*4 n / 0 /, tlu / 1 /, tclose, topen
	LOGICAL islabeled / .false. /
	n = topen( tlu, devnam, islabeled )
	n = tclose( tlu )
	IF ( n .LT. 0 ) STOP "tclose: ÊĤ¸¤é¤ì¤Þ¤»¤ó"
	WRITE(*, '("tclose ok:", 2I3, 1X, A10)')  n, tlu,  devnam
	END

½ÐÎϤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

tclose ok: 0 1  /dev/rst0

twrite : ¼¡¤ÎʪÍý¥ì¥³¡¼¥É¤Î¥Æ¡¼¥×¤Ø¤Î½ñ¤­¹þ¤ß

¤³¤Î´Ø¿ô¤Ï¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 twrite n = twrite( tlu, buffer )
tlu INTEGER*4 ÆþÎÏ 0 ¡Á 7 ¤ÎÈϰϤΥơ¼¥×ÏÀÍýÁõÃÖ
buffer CHARACTER ÆþÎÏ 512 ¤ÎÇÜ¿ô¤Î¥µ¥¤¥º¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤
n INTEGER*4 Ìá¤êÃÍ n>0: Àµ¾ï¡£n ¤Ï½ñ¤­¹þ¤Þ¤ì¤¿¥Ð¥¤¥È¿ô n=0: ¥Æ¡¼¥×¤Î½ª¤ï¤ê n<0: ¥¨¥é¡¼

ʪÍý¥ì¥³¡¼¥ÉŤ¬ buffer ¤Î¥µ¥¤¥º¤Ë¤Ê¤ê¤Þ¤¹¡£

Îã : twrite() ¡Ý 2 ¤Ä¤Î¥ì¥³¡¼¥É¤«¤é¤Ê¤ë¥Õ¥¡¥¤¥ë¤ò½ñ¤­¹þ¤ß¤Þ¤¹¡£

	CHARACTER devnam*9 / '/dev/rst0' /, rec1*512 / "abcd" /, 
&	   rec2*512 / "wxyz" /
	INTEGER*4 n / 0 /, tlu / 1 /, tclose, topen, twrite
	LOGICAL islabeled / .false. /
	n = topen( tlu, devnam, islabeled )
	IF ( n .LT. 0 ) STOP "topen: ³«¤±¤Þ¤»¤ó"
	n = twrite( tlu, rec1 )
	IF ( n .LT. 0 ) STOP "twrite: ½ñ¤±¤Þ¤»¤ó(1)"
	n = twrite( tlu, rec2 )
	IF ( n .LT. 0 ) STOP "twrite: ½ñ¤±¤Þ¤»¤ó(2)"
	WRITE(*, '("twrite ok:", 2I4, 1X, A10)')  n, tlu, devnam
	END

½ÐÎϤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

twrite ok: 512 1 /dev/rst0 

tread : ¥Æ¡¼¥×¤«¤é¤Î¼¡¤ÎʪÍý¥ì¥³¡¼¥É¤ÎÆÉ¤ß¼è¤ê

¤³¤Î´Ø¿ô¤Ï¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 tread n = tread( tlu, buffer )
tlu INTEGER*4 ÆþÎÏ 0 ¡Á 7 ¤ÎÈϰϤΥơ¼¥×ÏÀÍýÁõÃÖ
buffer CHARACTER ÆþÎÏ ¥µ¥¤¥º¤Ï 512 ¤ÎÇÜ¿ô¤Ç¡¢ÆÉ¤ß¼è¤é¤ì¤ëʪÍý¥ì¥³¡¼¥É¤ÎºÇÂ祵¥¤¥º¤¬Æþ¤ë¤À¤±¤ÎÂ礭¤µ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤
n INTEGER*4 Ìá¤êÃÍ n>0: Àµ¾ï¡£n ¤ÏÆÉ¤ß¼è¤é¤ì¤¿¥Ð¥¤¥È¿ô n<0: ¥¨¥é¡¼ n=0: ¥Õ¥¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯

¥Æ¡¼¥×¤Î¥Ý¥¤¥ó¥¿¤¬¥Õ¥¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯¤Þ¤¿¤Ï¥Æ¡¼¥×½ªÎ»¥Þ¡¼¥¯¤Î°ÌÃ֤ˤ¢¤ë¾ì¹ç¡¢tread ¤ÏÃͤòÊÖ¤·¤Þ¤¹¤¬¡¢¥Æ¡¼¥×¤ÎÆÉ¤ß¼è¤ê¤Ï¹Ô¤¤¤Þ¤»¤ó¡£

Îã: tread() ¡Ý Á°¤ÎÎã¤Ç½ñ¤­¹þ¤Þ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎºÇ½é¤Î¥ì¥³¡¼¥É¤òÆÉ¤ß¼è¤ê¤Þ¤¹¡£

	CHARACTER devnam*9 / '/dev/rst0' /, onerec*512 / " " /
	INTEGER*4 n / 0 /, tlu / 1 /, topen, tread
	LOGICAL islabeled / .false. /
	n = topen( tlu, devnam, islabeled )
	IF ( n .LT. 0 ) STOP "topen: ³«¤±¤Þ¤»¤ó"
	n = tread( tlu, onerec )
	IF ( n .LT. 0 ) STOP "tread: ÆÉ¤á¤Þ¤»¤ó"
	WRITE(*,'("tread ok:", 2I4, 1X, A10)')  n, tlu,  devnam
	WRITE(*,'( A4)')  onerec
	END

½ÐÎϤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

tread ok: 512 1 /dev/rst0 
abcd 

trewin : ºÇ½é¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Ø¤Î¥Æ¡¼¥×¤Î
´¬¤­Ìᤷ

¤³¤Î´Ø¿ô¤Ï¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 trewin n = trewin ( tlu )
tlu INTEGER*4 ÆþÎÏ 0 ¡Á 7 ¤ÎÈϰϤΥơ¼¥×ÏÀÍýÁõÃÖ
n INTEGER*4 Ìá¤êÃÍ n=0: Àµ¾ï n<0: ¥¨¥é¡¼

¥Æ¡¼¥×¤Ë¥é¥Ù¥ë¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢´¬¤­Ìᤷ¸å¤Ë¥é¥Ù¥ë¤Ï¥¹¥­¥Ã¥×¤µ¤ì¤Þ¤¹¡£

Îã 1 : trewin() ¡Ý ŵ·¿Åª¤Ê»ÈÍÑÎã (³ºÅöÉôʬ¤Î¤ß)

	CHARACTER devnam*9 / '/dev/rst0' / 
	INTEGER*4 n /0/, tlu /1/, tclose, topen, tread, trewin 
	... 
	n = trewin( tlu ) 
	IF ( n .LT. 0 ) STOP "trewin: ´¬¤­Ìᤷ¤Ç¤­¤Þ¤»¤ó" 
	WRITE(*, '("trewin ok:", 2I4, 1X, A10)') n, tlu, devnam 
	... 
	END 

Îã 2 : trewin() ¡Ý 2 ¤Ä¤Î¥ì¥³¡¼¥É¤«¤é¤Ê¤ë¥Õ¥¡¥¤¥ë¤Ç 3 ¥ì¥³¡¼¥É¤ÎÆÉ¤ß¼è¤ê¤ò»î¤ß¡¢´¬¤­Ìᤷ¤Æ¡¢1 ¥ì¥³¡¼¥É¤òÆÉ¤ß¼è¤ê¤Þ¤¹¡£

	CHARACTER devnam*9 / '/dev/rst0' /, onerec*512 / " " /
	INTEGER*4 n / 0 /, r, tlu / 1 /, topen, tread, trewin
	LOGICAL islabeled / .false. /
	n = topen( tlu, devnam, islabeled )
	IF ( n .LT. 0 ) STOP "topen: ³«¤±¤Þ¤»¤ó"
	DO r = 1, 3
	   n = tread( tlu, onerec )
	   WRITE(*,'(1X, I2, 1X, A4)')  r, onerec
	END DO
	n = trewin( tlu )
	IF ( n .LT. 0 ) STOP "trewin: ´¬¤­Ìᤷ¤Ç¤­¤Þ¤»¤ó"
	WRITE(*, '("trewin ok:" 2I4, 1X, A10)')  n, tlu, devnam
	n = tread( tlu, onerec )
	IF ( n .LT. 0 ) STOP "tread: ´¬¤­Ìᤷ¸å¡¢ÆÉ¤á¤Þ¤»¤ó"
	WRITE(*,'(A4)')  onerec
	END

½ÐÎϤϼ¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

1 abcd 
2 wxyz 
3 wxyz 
trewin ok: 0 1 /dev/rst0 
abcd 

tskipf : ¥Õ¥¡¥¤¥ë¤È¥ì¥³¡¼¥É¤Î¥¹¥­¥Ã¥×¡¢¥Õ¥¡¥¤¥ë
½ªÎ»¾õÂ֤Υꥻ¥Ã¥È

¤³¤Î´Ø¿ô¤Ï¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 tskipf n = tskipf( tlu, nf, nr )
tlu INTEGER*4 ÆþÎÏ 0 ¡Á 7 ¤ÎÈϰϤΥơ¼¥×ÏÀÍýÁõÃÖ
nf INTEGER*4 ÆþÎÏ ºÇ½é¤Ë¥¹¥­¥Ã¥×¤¹¤ë¥Õ¥¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯¤Î¿ô
nr INTEGER*4 ÆþÎÏ ¥Õ¥¡¥¤¥ë¥¹¥­¥Ã¥×¸å¤Ë¥¹¥­¥Ã¥×¤¹¤ëʪÍý¥ì¥³¡¼¥É¿ô
n INTEGER*4 Ìá¤êÃÍ n=0: Àµ¾ï n<0: ¥¨¥é¡¼

¤³¤Î´Ø¿ô¤Ï¸åÊý¤Ø¤Î¥¹¥­¥Ã¥×¤Ï¹Ô¤¤¤Þ¤»¤ó¡£

tskipf ¤Ï¡¢¤Þ¤ººÇ½é¤ËÁ°Êý¤Î nf ¸Ä¤Î¥Õ¥¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯¤ò¥¹¥­¥Ã¥×¤·¡¢¼¡¤ËÁ°Êý¤Î nr ¸Ä¤ÎʪÍý¥ì¥³¡¼¥É¤ò¥¹¥­¥Ã¥×¤·¤Þ¤¹¡£¸½ºß¤Î¥Õ¥¡¥¤¥ë¤Î¥Ý¥¤¥ó¥¿¤¬¥Õ¥¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯¤Î°ÌÃ֤ˤ¢¤ë¾ì¹ç¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤â¥¹¥­¥Ã¥×¤¹¤ë¥Õ¥¡¥¤¥ë¤Î 1 ¸Ä¤È¤·¤Æ¿ô¤¨¤é¤ì¤Þ¤¹¡£tskipf ¤Ï¡¢¥Õ¥¡¥¤¥ë½ªÎ»¾õÂÖ¤ò¥ê¥»¥Ã¥È¤¹¤ë¸ú²Ì¤â¤¢¤ê¤Þ¤¹¡£¼¡¤ËÀâÌÀ¤¹¤ë tstate ¤ÈÈæ³Ó¤·¤Æ¤¯¤À¤µ¤¤¡£

tskipf()¤ÎÎã: ŵ·¿Åª¤Ê»ÈÍÑÎã¤Î³ºÅöÉôʬ¤Î¤ß¤ò¼¨¤·¤Þ¤¹¡£4 ¸Ä¤Î¥Õ¥¡¥¤¥ë¤È 1 ¸Ä¤Î¥ì¥³¡¼¥É¤ò¥¹¥­¥Ã¥×¤·¤Þ¤¹¡£

	INTEGER*4 nfiles / 4 /, nrecords / 1 /, tskipf, tlu / 1 / 
	... 
	n = tskipf( tlu, nfiles, nrecords ) 
	IF ( n .LT. 0 ) STOP "tskipf: ¥¹¥­¥Ã¥×¤Ç¤­¤Þ¤»¤ó" 
	...

tstate ¤ÈÈæ³Ó¤·¤Æ¤¯¤À¤µ¤¤¡£

tstate : ¥Æ¡¼¥×Æþ½ÐÎÏ¥Á¥ã¥Í¥ë¤ÎÏÀÍý¾õÂÖ¤ÎÆÉ¤ß¼è¤ê

¤³¤Î´Ø¿ô¤Ï¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 tstate n = tstate( tlu, fileno, recno, errf, eoff, eotf, tcsr )
tlu INTEGER*4 ÆþÎÏ 0 ¡Á 7 ¤ÎÈϰϤΥơ¼¥×ÏÀÍýÁõÃÖ
fileno INTEGER*4 ½ÐÎÏ ¸½ºß¤Î¥Õ¥¡¥¤¥ëÈÖ¹æ
recno INTEGER*4 ½ÐÎÏ ¸½ºß¤Î¥ì¥³¡¼¥ÉÈÖ¹æ
errf LOGICAL ½ÐÎÏ ¿¿ = ¥¨¥é¡¼¤¬È¯À¸¤·¤¿
eoff LOGICAL ½ÐÎÏ ¿¿ = ¥Õ¥¡¥¤¥ë¥Ý¥¤¥ó¥¿¤Î¸½ºß°ÌÃ֤ϥե¡¥¤¥ë½ªÎ»¥Þ¡¼¥¯
eotf LOGICAL ½ÐÎÏ ¿¿ = ¥Æ¡¼¥×¤¬ÏÀÍý¥Æ¡¼¥×½ªÎ»¥Þ¡¼¥¯¤Ë㤷¤¿
tcsr INTEGER*4 ½ÐÎÏ ¿¿ = ¥Ç¥Ð¥¤¥¹¤Ç¥Ï¡¼¥É¥¨¥é¡¼¤¬È¯À¸¤·¤¿¡£tcsr ¤Ë¤Ï¥Æ¡¼¥×¥É¥é¥¤¥ÖÀ©¸æ¾õÂ֥쥸¥¹¥¿¤ÎÃͤ¬Æþ¤ë¡£¥½¥Õ¥È¥¦¥§¥¢¥¨¥é¡¼¤Î¾ì¹ç¤Ï tcsr ¤Ë¤Ï¥¼¥í¤¬ÊÖ¤µ¤ì¤ë¡£¤³¤Î¾õÂ֥쥸¥¹¥¿¤ËÊÖ¤µ¤ì¤ëÃͤϥơ¼¥×¥É¥é¥¤¥Ö¤Î¥á¡¼¥«¡¼¤È¥µ¥¤¥º¤Ë¤è¤êÂ礭¤¯°Û¤Ê¤ë¡£

¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï st(4s) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

eoff ¤¬¿¿¤Ç¤¢¤ë´Ö¤Ï tlu ¤«¤é¤ÎÆÉ¤ß¼è¤ê¤Ï¤Ç¤­¤Þ¤»¤ó¡£tskipf() ¤ò»ÈÍѤ·¤Æ¥Õ¥¡¥¤¥ë 1 ¤È¥ì¥³¡¼¥É 0 ¤ò¥¹¥­¥Ã¥×¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¤³¤Î¥Õ¥¡¥¤¥ë½ªÎ»¾õÂ֥ե饰¤òµ¶¤ËÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

	n = tskipf( tlu, 1, 0). 

¤³¤Î¤è¤¦¤Ë¤¹¤ë¤È¡¢¸å³¤ÎÀµ¤·¤¤¥ì¥³¡¼¥É¤òÆÉ¤ß¼è¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¥Æ¡¼¥×¤Î½ª¤ï¤ê (EOT) ¤Ï¶õ¤Î¥Õ¥¡¥¤¥ë¤Ë¤è¤ê¼¨¤µ¤ì¡¢¤·¤Ð¤·¤ÐÆó½Å¤Î EOF ¥Þ¡¼¥¯¤È¤·¤ÆÉ½¤µ¤ì¤Þ¤¹¡£EOT ¤è¤ê¸å¤òÆÉ¤à¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¤¬¡¢EOT ¤è¤ê¸å¤Ë½ñ¤¯¤³¤È¤Ï¤Ç¤­¤Þ¤¹¡£

Îã : 2 ¤Ä¤Î¥ì¥³¡¼¥É¤«¤é¤Ê¤ë¥Õ¥¡¥¤¥ë¤ò 3 ¤Ä½ñ¤­¹þ¤ß¤Þ¤¹¡£

	CHARACTER devnam*10 / '/dev/nrst0' /,
&                 f0rec1*512 / "eins" /, f0rec2*512 / "zwei" /,
&                 f1rec1*512 / "ichi" /, f1rec2*512 / "ni__" /,
&                 f2rec1*512 / "un__" /, f2rec2*512 / "deux" /
	INTEGER*4 n / 0 /, tlu / 1 /, tclose, topen, trewin, twrite
	LOGICAL islabeled / .false. /
	n = topen( tlu, devnam, islabeled )
	n = trewin( tlu )
	n = twrite( tlu, f0rec1 )
	n = twrite( tlu, f0rec2 )
	n = tclose( tlu )
	n = topen( tlu, devnam, islabeled )
	n = twrite( tlu, f1rec1 )
	n = twrite( tlu, f1rec2 )
	n = tclose( tlu )
	n = topen( tlu, devnam, islabeled )
	n = twrite( tlu, f2rec1 )
	n = twrite( tlu, f2rec2 )
	n = tclose( tlu )
	END

¼¡¤ÎÎã¤Ï¡¢tstate() ¤ò»ÈÍѤ·¤Æ EOF ¤ò¥È¥é¥Ã¥×¤·¤Ê¤¬¤é¡¢¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò½ñ¤­¹þ¤ó¤Ç¤¤¤Þ¤¹¡£

Îã : Á°¤ÎÎã¤Ç½ñ¤­¹þ¤ó¤À 3 ¤Ä¤Î¥Õ¥¡¥¤¥ë¤Î¤¹¤Ù¤Æ¤Î¥ì¥³¡¼¥É¤òÆÉ¤ß¼è¤ë¥ë¡¼¥×¤ÎÃæ¤Ç
tstate() ¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£

	CHARACTER devnam*10 / '/dev/nrst0' /, onerec*512 / " " /
	INTEGER*4 f, n / 0 /, tlu / 1 /, tcsr, topen, tread, 
&		trewin, tskipf, tstate
	LOGICAL errf, eoff, eotf, islabeled / .false. /
	n = topen( tlu, devnam, islabeled )
	n = tstate( tlu, fn, rn, errf, eoff, eotf, tcsr )
	WRITE(*,1)  'open:', fn, rn, errf, eoff, eotf, tcsr
1	FORMAT(1X, A10, 2I2, 1X, 1L, 1X, 1L,1X, 1L, 1X, I2 )
2	FORMAT(1X, A10,1X,A4,1X,2I2,1X,1L,1X,1L,1X,1L,1X,I2)
	n = trewin( tlu )
	n = tstate( tlu, fn, rn, errf, eoff, eotf, tcsr )
	WRITE(*,1)  'rewind:', fn, rn, errf, eoff, eotf, tcsr
	DO f = 1, 3
	   eoff = .false.
	   DO WHILE ( .NOT. eoff )
	      n = tread( tlu, onerec )
	      n = tstate( tlu, fn, rn, errf, eoff, eotf, tcsr )
	      IF (.NOT. eoff) WRITE(*,2) 'read:', onerec, 
&	    fn, rn, errf, eoff, eotf, tcsr
	   END DO
	   n = tskipf( tlu, 1, 0 )
	   n = tstate( tlu, fn, rn, errf, eoff, eotf, tcsr )
	   WRITE(*,1)  'tskip: ', fn, rn, errf, eoff, eotf, tcsr
	END DO
	END

½ÐÎϤϰʲ¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

open: 0 0 F F F 0 
rewind: 0 0 F F F 0 
read: eins 0 1 F F F 0 
read: zwei 0 2 F F F 0 
tskip: 1 0 F F F 0 
read: ichi 1 1 F F F 0 
read: ni__ 1 2 F F F 0 
tskip: 2 0 F F F 0 
read: un__ 2 1 F F F 0 
read: deux 2 2 F F F 0 
tskip: 3 0 F F F 0 

EOF ¤È EOT ¤Ë¤Ä¤¤¤Æ¤Þ¤È¤á¤ë¤È°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

tclose() ¤ÏÁõÃ֤Υݥ¤¥ó¥¿¤Î¸½ºß°ÌÃ֤ξ¸å¤Ë EOF ¥Þ¡¼¥¯¤òÃÖ¤­¡¢ÁõÃÖ¤òÊĤ¸¤Þ¤¹¡£¤·¤¿¤¬¤Ã¤Æ¡¢trewin()¤Ç¥Æ¡¼¥×¤ò´¬¤­Ìᤷ¤Æ¤«¤é tclose() ¤Ë¤è¤êÁõÃÖ¤òÊĤ¸¤¿¾ì¹ç¡¢ÆâÍÆ¤Ï¤¹¤Ù¤Æ¼º¤ï¤ì¤Þ¤¹¡£tclose() ¤Î¤³¤Îưºî¤Ï Berkeley ¥³¡¼¥É¤«¤é°ú¤­·Ñ¤¬¤ì¤¿¤â¤Î¤Ç¤¹¡£

»²¾È : ioctl(2)¡¢mtio(4s)¡¢perror(3f)¡¢read(2)¡¢st(4s)¡¢write(2)

ttynam¡¢isatty : üËö¥Ý¡¼¥È¤Î̾Á°¤ÎÆÉ¤ß¼è¤ê

ttynam ¤È isatty ¤Ï¡¢Ã¼Ëö¥Ý¡¼¥È̾¤Ë´Ø¤¹¤ë½èÍý¤ò¹Ô¤¤¤Þ¤¹¡£

ttynam : üËö¥Ý¡¼¥È¤Î̾Á°¤ÎÆÉ¤ß¼è¤ê

´Ø¿ô ttynam ¤ÏÏÀÍýÁõÃÖ lunit ¤Ë·ë¹ç¤µ¤ì¤Æ¤¤¤ëüËö¥Ç¥Ð¥¤¥¹¤Î¥Ñ¥¹Ì¾¤Ë¶õÇò¤òµÍ¤á¤ÆÊÖ¤·¤Þ¤¹¡£

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

character ttynam*24 name = ttynam( lunit )
lunit INTEGER*4 ÆþÎÏ ÏÀÍýÁõÃÖ
Ìá¤êÃÍ CHARACTER*n ½ÐÎÏ name ¤¬¶õÇò¤Ç¤Ê¤¤¾ì¹ç: name ¤Ï lunit ¾å¤Î¥Ç¥Ð¥¤¥¹¤Î¥Ñ¥¹Ì¾ name ¤¬¶õ¤Îʸ»úÎó (¤¹¤Ù¤Æ¶õÇò): lunit ¤Ï¥Ç¥£¥ì¥¯¥È¥ê /dev ¤ÎÃæ¤ÎüËö¥Ç¥Ð¥¤¥¹¤È·ë¹ç¤µ¤ì¤Æ¤¤¤Ê¤¤

isatty : ÁõÃÖ¤¬Ã¼Ëö¤Ç¤¢¤ë¤«¤É¤¦¤«¤Î³Îǧ

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

terminal = isatty( lunit )
lunit INTEGER*4 ÆþÎÏ ÏÀÍýÁõÃÖ
Ìá¤êÃÍ LOGICAL ½ÐÎÏ terminal = ¿¿: üËö¥Ç¥Ð¥¤¥¹¤Ç¤¢¤ë terminal = µ¶: üËö¥Ç¥Ð¥¤¥¹¤Ç¤Ï¤Ê¤¤

Îã : lunit ¤¬ tty ¤Ç¤¢¤ë¤«¤É¤¦¤«¤ò³Îǧ¤·¤Þ¤¹¡£

	character*12 name, ttynam
	INTEGER*4 lunit /5/
	logical isatty, terminal
	terminal = isatty( lunit )
	name = ttynam( lunit )
	write(*,*) 'üËö = ', terminal, ', ̾Á° = "', name, '"'
	end

½ÐÎϤϼ¡¤Î¤è¤¦¤Ëɽ¼¨¤µ¤ì¤Þ¤¹¡£

üËö = T, ̾Á° = "/dev/ttyp1  "

unlink : ¥Õ¥¡¥¤¥ë¤Îºï½ü

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 unlink n = unlink( patnam )
patnam CHARACTER*n ÆþÎÏ ¥Õ¥¡¥¤¥ë̾
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ n=0: Àµ¾ï n>0: ¥¨¥é¡¼

´Ø¿ô unlink ¤Ï¡¢¥Ñ¥¹Ì¾ patnam ¤Ç»ØÄꤵ¤ì¤¿¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Þ¤¹¡£

¤³¤ì¤¬¤³¤Î¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ëºÇ¸å¤Î¥ê¥ó¥¯¤Ç¤¢¤ë¾ì¹ç¡¢¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤Ï¤¹¤Ù¤Æ¼º¤ï¤ì¤Þ¤¹¡£

Îã : unlink() ¡Ý tunlink.data ¥Õ¥¡¥¤¥ë¤òºï½ü¤·¤Þ¤¹¡£

	call unlink( 'tunlink.data' )
	end
demo% f77 -silent tunlink.f 
demo% ls tunl* 
tunlink.f tunlink.data 
demo% a.out 
demo% ls tunl* 
tunlink.f 
demo% 

»²¾È : unlink(2)¡¢link(3F)¡¢perror(3F)


Ãí - ¥Ñ¥¹Ì¾¤ò <sys/param.h> ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë MAXPATHLEN ¤è¤êŤ¯¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

wait : ¥×¥í¥»¥¹½ªÎ»¤ÎÂÔµ¡

´Ø¿ô¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤·¤Þ¤¹¡£

INTEGER*4 wait n = wait( status )
status INTEGER*4 ½ÐÎÏ »Ò¥×¥í¥»¥¹¤Î½ªÎ»¾õÂÖ
Ìá¤êÃÍ INTEGER*4 ½ÐÎÏ n>0: »Ò¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹¼±ÊÌ»Ò n<0: n ¤Ï (¥·¥¹¥Æ¥à¥¨¥é¡¼¥³¡¼¥É)
wait(2) ¤ò»²¾È

wait ¤Ï¡¢¥·¥°¥Ê¥ë¤ò¼õ¿®¤¹¤ë¤«¡¢¤Þ¤¿¤Ï¤½¤Î»Ò¥×¥í¥»¥¹¤Î 1 ¤Ä¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¸Æ¤Ó½Ð¤·¸µ¤Î¥×¥í¥»¥¹¤òÊÝα¤Ë¤·¤Þ¤¹¡£ºÇ¸å¤Î wait ¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¸å¤Ç¡¢»Ò¥×¥í¥»¥¹¤Î¤É¤ì¤«¤¬½ªÎ»¤·¤¿¾ì¹ç¡¢wait ¤Ï¤¿¤À¤Á¤ËÌá¤ê¤Þ¤¹¡£»Ò¥×¥í¥»¥¹¤¬¤Ê¤¤¾ì¹ç¡¢wait ¤Ï¥¨¥é¡¼¥³¡¼¥É¤òȼ¤Ã¤Æ¤¿¤À¤Á¤ËÌá¤ê¤Þ¤¹¡£

Îã : wait() ¤ò»ÈÍѤ·¤¿¥³¡¼¥ÉÉôʬ

	INTEGER*4 n, status, wait 
	... 
	n = wait( status ) 
	if ( n .lt. 0 ) stop 'wait: ¥¨¥é¡¼' 
	... 
	end 

»²¾È : wait(2)¡¢signal(3F)¡¢kill(3F)¡¢perror(3F)


¥µ¥ó¡¦¥Þ¥¤¥¯¥í¥·¥¹¥Æ¥à¥º³ô¼°²ñ¼Ò
Copyright information. All rights reserved.
¥Û¡¼¥à   |   Ìܼ¡   |   Á°¥Ú¡¼¥¸¤Ø   |   ¼¡¥Ú¡¼¥¸¤Ø   |   º÷°ú