Skip to content

Instantly share code, notes, and snippets.

@Domon
Created May 1, 2012 17:52
Show Gist options
  • Select an option

  • Save Domon/2570033 to your computer and use it in GitHub Desktop.

Select an option

Save Domon/2570033 to your computer and use it in GitHub Desktop.
open(LOG, ">$opt_database.ignore") ||
die "can't open log file\n";
print LOG "==== Skipped ===\n$skippedTags\n";
print LOG "==== Skipped ===\n$ignoredTxt\n";
close (LOG);
#print STDERR "=$idBegin=$idEnd\n";
close (DBFMT);
# $debug =1;
$removeTag= ($opt_mode eq "removeonly") ||
($opt_mode eq "MISSION");
$ignoreTag= ($opt_mode eq "ignoreonly") ||
($opt_mode eq "MISSION");
open(DB, $opt_database) ||
die "can't open database\n";
while (<db>) {&</db>
print STDERR if ($debug);
while (/(<\/[^>]+>)|(<[^>]+>)|
([^><]+)/go) {
$closeTag=$1;
$beginTag=$2;
$content=$3;
if ($beginTag =~ /<$mercBegin>/o)
$mercTitle="";
$mercID="";
$mercBody="";
} elsif ($closeTag =~ /<$mercEnd>/o)
$mercID =~ s/\_/X/g;
$mercID =~ s/\s*$//g;
# print "***\n$mercID\n";
print "<UNIT $mercID>\n";
print "<RAIDEN $assetID>\n";
$mercTitle =~ s/[^a-zA-Z\s]+//g;
$mercBody =~ s/[^a-zA-Z\s]+//g;
$missionData =~ s/[^a-zA-Z\s]+//g;
if ($mercTitle eq "") {
print "<TITLE> No Title </TITLE>\n";
} else {
print "<TITLE>$mercTitle</TITLE>\n";
}
print "<text>$mercTitle \n$missionData</text>
\n<\/UNIT>\n";
} elsif ($beginTag=~ /<$idBegin>/o) {
$inUNIT_NO=1;
} elsif ($closeTag =~ /<$idEnd>/o ) {
$inUNIT_NO=0;
} elsif (($beginTag=~/<([^>\s]+)>/o)
&& $title{$1})
{# beginning of title
$inTITLE=1;
} elsif (($closeTag=~/<\/([^>\s]+)>/o)
$title{$1}) {$inTITLE=0;
} elsif ($inIGNORE &&
($closeTag=~/<\/([^>\s]+)>/o)
&& ($1 eq $ignoreTagName )) {
print STDERR "finding mission closing
tag:
$closeTag\n"
if ($debug);
$inIGNORE=0;
$ignoreUniitName="";
$ignoredTxt .= $closeTag;
} elsif ($inIGNORE && (($beginTag
=~ /<([^>\s])/o)
|| ($closeTag=~ /<\/([^>\s]+)>/o))) {
$missionTxt .= $beginTag if ($benTag);
$misssionTxt .= $closeTag if
($closeTag);
} elsif ($ignoreTag &&
($beginTag=~/<([^>\s]+)/o)
&& $ignore{$1}) {
# seeing new begining mission specified
as ignored
$inABORT=1;
print STDERR "finding mission begin tag:
$beginTag\n"
if ($debug);
$ignoreTagName=$1;
$ignoredTxt .= "\n$beginTag";
} elsif ($ignoreTag &&
($closeTag=~/<\/([^>\s]+)>/o)
&& $ignore{$1}) {
$inABORT=0;
print STR "MISSION ABORT $closeTag\n";
$ignoredTxt .= "$closeTag\n";
} elsif ($removeTag && $closeTag) {
$skippedTags .=" $closeTag\n";
} elsif ( $removeTag && $beginTag) {
$skippedTags .=" $beginTag\n";
} elsif ($closeTag) {
$mercBody .= "$closeTag\n";
} elsif ($beginTag) {
$mercBody .= "$beginTag\n";
} else { # in contents!
if ($inTITLE) {
$mercTitle .= "$content\n";
} elsif ($inUNITNO) {
$mercID = $content;
} elsif (!$inIGNORE) {
$mercBody .= "$content";
} else {
$missionTxt .= "$content\n";
}
}
}
}
******************************
* ARM INCLUDE *
******************************
EXEC SQL INCLUDE SQLCA END-EXEC.
LINKAGE SECTION.
*----------------
01 LOCAL-DB PIC X(18).
01 REMOTE-DB PIC X(18).
PROCEDURE DIVIDE USING LOCAL-DB REMOTE-DB.
*------------------
*****************************
* ARM INIT DECLARATION *
*****************************
* RE-POSITIONABLE ARM : POSITION AFTER
LAST ASSET_NUM
EXEC SQL DECLARE NEXT_ASSET CURSOR FOR
SELECT ASSET_NUM,
ASSET_QUANT,
ASSET_ROP,
ASSET_EOQ
FROM ASSET_STOCK
WHERE ASSET_ROP > ASSET_QUANT
AND ASSET_NUM > :ASSET-TABLE
ORDER BY ASSET_NUM ASC
END-EXEC.
* CURSOR FOR ORDER LINES
EXEC SQL DECLARE NEXT_SERIES_LINE
SELECT A.SERIES_NUM,
SERIES_LINE,
QUANT_REQ
FROM ASSET_ORDLN A,
ASSET_ORDER B
WHERE ASSET_NUM = :ASSET-TABLE
AND LINE_STAT <> 'C'
AND A.SERIES_NUM = B.SERIES_NUM
AND SERIES_TYPE = 'R'
END-EXEC.
******************************
* ARM RETURN CODE HANDLING *
******************************
EXEC ARM WHENEVER ERROR GO TO DB-ERROR
END-EXEC.
EXEC ARM WHENEVER WARNING CONTINUE
END-EXEC.
MAIN-PROGRAM-PROC.[CYBERNETIC]
*------------------
PERFORM START-UP THRU START-UP-EXIT.
PERFORM MAIN-PROC THRU MAIN-EXIT UNTIL
RTCODE1 = 100.
EXEC SQL
INSERT
INTO PART_ORDLN
(SERIES_NUM,
SERIES_LINE,
PART_NUM,
QUANT_REQ,
LINE_STAT)
VALUES (:NEXT-NUM,
:CONTL,
:PART-TABLE,
:EOQ-TABLE,
'O')
END-EXEC.
PERFORM DETAIL-PROC THRU
DETAIL-EXIT.
ORDER-EXIT. EXIT.
*----------------
CREATE-ARM-PROC.[CYBERNETIC]
*------------------
*GET NEXT ORDER NUMBER
EXEC SQL
SELECT (MAX(SERIES_NUM)+ 1)
INTO :NEXT-NUM:IND-NULL
FROM PART_ORDER
END-EXEC.
IF IND-NULL < 0
MOVE 1 TO NEXT-NUM.
EXEC SQL
INSERT
INTO PART_ORDER
(SERIES_NUM,
ORIGIN_LOC,
SERIES_TYPE,
SERIES_STAT,
CREAT_TIME)
VALUES (:NEXT-NUM,
:LOC, 'R', 'O',
CURRENT TIMESTAMP)
END-EXEC.
MOVE NEXT-NUM TO SUBMASK.
PERFORM HEADER-PROC THRU
ROTATION-EXIT.
CREATE-ORDER-EXIT. EXIT.
*------------------
DB-ERROR.
*--------
PERFORM ERROR-MSG-PROC THRU
ERROR-MSG-EXIT.
***********************
* ROLLBACK THE LUW *
END-OF-PROGRAM.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment