63
X 3004 - 1987
IF DB-STATUS =00100
MOVE YES TO NOTFOUND.
PERFORM CHECK-FOR-DB-ERROR.
END-PERFORM
MOVE NO TO LISTEMPTY.
PERFORM UNTIL LISTEMPTY =YES
CALL find-free-modify USING M DB-STATUS.
IF DB-STATUS =00100
MOVE YES TO LISTEMPTY.
PERFORM CHECK-FOR-DB-ERROR.
END-PERFORM
CALL commit-finish USING DB-STATUS.
PERFORM CHECK-FOR-DB-ERROR.
DISPLAY Processing complete.
STOP RUN.
CHECK-FOR-DB-ERROR.
IF DB-STATUS NOT EQUAL 00000 AND 00100
DISPLAY Database error DB-STATUS
STOP RUN.
1.4 納入業者と部品の<モジュール>の例
MODULE
LANGUAGE COBOL
SUBSCHEMA SUPPLIERS OF SUPPLIERSANDPARTS
SET LISTA
PROCEDURE begin STATUS
READY S SHARED UPDATE
PROCEDURE find-first-s
SCITY CHARACTER 15
STATUS
FIND FIRST S WHERE CITY=SCITY
PROCEDURE find-next-s
SCITY CHARACTER 15
STATUS
FIND NEXT S WHERE CITY=SCITY
PROCEDURE keep-s STATUS
CONNECT S TO LISTA
PROCEDURE get-s
SSTATUS NUMERIC 3
STATUS
GET S SET SSTATUS TO SSTATUS
――――― [JIS X 3004 pdf 66] ―――――
64
X 3004 - 1987
PROCEDURE find-free-modify
SSTATUS NUMERIC 3
STATUS
FIND FIRST S IN LISTA FOR UPDATE
DISCONNECT MEMBER LISTA FROM LISTA
MODIFY S SET SSTATUS TO SSTATUS
PROCEDURE commit-finish STATUS
COMMIT FINISH
2. 再帰親子集合の問題例 この参考は,規格の一部ではない。
次は,“再帰親子集合”の問題に対する<スキーマ>,<サブスキーマ>,PL/Iプログラム及び<モジ
ュール>の例である(2)。
注(2) L/Iプログラム及び<モジュール>の<手続名>は,わかりやすさのために英小文字で表現し
ており,規格とは異なる。
2.1 再帰親子集合の<スキーマ>の例
SCHEMA ORGANIZATION
RECORD EMPLOYEE
UNIQUE ID
ITEM ID CHARACTER 5
ITEM NAME CHARACTER 20
ITEM MANAGERID CHARACTER 5
SET ORGANIZATIONSTRUCTURE
OWNER EMPLOYEE
ORDER LAST
MEMBER EMPLOYEE
INSERTION STRUCTURAL MEMBER. MANAGERID=OWNER. ID
RETENTION MANDATORY
2.2 再帰親子集合の<サブスキーマ>の例
SUBSCHEMA CHART OF ORGANIZATION
RECORD EMPLOYEE ALL
SET ORGANIZATIONSTRUCTURE
2.3 再帰親子集合のプログラムの例
次のPL/Iプログラムは,ORGANIZATIONSTRUCTURE親子集合型の特定の親子集合実現値を上から下,
左から右の順番に並べる。
PRINTCHART : PROC ;
DCL begin ENTRY (CHAR(5)) ;
DCL findrootemp ENTRY (CHAR(5), CHAR(5)) ;
DCL getemployee ENTRY (CHAR(20)) ;
DCL findnextasmember ENTRY (CHAR(5)) ;
DCL findmemberasowner ENTRY ;
――――― [JIS X 3004 pdf 67] ―――――
65
X 3004 - 1987
DCL findownerasmember ENTRY ;
DCL finish ENTRY (CHAR(5)) ;
DCL DBSTATUS CHARACTER (5) ;
DCL EID CHARACTER (5) ;
DCL ENAME CHARACTER (20) ;
CALL begin (DBSTATUS) ;
IF DBSTATUS- =00000 THEN GOTO DBERROR ;
GET LIST (EID) ;
CALL findrootemp (EID, DBSTATUS) ;
IF DBSTATUS =00100
THEN DO ;
PUT LIST (employee || EID || not found) ;
RETURN ;
END ;
IF DBSTATUS-=00000 THEN GOTO DBERROR ;
CALL RECURSION ;
CALL finish (DBSTATUS) ;
IF DBSTATUS-=00000 THEN GOTO DBERROR ;
PUT LIST (Processing complete) ;
RETURN ;
DBERROR ;
PUT LIST (database error || DBSTATUS) ;
RETURN ;
RECURSION : PROCEDURE RECURSIVE ;
CALL getemployee (ENAME) ;
PUT LIST (ENAME) ;
CALL findnextasmember (DBSTATUS) ;
DO WHILE DBSTATUS =00000
CALL findmemberasowner;
CALL RECURSION ;
CALL findownerasmember ;
CALL findnextasmember (DBSTATUS) ;
END ;
END RECURSION ;
END PRINTCHART ;
2.4 再帰親子集合の<モジュール>の例
MODULE
LANGUAGE PLI
SUBSCHEMA CHART OF ORGANIZATION
PROCEDURE begin STATUS
――――― [JIS X 3004 pdf 68] ―――――
66
X 3004 - 1987
READY EMPLOYEE SHARED RETRIEVE
PROCEDURE findrootemp
EID CHARACTER5
STATUS
FIND FIRST EMPLOYEE WHERE ID=EID
PROCEDURE getemployee
ENAME CHATACTER 20
GET EMPLOYEE SET ENAME TO NAME
PROCEDURE findnextasmember STATUS
FIND NEXT EMPLOYEE IN ORGANIZATIONSTRUCTURE
AS MEMBER ORGANIZATIONSTRUCTURE
PROCEDURE findmemberasowner
FIND MEMBER ORGANIZATIONSTRUCTURE
PROCEDURE findownerasmember
FIND OWNER ORGANIZATIONSTRUCTURE
AS MEMBER ORGANIZATIONSTRUCTURE
PROCEDURE finish STATUS
COMMIT FINISH
3. 部品展開の問題例
この参考は,規格の一部ではない。
次は,“部品展開”の問題に対する<スキーマ>,<サブスキーマ>,FORTRANプログラム及び<モジ
ュール>の例である(3)。
注(3) ORTRANプログラム及び<モジュール>の<手続名>は,わかりやすさのために英小文字で
表現しており,規格とは異なる。
3.1 部品展開の<スキーマ>の例
SCHEMA PARTS
RECORD PART
UNIQUE ID
ITEM ID CHARACTER 5
ITEM NAME CHARACTER 20
RECORD STRUCTURE
UNIQUE PARENTID COMPONENTID
ITEM PARENTID CHARACTER 5
ITEM COMPONENTID CHARACTER 5
ITEM QUANTITY INTEGER
SET USES
OWNER PART
ORDER NEXT
MEMBER STRUCTURE
――――― [JIS X 3004 pdf 69] ―――――
67
X 3004 - 1987
INSERTION STRUCTURAL
STRUCTURE. PARENTID=PART. ID
RETENTION MANDATORY
SET WHEREUSED
OWNER PART
ORDER NEXT
MEMBER STRUCTURE
INSERTION STRUCTURAL
STRUCTURE. COMPONENTID=PART. ID
RETENTION MANDATORY
3.2 部品展開の<サブスキーマ>の例
SUBSCHEMA BILLOFMATERIALS OF PARTS
RECORD PART ALL
RECORD STRUCTURE ALL
SET USES
SET WHEREUSED
3.3 部品展開のプログラムの例
次の例で示すFORTRANプログラムは,“車軸”を作るのに必要なすべての組立部品,半組立部品,及
び部品を並べる。それは,統計を累積するのでもなく,十分な注文部品リストを作成するのでもない。
SUBROUTINE BOMEXP (PRTID)
EXTERNAL begin, fndprt, fndcn, fnddg, fndowu, test, finish
CHARACTER*5 PRTID, PID, CID, DBSTAT
CHARACTER*1 DBTST
INTEGER QTY
CALL begin (DBSTAT)
CALL CHKSTS (DBSTAT)
CALL fndprt (PRTID, DBSTAT)
IF (DBSTAT . EQ . 00100) HEN
WRITE (*, 10) RTID
RETURN
END IF
10FORMAT (Part, A5, not found)
CALL CHKSTS (DBSTAT)
CALL GETCMP
20CALL fnddg (PID, CID, QTY, DBSTAT)
IF (DBSTAT .EQ. 00100) OTO 30
CALL CHKSTS (DBSTAT)
WRITE (*, 25) ID, QTY, CID
25FORMAT (Each part, A5, contains, I3, of part, A5)
CALL fndowu (DBSTAT)
――――― [JIS X 3004 pdf 70] ―――――
次のページ PDF 71
JIS X 3004:1987の国際規格 ICS 分類一覧
- 35 : 情報技術.事務機械 > 35.060 : 情報技術に使用される言語
JIS X 3004:1987の関連規格と引用規格一覧
- 規格番号
- 規格名称
- JISX3001:1994
- プログラム言語Fortran
- JISX3002:2011
- 電子計算機プログラム言語COBOL