205 lines
51 KiB
JSON
205 lines
51 KiB
JSON
{
|
||
"header": {
|
||
"version": 1,
|
||
"type": "record",
|
||
"approw-key": "SITRANS.RUN"
|
||
},
|
||
"body": {
|
||
"record1": {
|
||
"<1>": "\u0014"
|
||
},
|
||
"record2": {
|
||
"<1>": {
|
||
"<1,1>": {
|
||
"<1,1,1>": {
|
||
"<1,1,1,1>": {
|
||
"<1,1,1,1,1>": "´Ãd\u0000\u0000\u0000 \u0000p\bz\bˆ\t–\n\u0002\u0000\u0010\u000e-\u0002\u0000\u0000\u0000-\u0002\u0000\u0002\u0000-\u0002\u0000\u0004\u0000-\u0002\u0000\u0006\u0000-\u0002\u0000\b\u0000-\u0002\u0000\n\u0000-\u0002\u0000\f\u0000-\u0002\u0000\u000e\u0000-\u0002\u0000\u0010\u0000-\u0002\u0000\u0012\u0000-\u0002\u0000\u0014\u0000-\u0002\u0000\u0018\u0000-\u0002\u0000\u001a\u0000-\u0002\u0000\u001c\u0000-\u0002\u0000\u001e\u0000-\u0002\u0000 \u0000-\u0002\u0000\"\u0000-\u0002\u0000$\u0000-\u0002\u0000&\u0000-\u0002\u0000¢\u0000-\u0002\u0000¬\n-\u0002\u0000¼\n-\u0002\u0000¶Ã-<\u0000d\u0000-Ð\u0007 \u0000-\n\u0000p\b-\u000e\u0001z\b-\u000e\u0001ˆ\t-\u0010\u0000–\n-\n\u0000ª\n-\u0006\u0000´\n-È\u0000º\n-\u0006\u0000‚\u000b-\u0010\u0000ˆ\u000b-\u0010\u0000˜\u000b-\n\u0000¨\u000b-d\u0000¸\u000b-d\u0000\u001c\f-d\u0000€\f-d\u0000ä\f-d\u0000H\r-d\u0000¬\r-Ä\t\u0010\u000e-Ð\u0007Ô\u0017-Ð\u0007¤\u001f-@œt'-\u0010'´Ã\u0014¸\u000b\b\u0010\u0011\u0002\u0000H\r¬\r\u0014¸\u000b\b\u0010!\u0002\u0000H\r¬\r\u0014¸\u000b\b\u00101\u0002\u0000H\r¬\r\u0014¸\u000b\b \u0012\u0002\u0000º\n‚\u000b\u0014¸\u000b\b \"\u0002\u0000º\n‚\u000b\u0017´Ã\u0017´Ã4´Ã\u0013t't'\u0003\u0006\u0000\u0004\u000e\u0000\u0014´\n\u0002\r\n\u0004\u001c\u0000\u0004$\u0000>\r\u0001\nŒ\u0001\t$\u0000\np\u0001\u0013t't'\u000b„\u0001\r³\u0004\u000b\u0001\u0003\u0000\u0000\u0013t't'\n„\u0001\nŒ\u0001Bt'@\u000e?>?\u000e>\r",
|
||
"<1,1,1,1,2>": "\u0001\nî\u0001\u001b\u0001Þ\u0005\u0000\u0000\nÜ\u0001\nÙ\u0001\r›\u0002\nÜ\u0001\u001b\u0001Þ\u0005\u0000\u0000\nÖ\u0001\nÓ\u0001\rÃ\u0002\nÖ\u0001\u001b\u0001Þ\u0005\u0000\u0000\nÐ\u0001\nÍ\u0001\rÜ\u0002\nÐ\u0001\u0003\u0000\u0000\nÖ\u0001\u0003\u0000\u0000\nÜ\u0001\u0003\u0000\u0000\nî\u0001\u0004\u0006\u0000\u001a\u0001Þ\nî\u0001\u0017t'\f‘\u0001\u0003\u0000\u0000\u0017t'@\u000e?>?\u000e>\rL\u0002\nH\u0002\u001a\u0001*\nH\u0002\rm\u0002\nH\u0002\u001a\u0001*\nH\u0002\r„\u0002\nH\u0002\u0013t'ä\f\u0014t'\u0001"
|
||
}
|
||
}
|
||
},
|
||
"<1,2>": "0\b\u0000\u0000\u00000\n\u0000\u0000\u0000\u0013Ô\u0017Ô\u0017\u0013¤\u001f¤\u001f\t\u0006\u0000\u000bC\u0002\u0003\u001c\u0000\u0003\u0000\u0000\nH\u0002@\u000e?>?\u000e>G\u0001*\ni\u0002\u0013\u001c\f\u001c\f\u0013ä\fä\f\u0013\u001c\f \u0000\u0013ä\f \u0000@\u000e?>?\u000e>G\u0001*\n€\u0002\u0014ä\f\u0001*\u0013ä\f \u0000@\u000e?>?\u000e>G\u0001",
|
||
"<1,3>": "\n—\u0002\u0014ä\f\u0001*\u0013ä\f \u0000@\u000e?>?\u000e>\u001a\u0001",
|
||
"<1,4>": "\n¿\u0002\u001a\u0001*\n·\u0002\t\u0006\u0000\n±\u0002\u0003\u0004\u0000\u0003\u0000\u0000\nº\u0002\u0003\u0000\u0000\n¿\u0002@\u000e?>?\u000e>\u001a\u0001",
|
||
"<1,5>": "\nØ\u0002\u001a\u0001*\nÐ\u0002\u0003\u0000\u0000\nØ\u0002@\u000e?>?\u000e>\u001a\u0001",
|
||
"<1,6>": "\n&\u0003\r*\u0003\n"
|
||
},
|
||
"<2>": "\u0002\rA\u0003\n",
|
||
"<3>": "\u0002\rd\u0003\n",
|
||
"<4>": {
|
||
"<4,1>": "\u0002\u001a\u0001",
|
||
"<4,2>": "\n"
|
||
},
|
||
"<5>": {
|
||
"<5,1>": "\u0002\fã\u0002\u0003\u0000\u0000\u0016t'\b\u0000\u0014t'\u0001",
|
||
"<5,2>": "\u0016t'\n\u0000\u0014t'\u0001",
|
||
"<5,3>": "\u0013t'¤\u001f\u0014t'\u0001",
|
||
"<5,4>": {
|
||
"<5,4,1>": "\u0013t'Ô\u0017@\u000e?>?\u000e>\u0013H\rH\rG\u0001",
|
||
"<5,4,2>": "\n=\u0003\u0013H\r \u0000@\u000e?>?\u000e>\u0013ª\nª\n\u001a\u0001",
|
||
"<5,4,3>": "\n`\u0003G\u0001",
|
||
"<5,4,4>": "\nX\u0003\u0013ª\n \u0000\u0003\u0000\u0000\n`\u0003@\u000e?>?\u000e>\u001a\u0001",
|
||
"<5,4,5>": "\nz\u0003\ns\u0003@>\fz\u0003\u0004\u0000\u0000?\u000e@\u000e?>8B´ÃF\u0004\r\\\u0004\nŠ\u0003@\u000e?>\fZ\u0004\r\\\u0004\n—\u0003@\u000e?>\fZ\u0004\u001b\u00032",
|
||
"<5,4,6>": "5\n§\u0003\u0003\u001c\u0000\u0003\u0000\u0000\nµ\u0003\r\\\u0004\nµ\u0003@\u000e?>\fZ\u0004\b\u0014\u0000¶Ã\u001a\u00013\n'\u0004\u001a\u0001",
|
||
"<5,4,7>": "\n'\u0004G\u0001",
|
||
"<5,4,8>": "\u0003\u0000\u0000\n'\u0004\u001a\u0001",
|
||
"<5,4,9>": "\n'\u0004G\u0001",
|
||
"<5,4,10>": "\u0003\u0000\u0000\n'\u0004\u001a\u0001",
|
||
"<5,4,11>": "\n'\u0004G\u0002",
|
||
"<5,4,12>": ""
|
||
},
|
||
"<5,5>": {
|
||
"<5,5,1>": "\u0003\u0000\u0000\n'\u0004\u001a\u0001",
|
||
"<5,5,2>": "\u000b"
|
||
}
|
||
}
|
||
},
|
||
"record3": {
|
||
"<1>": {
|
||
"<1,1>": "\u0003\u0003$\u0000\u0003\u0000\u0000\n'\u0004G\u0001",
|
||
"<1,2>": {
|
||
"<1,2,1>": "\u0003\u0000\u0000\n'\u0004\t¢\u0000\u000b\u0017\u0004\u0003$\u0000\u0003\u0000\u0000\n'\u0004\b¶Ã\u0014\u0000\r\\\u0004\n'\u0004@\u000e?>\fZ\u0004\rŠ\u0004\n4\u0004@\u000e?>\fZ\u0004\r\\\u0004\nA\u0004@\u000e?>\fZ\u0004\u0006\u0000012356‚\u0003\u0003œ\u0003º\u0003,\u00049\u0004?\u000e>\u0006\n\u0000\u0013Ô\u0017H\r\u0014Ô\u0017\u0001",
|
||
"<1,2,2>": "\u0013Ô\u0017ª\n\u0014Ô\u0017\u0001",
|
||
"<1,2,3>": "G\u0001"
|
||
},
|
||
"<1,3>": {
|
||
"<1,3,1>": "\n†\u0004\u0013Ô\u0017 \u0000\u0014Ô\u0017\u0001",
|
||
"<1,3,2>": "@\u000e?>?\u000e>\u0006\b\u0000\u0013¤\u001fH\r\u0014¤\u001f\u0001",
|
||
"<1,3,3>": "\u0014¤\u001f\u0001",
|
||
"<1,3,4>": "G\u0001"
|
||
},
|
||
"<1,4>": {
|
||
"<1,4,1>": "\n¯\u0004\u0013¤\u001f \u0000\u0014¤\u001f\u0001",
|
||
"<1,4,2>": "@\u000e?>?\u000e>\u0013´Ã´Ã\u0013´Ãt'\u0013t't'4´Ã\u0013´Ã´Ã\rF\f\n$\u0006\u0013´Ã´Ã\r(\u0006\n$\u0006\r†\u0011\n$\u0006\rŠ\u0012\n$\u0006\r\u0005\u0019\n$\u0006\rŸ\u001c\n$\u0006\t\u0004\u0000\n\u0000\u0005\rÛ\u001e\n\u0003\u0005\u0003\u0000\u0000\n$\u0006\rF\f\n$\u0006\t\b\u0000\n3\u0005\rí\u001e\n6\u0005\rz\u001f\n*\u0005\u0007\b\u0000\t\b\u0000\n*\u0005\f\u0018\u0005\u0003\u0000\u0000\rP \n6\u0005\u0003\u0000\u0000\n$\u0006\u0013´Ã´Ã\u0003\u0006\u0000\rF\f\n$\u0006\rp\u0011\n$\u00060 \u0000\u0000\u0000\rl \u0003\u0000\u0000\n‚\u0005\t\u0006\u0000\u000bg\u0005\r5\u0003\u0000\u0000\n‚\u0005\rF\f\n‚\u0005\rp\u0011\n‚\u0005\u0004\u0006\u0000\r”8\n‚\u0005\fR\u0005\u0003\u0000\u0000\rè5\n$\u0006\u0003\u000e\u0000\r÷7\n$\u0006\u0013´Ã´Ã\u0003\u0006\u0000\rF\f\n$\u0006\rp\u0011\n$\u00060 \u0000\u0000\u0000\r\u001a9\u0003\u0000\u0000\né\u0005\t\u0006\u0000\u0005\u0000\u0000\nÂ\u0005\nÂ\u0005\nË\u0005\r5\nÎ\u0005\u0003\u0000\u0000\né\u0005\rF\f\né\u0005\rp\u0011\né\u0005\u0004\u0006\u0000\r”8\né\u0005\f\u0005\u0003\u0000\u0000\rö=\n$\u0006\rïA\n$\u0006\rUJ\n$\u0006\rÉK\n$\u0006\r-L\n$\u0006\rAN\n$\u0006\reN\n$\u0006\r-R\n$\u0006\rT\n$\u0006@\u000e?>?\u000e>\u0014t'\u0002* \u0013t'\u001c\f\u0014t'> Secondary index transaction builder for version 2.1 and above\u0017t'\u0017t'\u0014t'%* Invoked like a dictionary calculate\u0017t'\u0014t'9* Input: @MV = 0 for write, 1 for delete, 2 for clearfile\u0017t'\u0014t''* @ID = Record key for write and delete\u0017t'\u0014t'\u001c* @RECORD = Record for write\u0017t'\u0014t' * @ANS = data file file variable\u0017t'\u0014t'\u0012* RETURNS: nothing\u0017t'\u0017t'\u0014t'ƒCOMMON /%%SI%%/MAX.UPDATE.SIZE,INDEXES,INDEXES.FILEVAR,NO.PROTECT,OLD.REC,OLD.FLAG,OLD.FV,OLD.ID,DICT.FVS%,BATCH.MODE%,UPDATE.ITEM%\u0017t'\u0017t'\u0014t'\u0017EQU MARKS TO \\FCFBFEFF\\\u0017t'\u0014t'\u0014EQU VMARKS TO \\FDFD\\\u0017t'\u0014t'\u001aEQU DELETED.VALUE$ TO \\FC\\\u0017t'\u0014t'\u000eEQU TRUE$ TO 1\u0017t'\u0014t'\u000fEQU FALSE$ TO 0\u0017t'\u0014t'\u0014EQU READ.RECORD TO 1\u0017t'\u0014t'\u0015EQU WRITE.RECORD TO 3\u0017t'\u0014t'\u0016EQU DELETE.RECORD TO 4\u0017t'\u0014t'\u0012EQU SI.WRITE$ TO 0\u0017t'\u0014t'\u0013EQU SI.DELETE$ TO 1\u0017t'\u0014t'\u0016EQU SI.CLEARFILE$ TO 2\u0017t'\u0017t'\u0014t'-DECLARE SUBROUTINE MSG, BATCH.INDEXING, DELAY\u0017t'\u0014t'HDECLARE FUNCTION CALCULATE, CALCULATEX, RELATER, INDEX.OPEN, ESC.TO.EXIT\u0017t'\u0017t'\u0014t'@* @ANS contains SI.MFS file handle, parse into local variables. \u0017t'\u0014t'\u0017POS = 6 + @ANS[ 1, 5 ] \u0017t'\u0014t'\u0016TEMP = @ANS[ POS, 5 ] \u0017t'\u0014t'\tPOS += 5 \u0017t'\u0014t'6@DICT = @ANS[ POS, TEMP ] ;* used to be an index.open \u0017t'\u0014t'\u0015DICT.FILEVAR = @DICT \u0017t'\u0014t'\fPOS += TEMP \u0017t'\u0014t'\u0016TEMP = @ANS[ POS, 5 ] \u0017t'\u0014t'\tPOS += 5 \u0017t'\u0014t'\u001bIDX.FV = @ANS[ POS, TEMP ] \u0017t'\u0014t'\fPOS += TEMP \u0017t'\u0014t'\u0016TEMP = @ANS[ POS, 5 ] \u0017t'\u0014t'\tPOS += 5 \u0017t'\u0014t'\u001cFILEVAR = @ANS[ POS, TEMP ] \u0017t'\u0017t'\u0014t'\u0011FS = FILEVAR<1,1>\u0017t'\u0014t'\u0012NEXTFS = FS<1,1,1>\u0017t'\u0014t'\u001fFVAR = DELETE(FILEVAR, 1, 1, 0)\u0017t'\u0014t'\nSTATUS = 0\u0017t'\u0014t'\u0007FNAME =\u0014t'\u0002\"!\u0013t'ä\f\u0014t'\t\"[1,\"F*\"]\u0017t'\u0014t'\u0013IF BATCH.MODE% THEN\u0017t'\u0014t'\u0019 IDX.FV = INDEXES.FILEVAR\u0017t'\u0014t'\u0003END\u0017t'@\u000e?>?\u000e>\u001a\u0001Þ\nM\f\u0003\u0000\u0000\n¦\fG\u0001*\n¦\f\u0013ä\fä\f\u0013\u001c\f\u001c\f\u0013ä\f \u0000\u0013\u001c\f \u0000\rë\f\n¦\fG\u0001"
|
||
},
|
||
"<1,5>": "\n¦\f\u0013ä\f \u0000\u001a\u0001",
|
||
"<1,6>": "\n¦\f:\u0002\u0000´Ã\b\b\u0000\u0002\u0000\u001a\u0001",
|
||
"<1,7>": "\n¦\f:\u0002\u0000´Ã\b\n\u0000\u0002\u0000\u001a\u0001",
|
||
"<1,8>": {
|
||
"<1,8,1>": "\n¦\f@\u000e?>?\u000e>\u0013H\rH\r\u0013¬\r¬\rG\u0001",
|
||
"<1,8,2>": "\nç\f\u0013H\r \u0000\r\u0002\r\nç\f\u001a\u0001",
|
||
"<1,8,3>": "\nç\f\u0013ª\nª\nG\u0001",
|
||
"<1,8,4>": "\u0003\u0000\u0000\nç\f\u0013ª\n \u0000\u001a\u0001",
|
||
"<1,8,5>": "\nç\f@\u000e?>?\u000e>\u0013€\f€\f\r\u0019\r\n"
|
||
}
|
||
},
|
||
"<2>": {
|
||
"<2,1>": "\f\u0013€\fº\n@\u000e?>?\u000e>\u0013¬\r¬\r\r\u0019\r\n\u0015\r\u0013¬\rº\n@\u000e?>?\u000e>; \u0000\u0014 \u0000\u0001 \u0013 \u0000 \u0000\u0013º\nº\n\u0003&\u0000\rG\r\n;\r\u0004&\u0000\f/\r\u0003\u0000\u0000;´Ã@\u000e?>?\u000e>\t&\u0000\nV\r\r‡\r\nV\r@\u000e?>\r–\u000e\n`\r@\u000e?>\u001b\u0001 \no\r\u0004\u0000\u0000?\u000e@\u000e?>9\u0002\u0000 \u0000\u0016º\n\u0002\u0000\u0007¼\n\u0003\u0000\u0000@\u000e?>?\u000e>\u0003\u0000\u0000\n“\r@>\fš\r\u0004\u0000\u0000?\u000e@\u000e?>8B \u0000t\u000e\u001a\u00010\n²\r\u0014º\n\u0004ZERO@\u000e?>\f”\u000e\u001a\u00011\nÆ\r\u0014º\n\u0003ONE@\u000e?>\f”\u000e\u001a\u00012\nÚ\r\u0014º\n\u0003TWO@\u000e?>\f”\u000e\u001a\u00013\nð\r\u0014º\n\u0005THREE@\u000e?>\f”\u000e\u001a\u00014\n\u0005\u000e\u0014º\n\u0004FOUR@\u000e?>\f”\u000e\u001a\u00015\n\u001a\u000e\u0014º\n\u0004FIVE@\u000e?>\f”\u000e\u001a\u00016\n.\u000e\u0014º\n\u0003SIX@\u000e?>\f”\u000e\u001a\u00017\nD\u000e\u0014º\n\u0005SEVEN@\u000e?>\f”\u000e\u001a\u00018\nZ\u000e\u0014º\n\u0005EIGHT@\u000e?>\f”\u000e\u001a\u00019\no\u000e\u0014º\n\u0004NINE@\u000e?>\f”\u000e\n\u00000123456789¢\r·\rË\rß\rõ\r\n\u000e\u001f\u000e3\u000eI\u000e_\u000e?\u000e>\u0003\u0000\u0000\n¢\u000e@>\f©\u000e\u0004\u0000\u0000?\u000e@\u000e?>8B \u0000ó\u000f\u001a\u0001!\n¿\u000e\u0014º\n\u0002EX@\u000e?>\f%\u0010\u001a\u0001@\nÒ\u000e\u0014º\n\u0002AT@\u000e?>\f%\u0010\u001a\u0001#\næ\u000e\u0014º\n\u0003NBR@\u000e?>\f%\u0010\u001a\u0001$\n",
|
||
"<2,2>": {
|
||
"<2,2,1>": "\u000e\u0014º\n\u0006DOLLAR@\u000e?>\f%\u0010\u001a\u0001%\n\u0012\u000f\u0014º\n\u0004PCNT@\u000e?>\f%\u0010\u001a\u0001^\n%\u000f\u0014º\n\u0002UP@\u000e?>\f%\u0010\u001a\u0001&\n9\u000f\u0014º\n\u0003AMP@\u000e?>\f%\u0010\u001a\u0001-\nN\u000f\u0014º\n\u0004DASH@\u000e?>\f%\u0010\u001a\u0001+\nc\u000f\u0014º\n\u0004PLUS@\u000e?>\f%\u0010\u001a\u0001=\nv\u000f\u0014º\n\u0002EQ@\u000e?>\f%\u0010\u001a\u0001/\nŠ\u000f\u0014º\n\u0003DIV@\u000e?>\f%\u0010\u001a\u0001<\n\u000f\u0014º\n\u0002LT@\u000e?>\f%\u0010\u001a\u0001>\n°\u000f\u0014º\n\u0002GT@\u000e?>\f%\u0010\u001a\u0001:\nÆ\u000f\u0014º\n\u0005COLON@\u000e?>\f%\u0010\u001a\u0001;\nÛ\u000f\u0014º\n\u0004SEMI@\u000e?>\f%\u0010\u001a\u0001_\nî\u000f\u0014º\n\u0002UL@\u000e?>\f%\u0010\u0010\u0000!@#$%^&-+=/<>:;_±\u000eÄ\u000e×\u000eë\u000e\u0002\u000f\u0017\u000f*\u000f>\u000fS\u000fh\u000f{\u000f\u000f¢\u000fµ\u000fË\u000fà\u000f?\u000e>8B´ÃZ\u0011\u001a\u00010\nH\u0010\u001a\u0001",
|
||
"<2,2,2>": "\nH\u0010G\u0001",
|
||
"<2,2,3>": "\nH\u0010\u001a\u0001",
|
||
"<2,2,4>": "\nH\u0010@\u000e?>\fn\u0011\u001a\u00011\nj\u0010\u001a\u0001",
|
||
"<2,2,5>": "\nj\u0010G\u0001",
|
||
"<2,2,6>": "\u0003\u0000\u0000\nj\u0010\u001a\u0001",
|
||
"<2,2,7>": "\nj\u0010@\u000e?>\fn\u0011\u001a\u00012\n¼\u0010\u001a\u0001",
|
||
"<2,2,8>": "\n¼\u0010\u001a\u00014\n‡\u0010\u001a\u0001",
|
||
"<2,2,9>": "\n‡\u0010\u000b–\u0010\u001a\u00015\n–\u0010\u001a\u0001",
|
||
"<2,2,10>": "\n–\u0010\u000b·\u0010G\u0001",
|
||
"<2,2,11>": "\u0003\u0000\u0000\n·\u0010\u001a\u0001",
|
||
"<2,2,12>": "\n·\u0010G\u0001",
|
||
"<2,2,13>": "\u0003\u0000\u0000\n·\u0010\u001a\u0001",
|
||
"<2,2,14>": "\n·\u0010\n¼\u0010@\u000e?>\fn\u0011\u001a\u00013\n\u000b\u0011\u001a\u0001",
|
||
"<2,2,15>": "\n\u000b\u0011G\u0001",
|
||
"<2,2,16>": "\u0003\u0000\u0000\n\u000b\u0011\u001a\u0001",
|
||
"<2,2,17>": "\n\u000b\u0011G\u0001",
|
||
"<2,2,18>": "\u0003\u0000\u0000\n\u000b\u0011\u001a\u0001",
|
||
"<2,2,19>": "\n\u000b\u0011G\u0001",
|
||
"<2,2,20>": "\u0003\u0000\u0000\n\u000b\u0011\u001a\u0001",
|
||
"<2,2,21>": "\n\u000b\u0011G\u0001",
|
||
"<2,2,22>": "\u0003\u0000\u0000\n\u000b\u0011\u001a\u0001",
|
||
"<2,2,23>": "\n\u000b\u0011@\u000e?>\fn\u0011\u001a\u00015\n*\u0011\u001a\u0001",
|
||
"<2,2,24>": "\n*\u0011G\u0001",
|
||
"<2,2,25>": "\n*\u0011\u001a\u0001",
|
||
"<2,2,26>": "\n*\u0011@\u000e?>\fn\u0011\u001a\u00016\nU\u0011\u001a\u0001",
|
||
"<2,2,27>": "\nU\u0011G\u0001",
|
||
"<2,2,28>": "\nU\u0011\u001a\u0001",
|
||
"<2,2,29>": "\nU\u0011G\u0001",
|
||
"<2,2,30>": "\nU\u0011\u001a\u0001",
|
||
"<2,2,31>": "\nU\u0011@\u000e?>\fn\u0011\u0006\u0000012356.\u0010M\u0010o\u0010Á\u0010\u0010\u0011/\u0011?\u000e>G\u0001"
|
||
},
|
||
"<2,3>": "\u0003\u0000\u0000\n‚\u0011\u001a\u0001",
|
||
"<2,4>": {
|
||
"<2,4,1>": "\n‚\u0011@\u000e?>?\u000e>\u0017t'\u0014t' * CHECK FOR CLEAR-FILE OPERATION\u0017t'\u0017t'\u0014t'\u001cIF @MV EQ SI.CLEARFILE$ THEN\u0017t'\rF\f\n†\u0012\u0014t'\u0011 UPDATE.LIST = ''\u0017t'\u0014t'\u0014 @ID = '%%ALL.IDS%%'\u0017t'\t\n\u0000\nm\u0012\rp\u0011\nm\u0012\rª\f\na\u0012\r'\u0010\na\u0012\u0014t'\u0011 UPDATE.LIST := \"\u0013t'H\r\u0014t'\u0015\":@FM:@ID:@FM:@FM:@FM\u0017t'\f\u001c\u0012\u0003\u0000\u0000\rF\f\nm\u0012\f\u0010\u0012\u0003\u0000\u0000\u0014t'\bEND ELSE\u0017t'\u0013´Ã´Ã@\u000e?>?\u000e>\rF\f\n\u0001\u0019\rp\u0011\n\u0001\u0019\rª\f\n¦\u0012\r'\u0010\n¦\u0012\f—\u0012\u0003\u0000\u0000\t\u001c\u0000\n+\u0015\rF\f\n(\u0015\rp\u0011\n(\u0015\rª\f\nÊ\u0012\r'\u0010\nÊ\u0012\f»\u0012\u0003\u0000\u0000\u0017t'\u0014t'C* Get affected files data and dict filevars for reading the record,\u0017t'\u0014t'\"* doing the calculate, and locking\u0017t'\u0017t'\u0014t'\u000fIF INDEX.OPEN('\u0013t'ä\f\u0014t'\u0002',\u0013t'€\f\u0014t'\u0006) ELSE\u0017t'\u0014t'\u0003 * \u0013t'€\f\u0014t'\u0005 = ''\u0017t'\u0014t'\u0014 MSG(\"B441\",\"\",\"\", \"\u0013t'ä\f\u0014t'\n\"[1,\"F*\"])\u0017t'\u0014t'\u000e RETURN FALSE$\u0017t'\u0014t'\u0003END\u0017t'\u0014t'\u0010IF INDEX.OPEN('!\u0013t'ä\f\u0014t'\u0007',BANG.\u0013t'€\f\u0014t'\u0006) ELSE\u0017t'\u0014t'\b * BANG.\u0013t'€\f\u0014t'\u0005 = ''\u0017t'\u0014t'\u0015 MSG(\"B441\",\"\",\"\", \"!\u0013t'ä\f\u0014t'\n\"[1,\"F*\"])\u0017t'\u0014t'\u000e RETURN FALSE$\u0017t'\u0014t'\u0003END\u0017t'\u0014t'\u0014IF INDEX.OPEN('DICT.\u0013t'ä\f\u0014t'\u0007',DICT.\u0013t'€\f\u0014t'\u0006) ELSE\u0017t'\u0014t'\b * DICT.\u0013t'€\f\u0014t'\u0005 = ''\u0017t'\u0014t'\u0019 MSG(\"B441\",\"\",\"\", \"DICT.\u0013t'ä\f\u0014t'\n\"[1,\"F*\"])\u0017t'\u0014t'\u000e RETURN FALSE$\u0017t'\u0014t'\u0003END\u0017t'\f¯\u0012\u0003\u0000\u0000\u0003\u0000\u0000\n\u0001\u0019\u0013´Ã´Ã\rF\f\n\u0001\u0019\u0017t'\u0014t'8* Make sure the record is locked and lock it now if not.\u0017t'\u0014t'=* At lease the indexes will stay correct this way even if the\u0017t'\u0014t'+* caller does not lock records on a network\u0017t'\u0014t'\"* Skip locking if not on a network\u0017t'\u0014t'\u0014ITEM.LOCKED = FALSE$\u0017t'\u0014t'\u0015IF LEN(@STATION) THEN\u0017t'\u0014t'\u0011* IF INDEX.OPEN('\u0013t'ä\f\u0014t'\u0014',LOCK.FILEVAR) THEN\u0017t'\u0014t'\u0018* LOCK_FV = LOCK.FILEVAR\u0017t'\u0014t'\u000f* LOCK_ID = @ID\u0017t'\u0014t'\u0013* LOCK_MSG = 'B440'\u0017t'\u0014t'\u0012* PARA = @ID:@FM:\"\u0013t'\u001c\f\u0014t'\u0001\"\u0017t'\u0014t'\u0011* GOSUB LOCK_ITEM\u0017t'\u0014t'\u000f* IF ABORT THEN\u0017t'\u0014t'\u000f* RETURN FALSE$\u0017t'\u0014t'\u0005* END\u0017t'\u0014t'%* IF LOCKED AND NOT(SELF_LOCKED) THEN\u0017t'\u0014t'\u0015* ITEM.LOCKED = TRUE$\u0017t'\u0014t'\u0005* END\u0017t'\u0014t'\u0005* END\u0017t'\t\u001c\u0000\nê\u0018\u0013´Ã´Ã\u0003\u0006\u0000\rF\f\nç\u0018\rp\u0011\nç\u0018\rª\f\nÞ\u0018\t\u0006\u0000\nß\u0017\u001b\u00032",
|
||
"<2,4,2>": "5\u0005\u0000\u0000\nß\u0017\nß\u0017\u000bÒ\u0018\u0014t'\u000b LOCK_FV = \t\u0006\u0000\n\u0002\u0018\u0014t'\u0007FILEVAR\u000b\r\u0018\u0013t'€\f\u0003\u0000\u0000\nÏ\u0018\u0017t'\u0014t'\f LOCK_ID = \"\u0013t'H\r\u0014t'\u0007*INDEX\"\u0017t'\u0014t'\u0012 LOCK_MSG = 'B521'\u0017t'\u0014t'\t PARA = \"\u0013t'H\r\u0014t'\u0007*INDEX\"\u0014t'\u0006:@FM:\"\u0013t'\u001c\f\u0014t'\u0001\"\u0017t'\u0014t'\u0010 GOSUB LOCK_ITEM\u0017t'\u0014t'\u000e IF ABORT THEN\u0017t'\u0014t'\u000e RETURN FALSE$\u0017t'\u0014t'\u0004 END\u0017t'\u0003\u0000\u0000\nÞ\u0018\r'\u0010\nÞ\u0018\fÅ\u0017\u0003\u0000\u0000\u0004\u0006\u0000\f¹\u0017\u0003\u0000\u0000\u0003\u0000\u0000\n\u0001\u0019\u0014t'\u0003END\u0017t'\u0013´Ã´Ã@\u000e?>?\u000e>\u0017t'\u0014t'+* Check for old record cached by read logic\u0017t'\u0017t'\u0014t'3OPTIMIZED = FALSE$ ;* remember if old record cached\u0017t'\u0014t'\u0010IF OLD.FLAG THEN\u0017t'\u0017t'\u0014t'6 * If something cached, then ID and FILEVAR must match\u0017t'\u0017t'\u0014t'\u0016 IF OLD.ID EQ @ID THEN\u0017t'\u0014t'\u001a IF OLD.FV EQ FILEVAR THEN\u0017t'\u0017t'\u0014t'D * If something cached, then the record had better have been locked.\u0017t'\u0014t'5 * If not we will force another read later. This will\u0017t'\u0014t'D * keep the indexes in line with the data file but some user may not\u0017t'\u0014t'F * find the data he expects if he is sharing the file without locking.\u0017t'\u0017t'\u0014t'\u0015* IF ITEM.LOCKED ELSE\u0017t'\u0014t'- OPTIMIZED = TRUE$ ;* did not have to lock it\u0017t'\u0014t'\u0016 IF OLD.FLAG EQ 2 THEN\u0017t'\u0014t') NO.OREC = TRUE$ ;* Record does not exist\u0017t'\u0014t'\n OREC = ''\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\u0019 TRANSFER OLD.REC TO OREC\u0017t'\u0014t'\u0011 NO.OREC = FALSE$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0005* END\u0017t'\u0014t'0 OLD.FLAG = FALSE$ ;* Empty the cache on a match\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0003END\u0017t'@\u000e?>?\u000e>\u0017t'\u0014t'-* If old record wasn't cached then get it now\u0017t'\u0017t'\u0014t'\u0011IF OPTIMIZED ELSE\u0017t'\u0014t'< CALL @NEXTFS(READ.RECORD, FS, FVAR:'', @ID, '', OREC, FLAG)\u0017t'\u0014t'\r IF FLAG THEN\u0017t'\u0014t'\u0011 NO.OREC = FALSE$\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\u001d IF @FILE.ERROR<1> # 100 THEN\u0017t'\u0014t')* IF @STATION NE '' AND ITEM.LOCKED THEN \u0017t'\u0014t'\u0018* ERR.SAVE = @FILE.ERROR\u0017t'\u0014t'$* UNLOCK LOCK.FILEVAR, @ID ELSE NULL\u0017t'\u0014t'\u0018* @FILE.ERROR = ERR.SAVE\u0017t'\u0014t'\u000f* FLAG = FALSE$\u0017t'\u0014t'\u0005* END\u0017t'\u0014t'6 RETURN FLAG ;* Error other than record does not exist\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\n OREC = ''\u0017t'\u0014t'\u0010 NO.OREC = TRUE$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0003END\u0017t'@\u000e?>?\u000e>\rF\f\né\u001e\u0013´Ã´Ã@\u000e?>?\u000e>\u0017t'\u0014t'+* Protection of index on deletes and writes\u0017t'\u0017t'\u0014t'-IF @MV EQ SI.DELETE$ OR @MV EQ SI.WRITE$ THEN\u0017t'\u0014t'\u0013 IF NO.PROTECT ELSE\u0017t'@\u000e?>?\u000e>\rª\f\nL \u001a\u00015\nL \u001a\u0001",
|
||
"<2,4,3>": "\nL G\u0001",
|
||
"<2,4,4>": "\nL \u001a\u0001",
|
||
"<2,4,5>": "\nL \u0017t'\u0014t'\u0011 * Protect field \u0013t' \u0000\u0017t'\u0017t'\u0014t'\t @RECORD<\u0013t' \u0000\u0014t'\t> = OREC<\u0013t' \u0000\u0014t'\u0001>\u0017t'\u0014t'\u0019 IF @MV = SI.DELETE$ THEN\u0017t'\u0014t'\f IF @RECORD<\u0013t' \u0000\u0014t'\u001b> # '' THEN @MV = SI.WRITE$\u0017t'\u0014t'\u0004 END\u0017t'@\u000e?>?\u000e>\u0014t'\u0004 END\u0017t'\u0014t'\u0003END\u0017t'@\u000e?>?\u000e>\t\n\u0000\n¯!\b\"\u0000 \u0000\t\u0006\u0000\nÊ \rz\"\nÊ \b\u001e\u0000¶Ã\rª\f\n³ \u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\r¿\"\n³ \r'\u0010\n³ \f‰ \u0003\u0000\u0000\u0014t'\bEND ELSE\u0017t'\b¶Ã\u001e\u0000\u0003\u0000\u0000\n¯!\b \u0000\"\u0000\rª\f\n”!\t\u0006\u0000\nö \u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\u0003\u0000\u0000\n”!\r³!\n”!\t\u0006\u0000\n‹!\t\u0010\u0000\u000bA!\u0014t'\u001c CONVERT MARKS TO VMARKS IN \u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0017t'\u0003\u0000\u0000\n‹!\t¬\n\u000bˆ!\u0014t'' CONVERT @LOWER.CASE TO @UPPER.CASE IN \u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0017t'\u0003\u0000\u0000\n‹!\u0003\u0000\u0000\n”!\fÕ \u0003\u0000\u0000\t\u0006\u0000\n§!\u0014t'\u0003END\u0017t'\u0003\u0000\u0000\n¯!@\u000e?>?\u000e>8B´Ãd\"\u001a\u00010\nÎ!\u001a\u0001",
|
||
"<2,4,6>": "\nÎ!\rÈ#\nÎ!@\u000e?>\fx\"\u001a\u00011\nç!\u001a\u0001",
|
||
"<2,4,7>": "\nç!\rD$\nç!@\u000e?>\fx\"\b\u0018\u0000¶Ã\u001a\u00012\n\u0005\"\u001a\u0001",
|
||
"<2,4,8>": "\n\u0005\"\rE&\n\u0005\"@\u000e?>\fx\"\u001a\u00013\n!\"\u001a\u0001",
|
||
"<2,4,9>": "\n!\"\r"
|
||
}
|
||
}
|
||
},
|
||
"record4": {
|
||
"<1>": {
|
||
"<1,1>": {
|
||
"<1,1,1>": "%\n!\"\u0003\u0010\u0000@\u000e?>\fx\"\u001a\u00015\nC\"\u001a\u0001",
|
||
"<1,1,2>": "\nC\"G\u0001",
|
||
"<1,1,3>": "\u0003\u0000\u0000\nC\"\u001a\u0001",
|
||
"<1,1,4>": "\nC\"@\u000e?>\fx\"\u001a\u00016\n_\"\u001a\u0001",
|
||
"<1,1,5>": "\n_\"\rÒ$\n_\"\u0003\u0012\u0000@\u000e?>\fx\"\u0006\u0000012356º!Ó!ì!\n\"&\"H\"?\u000e>\t\u000e\u0000\n°\"\t\u0006\u0000\n§\"\u0014t'\u0019IF @MV EQ SI.DELETE$ THEN\u0017t'\u000b\"\r[#\n°\"\u000b¶\"\r[#\n»\"@\u000e?>?\u000e>8B´ÃE#\r{#\nÎ\"@\u000e?>\fY#\r{#\nÛ\"@\u000e?>\fY#\r{#\nè\"@\u000e?>\fY#\u0014t'\u0001 \t\u000e\u0000\n\u0005#\u0014t'\u0004NEW.\u0013t'ˆ\u000b\u000b\u0018#\u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0003\u0000\u0000\n)#\u0014t'\u0005 = ''\u0017t'@\u000e?>\fY#\u0003\u0000\u0000@\u000e?>\fY#\r{#\n@#@\u000e?>\fY#\u0006\u0000012356Æ\"Ó\"à\"í\".#8#?\u000e>\u0014t'\u000fIF NO.OREC THEN\u0017t'\u0003\u0000\u0000@\u000e?>?\u000e>\u0014t'\u0001 \t\u000e\u0000\n”#\u0014t'\u0004NEW.\u0013t'ˆ\u000b\u000b§#\u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0003\u0000\u0000\nÄ#\u0014t'\u0011 = DELETED.VALUE$\u0017t'@\u000e?>?\u000e>G\u0001",
|
||
"<1,1,6>": "\n@$\u001a\u0001",
|
||
"<1,1,7>": "\n@$\u0014t'\u0001 \t\u000e\u0000\ní#\u0014t'\u0004NEW.\u0013t'ˆ\u000b\u000b\u0000$\u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0003\u0000\u0000\n@$\u0014t'\u0003 = \t\u000e\u0000\n\u001b$\u0014t'\u0007@RECORD\u000b)$\u0014t'\u0004OREC\u0003\u0000\u0000\n@$\u0014t'\u0001<\u0013t' \u0000\u0014t'\u0001>\u0017t'@\u000e?>?\u000e>\u0014t'\u0001 \t\u000e\u0000\n]$\u0014t'\u0004NEW.\u0013t'ˆ\u000b\u000bp$\u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0003\u0000\u0000\nÎ$\u0014t'\u0003 = #\n³$6\f\u0000\t\f\u0000\n£$\u0014t'\u000eFIELD(@ID,'*',\u0013t'p\b\u0014t'\u0001)\u000b°$\u0014t'\u0003@ID\u0003\u0000\u0000\n³$\u000bÀ$\u0014t'\u0003@ID\u0003\u0000\u0000\nÎ$\u0017t'\u001a\u0001",
|
||
"<1,1,8>": "\nÎ$@\u000e?>?\u000e>G\u0001",
|
||
"<1,1,9>": "\nó$\u001a\u0001",
|
||
"<1,1,10>": "\nó$\r÷$\nó$G\u0001",
|
||
"<1,1,11>": "\nó$\u001a\u0001",
|
||
"<1,1,12>": {
|
||
"<1,1,12,1>": "\nó$@\u000e?>?\u000e>\u0014t'\u001b IF DICT.FILEVAR NE '' THEN\u0017t'\u0014t'\u0001 \t\u000e\u0000\n2%\u0014t'\u0004NEW.\u0013t'ˆ\u000b\u000bE%\u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0003\u0000\u0000\n",
|
||
"<1,1,12,2>": "%\u0014t'\u000f = CALCULATEX('\u0013t' \u0000\u0014t'\u0013',DICT.FILEVAR,@ID,\t\u000e\u0000\nˆ%\u0014t'\u0007@RECORD\u000b–%\u0014t'\u0004OREC\u0003\u0000\u0000\n",
|
||
"<1,1,12,3>": "%\u0014t'\u0004,'')\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\u0001 \t\u000e\u0000\nÌ%\u0014t'\u0004NEW.\u0013t'ˆ\u000b\u000bß%\u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0003\u0000\u0000\n",
|
||
"<1,1,12,4>": "%\u0014t'\u0005 = ''\u0017t'\u0014t'\u0004 END\u0017t'@\u000e?>?\u000e>G\u0001"
|
||
},
|
||
"<1,1,13>": "\nA&\u001a\u0001",
|
||
"<1,1,14>": "\nA&\r÷$\nA&G\u0001",
|
||
"<1,1,15>": "\u0003\u0000\u0000\nA&\u001a\u0001",
|
||
"<1,1,16>": "\nA&G\u0001",
|
||
"<1,1,17>": "\u0003\u0000\u0000\nA&\u001a\u0001",
|
||
"<1,1,18>": "\nA&G\u0001",
|
||
"<1,1,19>": "\u0003\u0000\u0000\nA&\u001a\u0001",
|
||
"<1,1,20>": "\nA&@\u000e?>?\u000e>\t\u0006\u0000\nÝ&G\u0001",
|
||
"<1,1,21>": "\nÝ&\u001a\u0001",
|
||
"<1,1,22>": "\nÝ&\t\u000e\u0000\nŒ&\u0014t'\u0005 NEW.\u0013t'ˆ\u000b\u0014t'\u000e = CALCULATE('\u0013t'H\r\u0014t'\u0002')\u0017t'\u000bÚ&\u0014t'\u0005 OLD.\u0013t'ˆ\u000b\u0014t'\u000f = CALCULATEX('\u0013t'H\r\u0014t'\u001b',DICT.FILEVAR,@ID,OREC,'')\u0017t'\u0003\u0000\u0000\nÝ&\u000b„0\u000f¼\u000b)\nø&\u0010¼\u000b\nø&\b¶Ã\u0018\u0000\r'\u0010\nø&\u000b*0\u000fÌ\u000b*\n'0\b\u0018\u0000¶Ã\u0013º\nº\nG\u0001",
|
||
"<1,1,23>": "\n'0\u001a\u0001",
|
||
"<1,1,24>": "\n'0\u0013º\n \u0000\u0014º\n\u0001*G\u0001",
|
||
"<1,1,25>": "\u0003\u0000\u0000\n'0\u001a\u0001",
|
||
"<1,1,26>": "\n'0\u0013º\n \u0000\u000fÔ\u000b*\n'0\rª\f\n½'\u000f¼\u000b)\nV'\u0010¼\u000b\nV'\r'\u0010\nV'\u000b·'\u001a\u00012\n´'\u001a\u0001",
|
||
"<1,1,27>": "\n´'\u0013º\nº\nG\u0001",
|
||
"<1,1,28>": "\n´'\u001a\u0001",
|
||
"<1,1,29>": "\n´'\u0013º\n \u0000\u0014º\n\u0001*G\u0001",
|
||
"<1,1,30>": "\u0003\u0000\u0000\n´'\u001a\u0001",
|
||
"<1,1,31>": "\n´'\u0013º\n \u0000\u000fÔ\u000b)\n®'\u0010Ô\u000b\n¨'\u000fÌ\u000b*\n¨'\u0003\u0000\u0000\n®'\u0003\u0000\u0000\n´'\u0003\u0000\u0000\n½'\f='\u0003\u0000\u0000\b¶Ã\u0018\u0000\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013˜\u000b˜\u000b\u0013˜\u000b–\n\u0007 \u0000\t\u000e\u0000\n\u0001(G\u0001",
|
||
"<1,1,32>": "\u0003\u0000\u0000\n\u0001(\u001a\u0001",
|
||
"<1,1,33>": "\n\u0001(G\u0001",
|
||
"<1,1,34>": "\u0003\u0000\u0000\n\u0001(\u001a\u0001",
|
||
"<1,1,35>": {
|
||
"<1,1,35,1>": {
|
||
"<1,1,35,1,1>": "\n\u0001(\u000b\u0007(\r0\n'0\u0017t'\u0014t'0 * LOOP THROUGH ALL IDS, WE HAVE TO COMPUTE THE \t\u000e\u0000\nN(\u0014t'\u0003NEW\u000b[(\u0014t'\u0003OLD\u0003\u0000\u0000\n'0\u0014t'\u0016 VALUE FOR ALL OF THEM\u0017t'\u0017t'\u0014t'\u0016 ID.LEN = LEN(ID.LIST.\u0013t'˜\u000b\u0014t'\u0001)\u0017t'\u0014t'\u000b ID.COL = 1\u0017t'0\u0014\u0000\u0000\u0000\b\"\u0000 \u0000\u000fÌ\u000bA\u0014\u0000\t\u0014\u0000\n8)\u0010Ì\u000b\n/)\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\t\u000e\u0000\n\u0007)\u0014t'\u0005 COL.\u0013t'ˆ\u000b\u0014t'\u0004 = 1\u0017t'\u000b,)\u0014t'\n OLD.LIST.\u0013t'ˆ\u000b\u0014t'\u0005 = ''\u0017t'\u0003\u0000\u0000\n/)\u0003\u0000\u0000\n8)\fÁ(\u0003\u0000\u0000\t\u000e\u0000\nU)\u0014t'\r NEXT.ID = ''\u0017t'\u0003\u0000\u0000\n'0\u0014t'\u001c LOOP WHILE ID.COL LE ID.LEN\u0017t'\u0014t'\u0013 NEXT.ID = ID.LIST.\u0013t'˜\u000b\u0014t'\f[ID.COL,@VM]\u0017t'\u0014t'\u0012 ID.COL = COL2()+1\u0017t'\u0017t'\u0014t'L * A special ID, '%%ALL.IDS%%' implies that all IDS are affected or at least\u0017t'\u0014t'@ * enough to warrant simply building the index over from scratch\u0017t'\u0017t'\u0014t'\u001f UNTIL NEXT.ID EQ '%%ALL.IDS%%'\u0017t'\u0017t'\u0014t': * Read the data record, check the other file cached first\u0017t'\u0017t'\u0014t'\u0017 IF NEXT.ID NE KEY THEN\u0017t'\u0014t'\u000e KEY = NEXT.ID\u0017t'\u0014t'\u0010 READ OREC FROM \u0013t'€\f\u0014t'\r,NEXT.ID THEN\u0017t'\u0014t'\u0011 NO.OREC = FALSE$\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\b OREC=''\u0017t'\u0014t'\u0010 NO.OREC = TRUE$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0004 END\u0017t'\u0017t'\u0014t'\u0010 IF NO.OREC THEN\u0017t'0\u0014\u0000\u0000\u0000\b \u0000\"\u0000\u000fÌ\u000bA\u0014\u0000\t\u0014\u0000\n>,\u0010Ì\u000b\n5,\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\u0014t'\u0001 \t\u000e\u0000\n",
|
||
"<1,1,35,1,2>": "+\u0014t'\u0004NEW.\u0013t'ˆ\u000b\u000b\u001a,\u0014t'\tOLD.LIST.\u0013t'ˆ\u000b\u0014t'\u0004<-1>\u0003\u0000\u0000\n5,\u0014t'\u0011 = DELETED.VALUE$\u0017t'\u0003\u0000\u0000\n>,\f»+\u0003\u0000\u0000\u0014t'\t END ELSE\u0017t'0\u0014\u0000\u0000\u0000\b \u0000\"\u0000\u000fÌ\u000bA\u0014\u0000\t\u0014\u0000\nÓ-\u0010Ì\u000b\nÊ-\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\u0014t'\u0001 \t\u000e\u0000\n•,\u0014t'\u0004NEW.\u000b£,\u0014t'\u0004OLD.\u0003\u0000\u0000\nÊ-\u0013t'ˆ\u000b\u0014t'\u000f = CALCULATEX('\u0013t'H\r\u0014t'\u0007',DICT.\u0013t'€\f\u0014t'\u0011,NEXT.ID,OREC,'')\u0017t'\u0014t'\u001c CONVERT MARKS TO VMARKS IN \t\u000e\u0000\n\u0019-\u0014t'\u0004NEW.\u000b'-\u0014t'\u0004OLD.\u0003\u0000\u0000\nÊ-\u0013t'ˆ\u000b\u0017t'\t¬\n\u000b-\u0014t'' CONVERT @LOWER.CASE TO @UPPER.CASE IN \t\u000e\u0000\nq-\u0014t'\u0004NEW.\u000b-\u0014t'\u0004OLD.\u0003\u0000\u0000\nŠ-\u0013t'ˆ\u000b\u0017t'\u0003\u0000\u0000\nÊ-\t\u000e\u0000\u000bÇ-\u0014t'\n OLD.LIST.\u0013t'ˆ\u000b\u0014t'\u0007<-1> = \u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0017t'\u0003\u0000\u0000\nÊ-\u0003\u0000\u0000\nÓ-\f[,\u0003\u0000\u0000\u0014t'\u0004 END\u0017t'0\u0014\u0000\u0000\u0000\b \u0000\"\u0000\u000fÌ\u000bA\u0014\u0000\t\u0014\u0000\nG/\u0010Ì\u000b\n>/\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\t\u000e\u0000\n8/\u0014t'\u0001 \u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0014t'\u0003 = \u0014t'\tOLD.LIST.\u0013t'ˆ\u000b\u0014t'\u0005[COL.\u0013t'ˆ\u000b\u0014t'\u0005,@FM]\u0017t'\u0014t'\u0005 COL.\u0013t'ˆ\u000b\u0014t'\u000b = COL2()+1\u0017t'\u0014t'\u0004 IF \u0014t'\u0004NEW.\u0013t'ˆ\u000b\u0014t'\u0004 NE \u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0014t'\u0005 THEN\u0017t'\u0014t'\u0001 \u0013t'€\f\u0014t'\t.UPD := '\u0013t'H\r\u0014t'\u0012':@FM:NEXT.ID:@FM:\u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0014t'\u0005:@FM:\u0014t'\u0004NEW.\u0013t'ˆ\u000b\u0014t'\u0004:@FM\u0017t'\u0014t'\u0001 \u0013t'€\f\u0014t'\t.CNT += 1\u0017t'\u0014t'\u0004 END\u0017t'\u0003\u0000\u0000\n>/\u0003\u0000\u0000\nG/\fë-\u0003\u0000\u0000\u0014t'\u0007 REPEAT\u0017t'\t\u000e\u0000\n$0\u0014t'! IF NEXT.ID EQ '%%ALL.IDS%%' THEN\u0017t'0\u0014\u0000\u0000\u0000\b \u0000\"\u0000\u000fÌ\u000bA\u0014\u0000\t\u0014\u0000\n\u00160\u0010Ì\u000b\n\r0\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\u0014t'\u0001 \u0013t'€\f\u0014t'\t.UPD := '\u0013t'H\r\u0014t'\u0019':@FM:NEXT.ID:@FM:@FM:@FM\u0017t'\u0014t'\u0001 \u0013t'€\f\u0014t'\t.CNT += 1\u0017t'\u0003\u0000\u0000\n\u00160\f/\u0003\u0000\u0000\u0014t'\u0004 END\u0017t'\n'0\u0003\u0000\u0000\n00\u0014\u0000\u0000\u0000\u000fÌ\u000bA\u0014\u0000\t\u0014\u0000\nT0\u0010Ì\u000b\nK0\u000f¼\u000b*\nK0\u0003\u0000\u0000\nT0\f20\u0003\u0000\u00000\u0014\u0000\u0000\u0000\u000fÔ\u000bA\u0014\u0000\t\u0014\u0000\n~0\u0010Ô\u000b\nu0\u000fÜ\u000b*\nu0\u0003\u0000\u0000\n~0\f\\0\u0003\u0000\u0000\u0003\u0000\u0000\n‰0@\u000e?>?\u000e>\u0003\u0000\u0000\u0014t'. * Get list of ID's affected in the other file\u0017t'\u0017t'\nÑ0@>\fØ0\u0004\u0000\u0000?\u000e@\u000e?>8B´Ã71\u001a\u00010\n\u00001\u001a\u0001"
|
||
}
|
||
},
|
||
"<1,1,36>": "\n\u00001G\u0001",
|
||
"<1,1,37>": "\n\u00001\u001a\u0001",
|
||
"<1,1,38>": "\n\u00001\rD1\n\u00001@\u000e?>\fB1\u001a\u00011\n\u00191\u001a\u0001",
|
||
"<1,1,39>": "\n\u00191\rÞ3\n\u00191@\u000e?>\fB1\u001a\u00012\n21\u001a\u0001",
|
||
"<1,1,40>": "\n21\rP4\n21@\u000e?>\fB1\u0003\u0000012à0\u00051\u001e1?\u000e>\u0014t'\t ID.LIST.\u0013t'˜\u000b\u0014t'\b = OREC<\u0013t' \u0000\u0014t'\u0001>\u0017t'\u0014t'\u001a IF @MV NE SI.DELETE$ THEN\u0017t'\u0014t'\u0017 NEW.ID.LIST = @RECORD<\u0013t' \u0000\u0014t'\u0001>\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\u0011 NEW.ID.LIST = ''\u0017t'\u0014t'\u0004 END\u0017t'\rø1\nô1@\u000e?>?\u000e>\u0017t'\u0014t'8 * Watch out for ID.LIST changing from OLD to NEW record\u0017t'\u0017t'\u0014t'\f IF ID.LIST.\u0013t'˜\u000b\u0014t'\u0014 NE NEW.ID.LIST THEN\u0017t'\u0017t'\u0014t'2 * The list has been changed, now avoid duplicates\u0017t'\u0017t'\u0014t'\u001a ID.LEN = LEN(NEW.ID.LIST)\u0017t'\u0014t'\u000b ID.COL = 1\u0017t'\u0014t'\u001c LOOP WHILE ID.COL LE ID.LEN\u0017t'\u0014t'\" NEXT.ID = NEW.ID.LIST[ID.COL,@VM]\u0017t'\u0014t'\u0012 ID.COL = COL2()+1\u0017t'\u0014t'\u001b LOCATE NEXT.ID IN ID.LIST.\u0013t'˜\u000b\u0014t'\u001b USING @VM SETTING NUM ELSE\u0017t'\u0014t'\t ID.LIST.\u0013t'˜\u000b\u0014t'\u0010<1,-1> = NEXT.ID\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0007 REPEAT\u0017t'\u0014t'\u0004 END\u0017t'@\u000e?>?\u000e>\u0014t'\t ID.LIST.\u0013t'˜\u000b\u0014t'\u0003 = #\n146\f\u0000\t\f\u0000\n!4\u0014t'\u000eFIELD(@ID,'*',\u0013t'p\b\u0014t'\u0001)\u000b.4\u0014t'\u0003@ID\u0003\u0000\u0000\n14\u000b>4\u0014t'\u0003@ID\u0003\u0000\u0000\nL4\u0017t'\u001a\u0001",
|
||
"<1,1,41>": "\nL4@\u000e?>?\u000e>G\u0001",
|
||
"<1,1,42>": "\n©5\u001a\u0001",
|
||
"<1,1,43>": "\n©5\u0014t'\u001b IF DICT.FILEVAR NE '' THEN\u0017t'\u0014t'\t ID.LIST.\u0013t'˜\u000b\u0014t'\u000f = CALCULATEX('\u0013t' \u0000\u0014t'\u001b',DICT.FILEVAR,@ID,OREC,'')\u0017t'\u0014t'\u001a IF @MV NE SI.DELETE$ THEN\u0017t'\u0014t'\u001b NEW.ID.LIST = CALCULATEX('\u0013t' \u0000\u0014t'\u001e',DICT.FILEVAR,@ID,@RECORD,'')\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\u0011 NEW.ID.LIST = ''\u0017t'\u0014t'\u0004 END\u0017t'\rø1\n©5\u0014t'\t END ELSE\u0017t'\u0014t'\t ID.LIST.\u0013t'˜\u000b\u0014t'\u0005 = ''\u0017t'\u0014t'\u0004 END\u0017t'@\u000e?>?\u000e>\u0014t'\u0003END\u0017t'0\u0014\u0000\u0000\u0000\u000f¼\u000bA\u0014\u0000\t\u0014\u0000\nß5\u0010¼\u000b\nÖ5\u000fÄ\u000b*\nÖ5\u0003\u0000\u0000\nß5\f½5\u0003\u0000\u0000@\u000e?>?\u000e>\u0017t'\u0014t'0* Time to actually do the record write or delete\u0017t'\u0017t'\u0014t'%INDEXES = TRUE$ ;* Set SC.XLATE.RESET\u0017t'\u0014t'\u0019IF @MV EQ SI.DELETE$ THEN\u0017t'\u0014t'4 CALL @NEXTFS(DELETE.RECORD,FS,FVAR,@ID,'','', FLAG)\u0017t'\u0014t'\bEND ELSE\u0017t'\u0014t'8 CALL @NEXTFS(WRITE.RECORD,FS,FVAR,@ID,'',@RECORD, FLAG)\u0017t'\u0014t'\u0003END\u0017t'\u0014t'\rIF FLAG ELSE \u0017t'\u0014t')* IF @STATION NE '' AND ITEM.LOCKED THEN \u0017t'\u0014t'\u0018* ERR.SAVE = @FILE.ERROR\u0017t'\u0014t'$* UNLOCK LOCK.FILEVAR, @ID ELSE NULL\u0017t'\u0014t'\u0018* @FILE.ERROR = ERR.SAVE\u0017t'\u0014t'\u000f* FLAG = FALSE$\u0017t'\u0014t'\u0005* END\u0017t'\u0014t'\f RETURN FLAG\u0017t'\u0014t'\u0003END\u0017t'@\u000e?>?\u000e>\u0017t'\u0014t'2* Loop through all files, compute new field values\u0017t'\u0017t'\u0013´Ã´Ã\rF\f\n†8\rp\u0011\n†8\rª\f\nW8\r'\u0010\nW8\fH8\u0003\u0000\u0000\u0013t'€\f\u0014t'\t.UPD = ''\u0017t'\u0013t'€\f\u0014t'\b.CNT = 0\u0017t'\f<8\u0003\u0000\u0000\u0013´Ã´Ã@\u000e?>?\u000e>\u0014t'\u0004IF (\u0013t'€\f\u0014t'\u0012 NE '') AND (DICT.\u0013t'€\f\u0014t'\f NE '') THEN\u0017t'\u0017t'\u0014t'$ * clear the other file record cache\u0017t'\u0017t'\u0014t'\t KEY = ''\u0017t'\u0003\u0000\u0000@\u000e?>?\u000e>\t\n\u0000\nÔ<\b\"\u0000 \u0000\t\u0006\u0000\nx9\rz\"\nx9\b\u001e\u0000¶Ã\rª\f\na9\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\r¿\"\na9\r'\u0010\na9\f79\u0003\u0000\u0000\u0014t'\bEND ELSE\u0017t'\b¶Ã\u001e\u0000\u0003\u0000\u0000\nÔ<\b \u0000\"\u0000\rª\f\nD:\u0004\u0010\u0000\u0004\u0012\u0000\t\u0006\u0000\nª9\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\u0003\u0000\u0000\nD:\r³!\nD:\t\u0006\u0000\n;:\t\u0010\u0000\u000bõ9\u0014t'\u001c CONVERT MARKS TO VMARKS IN \u0014t'\u0004NEW.\u0013t'ˆ\u000b\u0017t'\u0003\u0000\u0000\n;:\t¬\n\u000b8:\u0014t'+ CONVERT @LOWER.CASE TO @UPPER.CASE IN NEW.\u0013t'ˆ\u000b\u0017t'\u0003\u0000\u0000\n;:\u0003\u0000\u0000\nD:\fƒ9\u0003\u0000\u0000\t\u0006\u0000\nÌ<\u0014t'\u0003END\u0017t'\b¶Ã\u001e\u0000\b \u0000\"\u0000\rª\f\nÉ<\u0004\u0010\u0000\u0004\u0012\u0000\u001b\u00013\nv:\u0003\u0010\u0000\u0003\u0000\u0000\nÉ<\u001b\u00016\n…:\u0003\u0012\u0000\u0003\u0000\u0000\nÉ<\r'\u0010\nÉ<\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\u0014t'\u0007IF NEW.\u0013t'ˆ\u000b\u0014t'\u0004 NE \u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0014t'\u0005 THEN\u0017t'\t\u0012\u0000\nø;\u0014t'+ IF (DICT.FILEVAR EQ '') OR (@MV EQ 1) THEN\u0017t'\u0014t'\u0005 NEW.\u0013t'ˆ\u000b\u0014t'\u0005 = ''\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\u0005 NEW.\u0013t'ˆ\u000b\u0014t'\u000f = CALCULATEX('\u0013t' \u0000\u0014t'\u001e',DICT.FILEVAR,@ID,@RECORD,'')\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\b IF NEW.\u0013t'ˆ\u000b\u0014t'\u000b NE '' THEN\u0017t'\u0014t'\u0001 \u0013t'€\f\u0014t'\t.UPD := '\u0013t'H\r\u0014t'\u0016':@FM:@ID:@FM:@FM:NEW.\u0013t'ˆ\u000b\u0014t'\u0004:@FM\u0017t'\u0003\u0000\u0000\nÉ<\t\u0010\u0000\n\n<\rØ<\n\n<\u0003\u0000\u0000\nÉ<\t\u0012\u0000\u000bq<\u0014t'\u0001 \u0013t'€\f\u0014t'\t.UPD := '\u0013t'H\r\u0014t'\u000e':@FM:@ID:@FM:\u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0014t'\t:@FM:NEW.\u0013t'ˆ\u000b\u0014t'\u0004:@FM\u0017t'\u0003\u0000\u0000\nÉ<\u0014t'\u0001 \u0013t'€\f\u0014t'\t.CNT += 1\u0017t'\t\u0010\u0000\nŸ<\u0014t'\u0004 END\u0017t'\u0003\u0000\u0000\nÉ<\t\u0012\u0000\n¶<\u0014t'\u0004 END\u0017t'\u0003\u0000\u0000\nÉ<\u0014t'\u0003END\u0017t'\fa:\u0003\u0000\u0000\u0003\u0000\u0000\nÔ<@\u000e?>?\u000e>\u0017t'\u0014t'( * Optimize relational index transaction\u0017t'\u0017t'\u0014t'\u000e TRANSFER NEW.\u0013t'ˆ\u000b\u0014t'\b TO NEWX\u0017t'\u0014t'\u000e TRANSFER OLD.\u0013t'ˆ\u000b\u0014t'\b TO OLDX\u0017t'\u0014t'\u001a GOSUB OPTIMIZE_RELATIONAL\u0017t'\u0014t'\u0016 TRANSFER NEWX TO NEW.\u0013t'ˆ\u000b\u0017t'\u0014t'\u0016 TRANSFER OLDX TO OLD.\u0013t'ˆ\u000b\u0017t'\u0014t'\b IF NEW.\u0013t'ˆ\u000b\u0014t'\b NE OLD.\u0013t'ˆ\u000b\u0014t'\u0005 THEN\u0017t'\u0003\u0000\u0000@\u000e?>?\u000e>\u0013´Ã´Ã\rF\f\nëA\rp\u0011\nëA\rª\f\n\u0017>\r'\u0010\n\u0017>\f\b>\u0003\u0000\u0000\u0014t'\u0010UPDATE.LIST = ''\u0017t'\u0014t'\u0003IF \u0013t'€\f\u0014t'\u000f.UPD NE '' THEN\u0017t'\u0014t'\u0010 UPDATE.LIST := \u0013t'€\f\u0014t'\u0004.UPD\u0017t'\u0014t'\u0003END\u0017t'\t\u001c\u0000\nÞA\rF\f\nÛA\rp\u0011\nÛA\rª\f\n¢>\r'\u0010\n¢>\f“>\u0003\u0000\u0000\u0014t'\u0003IF \u0013t'€\f\u0014t'\u000f.UPD NE '' THEN\u0017t'\u0014t'\u0016 IF LEN(@STATION) THEN\u0017t'\u0014t'\u0010 LOCK_FV = BANG.\u0013t'€\f\u0017t'\u0014t'\u000e LOCK_ID = \"0\"\u0017t'\u0014t'\u0012 LOCK_MSG = 'B521'\u0017t'\u0014t'\t PARA = 0\u0014t'\u0007:@FM:\"!\u0013t'\u001c\f\u0014t'\u0001\"\u0017t'\u0014t'\u0010 GOSUB LOCK_ITEM\u0017t'\u0014t'\u000f IF ABORT THEN \u0017t'\u0014t'K* IF @STATION NE '' AND ITEM.LOCKED THEN UNLOCK LOCK.FILEVAR, @ID ELSE NULL\u0017t'\u0014t'\u000e RETURN FALSE$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0018 READ F.TRANS FROM BANG.\u0013t'€\f\u0014t'\u0018, \"0\" ELSE F.TRANS = @FM\u0017t'\u0014t'\f F.TRANS := \u0013t'€\f\u0014t'\u0004.UPD\u0017t'\u0014t'( IF LEN(F.TRANS) GT MAX.UPDATE.SIZE THEN\u0017t'\u0014t'\u0016 NUM = F.TRANS[1, @FM]\u0017t'\u0014t'\u0017 F.TRANS[1,COL2()] = \"\"\u0017t'\u0014t'\t NUM += 1\u0017t'\u0014t'\u0001*\u0017t'\u0014t'# WRITE NUM + 1:@FM:F.TRANS TO BANG.\u0013t'€\f\u0014t'\u0018, NUM ELSE RETURN FALSE$\u0017t'\u0014t'\u0012 F.TRANS = NUM:@FM\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0017 WRITE F.TRANS TO BANG.\u0013t'€\f\u0014t'\u0018, \"0\" ELSE RETURN FALSE$\u0017t'\u0014t'# IF LEN(@STATION) THEN UNLOCK BANG.\u0013t'€\f\u0014t'\u000e,\"0\" ELSE NULL\u0017t'\u0014t'\u0003END\u0017t'\f‡>\u0003\u0000\u0000\u0003\u0000\u0000\nëA\u0013´Ã´Ã@\u000e?>?\u000e>\u0014t'\u0017* End of clearfile else\u0017t'\u0014t'\u0003END\u0017t'\u0014t'F* If updates to perform, check for trans rec and write out transaction\u0017t'\u0014t'O* If record is too big, write to the end of the linked list and clear record 0.\u0017t'\u0014t'>* Need to update record 0 no matter if split is needed or not.\u0017t'\u0014t'\u0013IF UPDATE.LIST THEN\u0017t'\u0014t'- IF BATCH.MODE% AND (UPDATE.ITEM% NE \"\") ELSE\u0017t'\u0014t'\u0016 IF LEN(@STATION) THEN\u0017t'\u0014t'\u0011 LOCK_FV = IDX.FV\u0017t'\u0014t'\u000e LOCK_ID = \"0\"\u0017t'\u0014t'\u0012 LOCK_MSG = 'B521'\u0017t'\u0014t'\t PARA = 0\u0014t'\n:@FM:FNAME\u0017t'\u0014t'\u0010 GOSUB LOCK_ITEM\u0017t'\u0014t'\u000e IF ABORT THEN\u0017t'\u0014t'K* IF @STATION NE '' AND ITEM.LOCKED THEN UNLOCK LOCK.FILEVAR, @ID ELSE NULL\u0017t'\u0014t'\u000e RETURN FALSE$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0001*\u0017t'\u0014t'* READ TRANS.REC FROM IDX.FV, \"XTRANS\" THEN\u0017t'\u0014t'\f GOSUB PATCH\u0017t'\u0014t'\u001b IF FLAG ELSE RETURN FALSE$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0001*\u0017t'\u0014t'( READ UPDATE.ITEM% FROM IDX.FV, \"0\" ELSE\u0017t'\u0014t'\u0013 UPDATE.ITEM% = @FM\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0001*\u0017t'\u0014t'\u0014 IF BATCH.MODE% THEN\u0017t'\u0014t'\u001a BATCH.MODE%<2> = TIME()+5\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u001c UPDATE.ITEM% := UPDATE.LIST\u0017t'\u0014t'A * Record over 1k bytes, will split and write to the end of list.\u0017t'\u0014t'- IF LEN(UPDATE.ITEM%) GT MAX.UPDATE.SIZE THEN\u0017t'\u0014t'\u000f RELINK = TRUE$\u0017t'\u0014t'\u001b NUM = UPDATE.ITEM%[1, @FM]\u0017t'\u0014t'\u001c UPDATE.ITEM%[1,COL2()] = \"\"\u0017t'\u0014t'\t NUM += 1\u0017t'\u0014t'\u0001*\u0017t'\u0014t'5 TRANS.REC = \"W\":@FM:NUM:@FM:NUM + 1:@FM:UPDATE.ITEM%\u0017t'\u0014t'2 CONVERT @FM:@VM:@SVM TO @VM:@SVM:@TM IN TRANS.REC\u0017t'\u0014t'' TRANS.REC := @FM:\"W\":@VM:0:@VM:NUM:@VM\u0017t'\u0014t'7 WRITE TRANS.REC TO IDX.FV, \"XTRANS\" ELSE RETURN FALSE$\u0017t'\u0014t'\u0001*\u0017t'\u0014t'A WRITE NUM + 1:@FM:UPDATE.ITEM% TO IDX.FV, NUM ELSE RETURN FALSE$\u0017t'\u0014t'\u0017 UPDATE.ITEM% = NUM:@FM\u0017t'\u0014t'\u0016 WRITE.UPDATES = TRUE$\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\u0010 RELINK = FALSE$\u0017t'\u0014t'\u0014 IF BATCH.MODE% THEN\u0017t'\u0014t'+ WRITE.UPDATES = (TIME() GT BATCH.MODE%<2>)\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\u0016 WRITE.UPDATES = TRUE$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0016 IF WRITE.UPDATES THEN\u0017t'\u0014t'5 WRITE UPDATE.ITEM% TO IDX.FV, \"0\" ELSE RETURN FALSE$\u0017t'\u0014t'\u000f IF RELINK THEN\u0017t'\u0014t'+ DELETE IDX.FV, \"XTRANS\" ELSE RETURN FALSE$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0016 IF LEN(@STATION) THEN\u0017t'\u0014t'\u001c UNLOCK IDX.FV,\"0\" ELSE NULL\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0012 UPDATE.ITEM% = \"\"\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0003END\u0017t'\u0014t'$* Skip final processing if clearfile\u0017t'\u0014t'\u001cIF @MV EQ SI.CLEARFILE$ ELSE\u0017t'@\u000e?>?\u000e>\u0017t'\u0014t'I * Unlock all the indexes that were \"logically\" locked before getting the\u0017t'\u0014t'\r * OLD VALUES\u0017t'\u0017t'\u0014t'\u0017 IF @STATION NE '' THEN\u0017t'\rF\f\nÅK\rp\u0011\nÅK\rª\f\n9K\u001b\u00032",
|
||
"<1,1,44>": "5\n*K\u0014t'\u0011 UNLOCK FILEVAR,'\u0013t'H\r\u0014t'\u0011*INDEX' ELSE NULL\u0017t'\u0003\u0000\u0000\n9K\r'\u0010\n9K\fêJ\u0003\u0000\u0000\rF\f\n»K\rp\u0011\n»K\u0014t'\u0004 IF \u0013t'€\f\u0014t'\u000b NE '' THEN\u0017t'\rª\f\nªK\r'\u0010\nªK\u0014t'\b UNLOCK \u0013t'€\f\u0014t'\u0002,'\u0013t'H\r\u0014t'\u0011*INDEX' ELSE NULL\u0017t'\fgK\u0003\u0000\u0000\u0014t'\u0004 END\u0017t'\f<K\u0003\u0000\u0000\u0013´Ã´Ã@\u000e?>?\u000e>\u0014t'\u0015* IF ITEM.LOCKED THEN\u0017t'\u0014t'#* UNLOCK LOCK.FILEVAR,@ID ELSE NULL\u0017t'\u0014t'\u0005* END\u0017t'\u0014t'\u0004 END\u0017t'@\u000e?>?\u000e>\u0003\u0006\u0000\rF\f\n=N\rp\u0011\n=N0 \u0000\u0000\u0000\rª\f\n3N\u0006 \u0000\b\u0002\u0000 \u0000\u001f\u0002\u0000\u0013ˆ\u000bˆ\u000b\u0013ˆ\u000b–\n\u001b\u00013\n'N\u001a\u00013\n'N\u001a\u0001",
|
||
"<1,1,45>": "\n'N\t\u0006\u0000\nÏL\u0004\u0006\u0000\u0017t'\u0014t'M * Handle relation types specially: Try doing the relation update immediately\u0017t'\u0003\u0000\u0000\n'N\u0014t'\u0004 IF \u0014t'\u0004NEW.\u0013t'ˆ\u000b\u0014t'\u0004 NE \u0014t'\u0004OLD.\u0013t'ˆ\u000b\u0014t'\u0005 THEN\u0017t'G\u0001",
|
||
"<1,1,46>": "\n'N\u001a\u0001",
|
||
"<1,1,47>": "\n'NG\u0001",
|
||
"<1,1,48>": "\n'N\u001a\u0001",
|
||
"<1,1,49>": "\n'N\u0014t'\u0010 IF INDEX.OPEN('\u0013t' \u0000\u0014t'\u0016',D.FV) ELSE D.FV = ''\u0017t'G\u0001",
|
||
"<1,1,50>": "\n'N\u001a\u0001",
|
||
"<1,1,51>": "\n'N\u0013º\nº\n\u0013º\n \u0000G\u0001",
|
||
"<1,1,52>": "\n'N\u001a\u0001",
|
||
"<1,1,53>": "\n'N\u0014t'\u0013 IF D.FV NE '' THEN\u0017t'\u0014t'\u0019 IF RELATER( @ID:@FM:OLD.\u0013t'ˆ\u000b\u0014t'\t:@FM:NEW.\u0013t'ˆ\u000b\u0014t'\b, D.FV, \u0013t'º\n\u0014t'\u0003, '\u0013t' \u0000\u0014t'\f', IDX.FV, '\u0013t'H\r\u0014t'\u000f', 1) THEN NULL\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0004 END\u0017t'\u000b-N\r'\u0010\n3N\fBL\u0003\u0000\u0000\u0013´Ã´Ã@\u000e?>?\u000e>\u0014t'\u0003END\u0017t'\u0014t'\fRETURN TRUE$\u0017t'@\u000e?>?\u000e>\u0017t'\u0014t'\u0012*-----------------\u0017t'\u0014t'\nLOCK_ITEM:\u0017t'\u0014t'\u0010 LOCKED = FALSE$\u0017t'\u0014t'\u0015 SELF_LOCKED = FALSE$\u0017t'\u0014t'\u000f ABORT = FALSE$\u0017t'\u0014t'\f LOCKCNT = 1\u0017t'\u0014t'\u0010 LOCK_IMAGE = \"\"\u0017t'\u0014t'\u0005 LOOP\u0017t'\u0014t'\u0016 IF LOCKCNT = 200 THEN\u0017t'\u0014t'& MSG(LOCK_MSG, 'UB', LOCK_IMAGE, PARA)\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u001b LOCK LOCK_FV, LOCK_ID THEN\u0017t'\u0014t'\u000f LOCKED = TRUE$\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'\u0016 IF STATUS() EQ 1 THEN\u0017t'\u0014t'8 LOCKED = TRUE$ ;* OKAY if already locked by our station\u0017t'\u0014t'\u0014 SELF_LOCKED = TRUE$\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'7 DELAY(0.5) ;* Delay 1/2 sec to reduce network traffic \u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\r UNTIL LOCKED\u0017t'\u0014t'\u0015 BATCH.INDEXING(0,'')\u0017t'\u0014t'\r LOCKCNT += 1\u0017t'\u0014t'\u0016 IF ESC.TO.EXIT() THEN\u0017t'\u0014t'\t RESP = 1\u0017t'\u0014t'\u0019 MSG('B296','', RESP, '')\u0017t'\u0014t'\r IF RESP THEN\u0017t'\u0014t'\u000e ABORT = TRUE$\u0017t'\u0014t'( @FILE.ERROR = 421 ;* FS_SYS_USER_ABORT$\u0017t'\u0014t'\u001c STATUS() = 1 ;* FSPHYSICAL$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\f UNTIL ABORT\u0017t'\u0014t'\u0007 REPEAT\u0017t'\u0014t'\u0018 IF LEN(LOCK_IMAGE) THEN\u0017t'\u0014t'\u001b MSG('','DB',LOCK_IMAGE,'')\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0007 RETURN\u0017t'@\u000e?>?\u000e>\u0017t'\u0014t'\u0012*-----------------\u0017t'\u0014t'\u0006PATCH:\u0017t'\u0014t'\b PIX = 1\u0017t'\u0014t'\r FLAG = TRUE$\u0017t'\u0014t'\u0005 LOOP\u0017t'\u0014t'\u001a WHILE LEN(TRANS.REC<PIX>)\u0017t'\u0014t'\u0016 PREC = TRANS.REC<PIX>\u0017t'\u0014t'- CONVERT @VM:@SVM:@TM TO @FM:@VM:@SVM IN PREC\u0017t'\u0014t'\u0015 PTYPE = PREC[1, @FM]\u0017t'\u0014t'\u0015 PREC[1, COL2()] = \"\"\u0017t'\u0014t'\u0014 PKEY = PREC[1, @FM]\u0017t'\u0014t'\u0015 PREC[1, COL2()] = \"\"\u0017t'\u0014t'\u0014 IF PTYPE = \"W\" THEN\u0017t'\u0014t'. WRITE PREC TO IDX.FV, PKEY ELSE FLAG = FALSE$\u0017t'\u0014t'\t END ELSE\u0017t'\u0014t'' DELETE IDX.FV, PKEY ELSE FLAG = FALSE$\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\t PIX += 1\u0017t'\u0014t'\u000b WHILE FLAG\u0017t'\u0014t'\u0007 REPEAT\u0017t'\u0014t'\r IF FLAG THEN\u0017t'\u0014t'\" DELETE IDX.FV, \"XTRANS\" ELSE NULL\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0007 RETURN\u0017t'\u0017t'@\u000e?>?\u000e>\u0014t'\u0011*----------------\u0017t'\u0014t'\u0014OPTIMIZE_RELATIONAL:\u0017t'\u0014t'\u0013 ID.LEN = LEN(OLDX)\u0017t'\u0014t'\u000b ID.COL = 1\u0017t'\u0014t'\u0011 OLD.ID.LIST = \"\"\u0017t'\u0014t'\u001c LOOP WHILE ID.COL LE ID.LEN\u0017t'\u0014t'\u001c NEXT.ID = OLDX[ID.COL, @VM]\u0017t'\u0014t'\u0014 ID.COL = COL2() + 1\u0017t'\u0014t'2 LOCATE NEXT.ID IN NEWX USING @VM SETTING NUM ELSE\u0017t'\u0014t'\u001c OLD.ID.LIST<1,-1> = NEXT.ID\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0007 REPEAT\u0017t'\u0014t'\u0001*\u0017t'\u0014t'\u0013 ID.LEN = LEN(NEWX)\u0017t'\u0014t'\u000b ID.COL = 1\u0017t'\u0014t'\u0011 NEW.ID.LIST = \"\"\u0017t'\u0014t'\u001c LOOP WHILE ID.COL LE ID.LEN\u0017t'\u0014t'\u001c NEXT.ID = NEWX[ID.COL, @VM]\u0017t'\u0014t'\u0014 ID.COL = COL2() + 1\u0017t'\u0014t'2 LOCATE NEXT.ID IN OLDX USING @VM SETTING NUM ELSE\u0017t'\u0014t'\u001c NEW.ID.LIST<1,-1> = NEXT.ID\u0017t'\u0014t'\u0004 END\u0017t'\u0014t'\u0007 REPEAT\u0017t'\u0014t'\u0001*\u0017t'\u0014t'\u001d TRANSFER NEW.ID.LIST TO NEWX\u0017t'\u0014t'\u001d TRANSFER OLD.ID.LIST TO OLDX\u0017t'\u0014t'\u0007 RETURN\u0017t'@\u000e?>?\u000e>!¨\u000b\u0003\u0000\u0000@\u000e?>?\u000e"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} |