home *** CD-ROM | disk | FTP | other *** search
/ Sams Cobol 24 Hours / Sams_Cobol_24_Hours.iso / source / ch18 / chapt18x.cob < prev    next >
Text File  |  1998-09-23  |  7KB  |  172 lines

  1. 000010 @OPTIONS MAIN,TEST
  2. 000020 Identification Division.
  3. 000030 Program-Id.  Chapt18x.
  4. 000031* Chapter 18 Exercise Solution
  5. 000043 Environment Division.
  6. 000050 Configuration Section.
  7. 000055 Source-Computer.  IBM-PC.
  8. 000056 Object-Computer.  IBM-PC.
  9. 000061 Input-Output  Section.
  10. 000062 File-Control.
  11. 000063     Select Optional Trans-File Assign To "Trans.Seq"
  12. 000064         Organization Is Line Sequential.
  13. 000066     Select Optional Dealer-File Assign To "Dealer.Seq"
  14. 000067         Organization Is Line Sequential.
  15. 000068     Select Optional Dealer-Out Assign To "Dealer.Out"
  16. 000069         Organization Is Line Sequential.
  17. 000073 Data Division.
  18. 000074 File Section.
  19. 000075 Fd  Trans-File.
  20. 000076 01  Trans-Record.
  21. 000077     03  Transaction-Date   Pic  9(8).
  22. 000078     03  Transaction-Text.
  23. 000079         05  Transaction-Type   Pic  X(4).
  24. 000080         05  Transaction-Dealer Pic  X(8).
  25. 000081     03  Transaction-Price  Pic S9(7)v99.
  26. 000082     03  Transaction-Qty    Pic  9(3).
  27. 000083     03  Filler             Pic  X(40).
  28. 000093 Fd  Dealer-File.
  29. 000094 01  Dealer-Record.
  30. 000095     03  Dealer-Number         Pic X(8).
  31. 000096     03  Dealer-Name.
  32. 000097         05  Last-Name   Pic X(25).
  33. 000098         05  First-Name  Pic X(15).
  34. 000099         05  Middle-Name Pic X(10).
  35. 000100     03  Address-Line-1      Pic X(50).
  36. 000101     03  Address-Line-2      Pic X(50).
  37. 000102     03  City                Pic X(40).
  38. 000103     03  State-Or-Country    Pic X(20).
  39. 000104     03  Postal-Code         Pic X(15).
  40. 000105     03  Home-Phone          Pic X(20).
  41. 000106     03  Work-Phone          Pic X(20).
  42. 000107     03  Other-Phone         Pic X(20).
  43. 000108     03  Start-Date          Pic 9(8).
  44. 000109     03  Last-Rent-Paid-Date Pic 9(8).
  45. 000110     03  Next-Rent-Due-Date  Pic 9(8).
  46. 000111     03  Rent-Amount         Pic 9(4)v99.
  47. 000112     03  Consignment-Percent Pic 9(3).
  48. 000113     03  Last-Sold-Amount    Pic S9(7)v99.
  49. 000114     03  Last-Sold-Date      Pic 9(8).
  50. 000115     03  Sold-To-Date        Pic S9(7)v99.
  51. 000116     03  Commission-To-Date  Pic S9(7)v99.
  52. 000117     03  Filler              Pic X(15).
  53. 000118 Fd  Dealer-Out.
  54. 000119 01  Dealer-Out-Record       Pic X(376).
  55. 000144 Working-Storage Section.
  56. 000145 01  Current-Commission      Pic S9(7)v99 Value Zeros.
  57. 000146 01  Total-Commission        Pic S9(7)v99 Value Zeros.
  58. 000154 01  Transactions-Read       Pic 9(5) Value Zeros.
  59. 000165 01  Master-Records-Written  Pic 9(5) Value Zeros.
  60. 000174 01  Work-Date.
  61. 000184     03  Work-MM             Pic 9(2).
  62. 000194     03  Work-DD             Pic 9(2).
  63. 000195     03  Work-YYYY           Pic 9(4).
  64. 000196 01  Reverse-Date.
  65. 000197     03  Work-YYYY           Pic 9(4).
  66. 000198     03  Work-MM             Pic 9(2).
  67. 000199     03  Work-DD             Pic 9(2).
  68. 000200 01  Compare-Date-1          Pic 9(8).
  69. 000201 01  Compare-Date-2          Pic 9(8).
  70. 000204 01  Edit-Count              Pic ZZ,ZZ9.
  71. 000205 01  Edit-Amt                Pic Z,ZZZ,ZZZ.99-.
  72. 000206* Serves As A Hold Area
  73. 000207 01  Hold-Record             Pic X(376).
  74. 000208* This Way We Know We Have A Master Record Held
  75. 000209 01  Create-Flag             Pic X Value Spaces.
  76. 000210     88  Creating-New-Master Value "Y".
  77. 000216 Procedure Division.
  78. 000232 Chapt18x-Start.
  79. 000233     Display "Begin Process Chapt18x"
  80. 000234     Open Output Dealer-Out
  81. 000236          Input  Trans-File
  82. 000245                 Dealer-File
  83. 000246     Perform Read-Dealer
  84. 000247     Perform Read-Trans
  85. 000255     Perform Process-Files Until
  86. 000265             Trans-Record = High-Values And
  87. 000275             Dealer-Record = High-Values
  88. 000285     Close Dealer-Out
  89. 000305           Trans-File
  90. 000315           Dealer-File
  91. 000316     Move Transactions-Read To Edit-Count
  92. 000317     Display "Processing Complete"
  93. 000318     Display "Transactions Read " Edit-Count
  94. 000319     Move Master-Records-Written To Edit-Count
  95. 000320     Display "Master Records Written " Edit-Count
  96. 000323     Move Total-Commission To Edit-Amt
  97. 000324     Display "Total Commission  " Edit-Amt
  98. 000325     Stop Run
  99. 000326     .
  100. 000327
  101. 000335 Process-Files.
  102. 000345     Evaluate True
  103. 000355       When Dealer-Number < Transaction-Dealer
  104. 000365            Perform Write-Dealer-Out
  105. 000375            Perform Read-Dealer
  106. 000385       When Dealer-Number > Transaction-Dealer
  107. 000395            Perform Create-New-Master
  108. 000425            Perform Read-Trans
  109. 000435       When Dealer-Number = Transaction-Dealer
  110. 000445            Perform Apply-Transaction
  111. 000465            Perform Read-Trans
  112. 000475     End-Evaluate
  113. 000485     .
  114. 000495 Apply-Transaction.
  115. 000505     Compute Sold-To-Date = Sold-To-Date +
  116. 000525             (Transaction-Qty * Transaction-Price)
  117. 000526     Compute Current-Commission Rounded =
  118. 000527             (Transaction-Qty * Transaction-Price) *
  119. 000528             (Consignment-Percent / 100)
  120. 000529     Add Current-Commission To Commission-To-Date
  121. 000530                               Total-Commission
  122. 000531     Move Last-Sold-Date To Work-Date
  123. 000532     Move Corresponding Work-Date To Reverse-Date
  124. 000533     Move Reverse-Date To Compare-Date-1
  125. 000534     Move Transaction-Date To Work-Date
  126. 000535     Move Corresponding Work-Date To Reverse-Date
  127. 000536     Move Reverse-Date To Compare-Date-2
  128. 000537     If Compare-Date-2 > Compare-Date-1
  129. 000538        Move Transaction-Date To
  130. 000539             Last-Sold-Date
  131. 000540     End-If
  132. 000541     .
  133. 000542 Write-Dealer-Out.
  134. 000543     Add 1 To Master-Records-Written
  135. 000552     Write Dealer-Out-Record From Dealer-Record
  136. 000562     .
  137. 000563 Create-New-Master.
  138. 000564     Set Creating-New-Master To True
  139. 000565* Move The Current Dealer Master To A Hold Area
  140. 000566     Move Dealer-Record To Hold-Record
  141. 000567* Fill In The Few Basic Fields We Know
  142. 000568     Initialize Dealer-Record
  143. 000569     Move Transaction-Dealer To Dealer-Number
  144. 000570                                Last-Name
  145. 000571* 10 Percent Default Consignment Percent
  146. 000572     Move 10 To Consignment-Percent
  147. 000573* Apply The Transaction Like Any Other
  148. 000574     Perform Apply-Transaction
  149. 000575     .
  150. 000576 Read-Dealer.
  151. 000577* Before Reading, See If A Record Is "held", If So, Move It In
  152. 000578* Instead Of Reading A New Record.
  153. 000579* Then Reset The Flag, Because One Is No Longer Held.
  154. 000580     If Creating-New-Master
  155. 000581        Move Hold-Record To Dealer-Record
  156. 000582        Move Space To Create-Flag
  157. 000583     Else
  158. 000584        Read Dealer-File
  159. 000592             At End
  160. 000602             Move High-Values To Dealer-Record
  161. 000612        End-Read
  162. 000613     End-If
  163. 000622     .
  164. 000632 Read-Trans.
  165. 000642     Read Trans-File
  166. 000652          At End
  167. 000662             Move High-Values To Trans-Record
  168. 000663          Not At End
  169. 000664             Add 1 To Transactions-Read
  170. 000672     End-Read
  171. 000682     .
  172.