2' 'ư>HELPNA\NhNN:l/CONTINUE n((PA\/EXIT&%p=lHALTމPl/\/dSTEP 1v4߉lg STOP߉X^F%EFSTOP ,,OFFg^w@߉U4 T߉W4 OX[gp߉.OdX[Ag|߉X[A|ŻOdgX[AModelsMatinit.gpsLFeCFEO({hL({hV}hE(((((((((({\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fmodern Courier New;}} {\colortbl\red0\green0\blue0;} \deflang1033\pard\tx1200\tx2400\tx4450\plain\f2\fs20 ; GPSS World Sample File - MATINIT.GPS \par ; \par ; This model reads an external ASCII data file into \par ; a Matrix in GPSS World. It then cycles through \par ; the Matrix and writes out an Initial statement \par ; for each cell of the Matrix. A PLUS Procedure is \par ; used to separate the parts of the statement to be \par ; written. Since PLUS can use a multi-line format \par ; the statement can appear on multiple lines and \par ; the portions of it can be assigned to temporary \par ; variables that will not survive outside the PLUS \par ; Procedure. This makes the statement easier to \par ; handle and interpret than if it were strung \par ; across in Operand A of the Write block. \par ; \par Values\tab MATRIX\tab ,10,3\tab \tab ;Defines Matrix. \par \tab GENERATE\tab ,,,1\tab \tab ;Produce only one Xact. \par \tab OPEN\tab ("Inpt.txt"),1,Flag\tab ;Open external file to be read. \par \tab OPEN\tab ("Outpt.txt"),2,Flag1\tab ;Open output file to which output \par ; will be written. \par Again\tab READ\tab Excel,1,Finis\tab ;Read Inpt.txt one line \par \tab \tab \tab \tab ; at a time into parameter. \par \tab \tab \tab \tab ; Excel. At end or error; \par \tab \tab \tab \tab ; go to label Finis. \par \tab SAVEVALUE\tab Rownum+,1\tab \tab ;Increase Matrix row by 1. \par Morecol\tab SAVEVALUE\tab Colnum+,1\tab \tab ;Increase Matrix column by 1. \par \tab MSAVEVALUE\tab Values,X$Rownum,X$Colnum,(Word(P$Excel,X$Colnum)) \par \tab \tab \tab \tab ;Store the value in the parameter \par \tab \tab \tab \tab ; in the Matrix cell. \par \tab TEST G\tab X$Colnum,2,Morecol\tab ;Are there more columns to be loaded? \par \tab SAVEVALUE\tab Colnum,0\tab \tab ;No more columns? Start next row \par \tab TRANSFER\tab ,Again\tab \tab ; at label Again. \par Finis\tab CLOSE\tab Prob,,Flag2\tab \tab ;Close data file. \par \tab ASSIGN\tab Colnum,0\tab \tab ;Prepare to cycle \par \tab ASSIGN\tab Rownum,0\tab \tab ; thru Values Matrix \par Again2\tab ASSIGN\tab Rownum+,1\tab \tab ; from the beginning \par More\tab ASSIGN\tab Colnum+,1 \par \tab TEST LE\tab P$Rownum,7,Finis2\tab ;Has final row been processed? \par \tab WRITE\tab (WriteInitial()),2,Wrtebug ;Write Initial \par \tab \tab \tab \tab ; Statement using \par \tab \tab \tab \tab ; PLUS Procedure. \par \tab TEST G\tab P$Colnum,2,More\tab ;Are there more columns? \par \tab ASSIGN\tab Colnum,0\tab \tab ;Set Column number to 0. \par \tab TRANSFER\tab ,Again2\tab \tab ;Start Next row. \par Finis2\tab CLOSE\tab Prob2,2,Flag3\tab ;Close output file. \par \tab TERMINATE\tab 1\tab \tab ;End for normal completion. \par Flag\tab TERMINATE\tab 1\tab \tab ;End if errors in input file Open. \par Flag1\tab TERMINATE\tab 1\tab \tab ;End if errors in output file Open. \par Flag2\tab TERMINATE\tab 1\tab \tab ;End if errors in input file Close. \par Wrtebug\tab TERMINATE 1\tab \tab ;End if errors on Write. \par Flag3\tab TERMINATE\tab 1\tab \tab ;End if errors on output file Close. \par \par \par PROCEDURE WriteInitial() BEGIN \par TEMPORARY Value1,Value3,Value4b,Value4c,Value4d; \par \par Value1="Initial MX$Values("; \par Value3=","; \par Value4b="),"; \par Value4c=MX$Values(P$Rownum,P$Colnum); \par Value4d=" "; \par \par RETURN\tab (Polycatenate \par \tab (Value1, \par P$Rownum, \par \tab Value3, \par \tab (Polycatenate\tab \par (P$Colnum, \par \tab Value4b, \par Value4c, \par Value4d)))); \par END; \par \par \par }